Java课程设计
(阶段一文档)
目 录
1 选题................................................................................................. 1
3 系统需求分析................................................................................. 2
3.1 系统可行性分析.................................................................. 2
3.2 系统需求分析...................................................................... 2
3.3 项目进度安排...................................................................... 2
4 系统设计......................................................................................... 4
4.1 系统设计.............................................................................. 4
4.2 数据库设计(有则写-无则删除,如果是文件直接写文件).............................................................................................. 4
5 系统实现......................................................................................... 6
5.1 管理员登录界面实现.......................................................... 6
5.2 管理用户信息界面实现...................................................... 6
6 系统测试......................................................................................... 8
7 结论和心得..................................................................................... 9
1 选题
选题一 |
猜数游戏 |
题目要求 |
|
计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了, 继续猜,直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。 排行榜存放到文件或数据库中。 |
|
使用Java知识 |
|
数组,Random random = new Random();定义一个随机数,for循环,while循环 if循环,多重if 选择结构,Scanner input= new Scanner() ;声明一个Scanner类的对象,并实例化, 计算时间方法,文件的读写,Arrays类:对数组元素的排序 |
|
选题二 |
简易计算器模拟程序 |
题目要求 |
|
仿照 Windows 计算器,编写一具有 GUI 的计算器,能实现整数的 加、减、乘、除四则运算。历次计算需存放在文件或数据库中,下回启动可重复 使用。功能具体参考 windows 计算器(查看菜单选择:标准型即可) |
|
使用Java知识 |
|
private JPanel p1 = new JPanel(); 声明面板p1 private JTextField声明文本框 private JLabel label声明标签 super()调用父类的构造方法 Container c = getContentPane(); 初始化一个容器 label.setForeground(Color.blue); 将前景设为蓝色 p2.add(label); 在p2面板上添加标签 addActionListener 添加监听对象 p1.setLayout(new GridLayout()); 给按钮面板设置网格布局 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 设置按X时退出程序 setVisible(true); 将窗口隐藏 setResizable(false); 生成窗口的大小是固定的 setHorizontalAlignment设置水平对齐 getText().trim():在获得得的文本中去除空格 Double.parseDouble:把其他数据转化为double类型
|
2 系统需求分析
2.1 系统可行性分析
猜数游戏:随机生成1到100的随机数,让几位玩家猜数,直到每个人猜对为止,根据每位玩家的次数和时间进行排血,然后将成绩存储到文件中。
简易计算器:设计一个简易计算器实现加减乘除等四则运算。历次计算器存放在文件中。
2.2 系统需求分析


2.3 进度安排
阶段一进度安排如表3-1所示。
表3-1 进度安排表
阶段 |
持续时间 |
阶段描述 |
输出 |
构思阶段 |
30min |
需求分析 |
需求说明,功能模块图 |
设计阶段 |
30min |
系统设计 |
设计说明-可以画流程图;数据库设计 |
实现阶段 |
3h |
编写代码 |
项目工程源代码 |
5h |
系统测试 |
进行黑盒测试(功能测试)-测试说明 |
|
运行阶段 |
1h |
部署、运行 |
系统使用说明、运维报告、录制视频 |
3 系统设计
3.1 系统设计
项目二:猜数游戏
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;
public class Guess{
public static void main(String[] args){
int n=1;
int []a=new int[2];
while(n<=2) {
int cishu=0;
for(int i=0;i<2;i++) {
System.out.println("请输入"+n+"号玩家猜的数字:");
Random random = new Random(); //生成一个随机数
int suiji = random.nextInt(100);
Scanner input = new Scanner(System.in);
long startTime = System.currentTimeMillis();
while(true) {
int num =input.nextInt();
if(num>100||num<0) {
System.out.println("游戏结束");
break;
}
else if(num System.out.println("您猜的数偏小了");cishu++; } else if(num>suiji) { System.out.println("您猜的数偏大了");cishu++; } else { System.out.println("恭喜您猜对了");cishu++; break; } }n++; long endTime = System.currentTimeMillis(); long Time = endTime-startTime; System.out.println("共用"+cishu+"次猜对"); System.out.println("用时"+Time+"毫秒猜对"); a[i]=cishu; startTime=0;endTime=0; FileWriter fw = null; try { fw = new FileWriter("d:\\程序测试\\测试.txt", true); fw.write("\n"); fw.write(+(n-1)+"号玩家所用次数为:"); String data = Integer.toString(cishu); fw.write(data); fw.write("\n"); fw.write(+(n-1)+"号玩家所用时间为:"); String counts = Integer.toString((int) Time); String info = counts; fw.write(info); fw.flush(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("根据次数排行榜为:"); Arrays.sort(a); for(int m=0;m System.out.println(+a[m]);} System.out.println("保存成功"); } } 项目三:简易计算器 package com.gui.test; import javax.swing.*; import javax.swing.JTextField; import java.awt.*; import java.awt.event.*; import java.lang.*; import java.awt.Color; public class CalculateTest extends JFrame implements ActionListener { private JPanel p1 = new JPanel(); //建立面板p1 private JPanel p2 = new JPanel(); //建立面板p2 private JTextField t1; //建立文本框t1 private JTextField t2; //建立文本框t2 private JLabel label; //声明标签 StringBuffer str; //设置显示屏为字符串形式 double x,y; int z; private JButton b[] = new JButton[13]; //用数组创建13个按钮的空间 private JButton b1,b2,b3,b4,b5,b6,b7,b8,b9; public CalculateTest() //构造方法 { super("简易计算器"); //设置窗口的名称 Container c = getContentPane(); //创建面板对象 t1 = new JTextField(30); //给文本框t1分配空间 t1.setEditable(false); //使t1编辑框不能编辑 t2 = new JTextField(30); //给文本框t2分配空间 t2.setEditable(false); //使t2编辑框不能编辑 label = new JLabel("郑思聪设计的计算器"); //设置标签的名字 label.setForeground(Color.blue); //将前景设为蓝色 str=new StringBuffer(); p2.add(label); //在p2面板上添加标签 p2.add(t2); //在p2面板上添加文本框 p2.add(t1); p2.setLayout(new GridLayout(5,1)); //设置四行一列的布局 for(int i=0;i<10;i++) //将数组中0到9设置为标签 { String s=""+i; b[i]= new JButton(s); b[i].addActionListener(this); //添加监听对象 } b[10]= new JButton("-/+"); b[11]= new JButton("."); b1= new JButton("/"); b2= new JButton("Back"); b3= new JButton("*"); b4= new JButton("C"); b5= new JButton("+"); b6= new JButton("Sqrt"); b7= new JButton("-"); b8= new JButton("="); b9= new JButton("^2"); for(int i=0;i<12;i++) { b[i].setForeground(Color.blue); //设置前景颜色 } b1.setForeground(Color.red); b3.setForeground(Color.red); b5.setForeground(Color.red); b7.setForeground(Color.red); b2.setForeground(Color.blue); b4.setForeground(Color.blue); b6.setForeground(Color.red); b8.setForeground(Color.blue); b9.setForeground(Color.red); p1.add(b[7]); p1.add(b[8]); p1.add(b[9]); p1.add(b1); p1.add(b2); p1.add(b[4]); p1.add(b[5]); p1.add(b[6]); p1.add(b3); p1.add(b4); p1.add(b[1]); p1.add(b[2]); p1.add(b[3]); p1.add(b5); p1.add(b6); p1.add(b[0]); p1.add(b[10]); p1.add(b[11]);p1.add(b7);p1.add(b8); p1.add(b9); //添加面板 p1.setLayout(new GridLayout(5,5,5,5)); //给按钮面板设置网格布局 b[10].addActionListener(this); b[11].addActionListener(this); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this); b7.addActionListener(this); b8.addActionListener(this); b9.addActionListener(this); //添加监听对象 c.add(p2); c.add(p1); c.setLayout(new FlowLayout()); //设置为顺序布局 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置按X时退出程序 setVisible(true); //将窗口隐藏 setResizable(false); //生成窗口的大小是固定的 setSize(400,400); //设定窗口的尺寸 } public static void main(String[] args) //创建一个方法实现一个窗口 { CalculateTest f = new CalculateTest(); } public void actionPerformed(ActionEvent e) //实现按钮的事件处理 { try { if(e.getSource()==b4) //调用e.getSource()如果得到Jbutton点击的是b4 { t1.setText("0"); //清零 t1.setHorizontalAlignment(JTextField.RIGHT); //设置水平对齐 str.setLength(0); //清空字符串缓冲区 } else if(e.getSource()==b[10]) { x=Double.parseDouble(t1.getText().trim()); //getText().trim():在获得得的文本中去除空格 t1.setText(""+(-x)); t1.setHorizontalAlignment(JTextField.RIGHT); //设置水平对齐 } else if (e.getSource()==b5) { x=Double.parseDouble(t1.getText().trim()); //Double.parseDouble:把其他数据转化为double类型 str.setLength(0); y=0d; //给y赋初始值0且这个数字类型为double z=0; } else if(e.getSource()==b7) { x=Double.parseDouble(t1.getText().trim()); str.setLength(0); //setLength:设置动态数组长度 y=0d; z=1; } else if(e.getSource()==b3) { x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=2; } else if(e.getSource()==b1) { x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=3; } else if(e.getSource()==b8) { str.setLength(0); switch(z) { case 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; case 1: t1.setText(""+(x-y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; case 2: t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; case 3: t1.setText(""+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; } } else if(e.getSource()==b9) { x=Double.parseDouble(t1.getText().trim()); if(x<0) { t1.setText("数字格式异常"); t1.setHorizontalAlignment(JTextField.RIGHT); //设置水平对齐 } else { t1.setText(""+Math.pow(x,2)); //添加平方 t1.setHorizontalAlignment(JTextField.RIGHT); } str.setLength(0); y=0d; } else if(e.getSource()==b[11]) { if(t1.getText().trim().indexOf('.')!=-1) //判断字符串中是否包含小数 { } else { if(t1.getText().trim().equals("0")) //初始值显示为0 { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); } else if(t1.getText().trim().equals("")) //初始值显示为空不做任何操作 {} else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); } } y=0d; } else if(e.getSource()==b6) { x=Double.parseDouble(t1.getText().trim()); if(x<0) { t1.setText("数字格式异常"); t1.setHorizontalAlignment(JTextField.RIGHT); //设置水平对齐 } else { t1.setText(""+Math.sqrt(x)); //添加平方根 t1.setHorizontalAlignment(JTextField.RIGHT); } str.setLength(0); y=0d; } else { if(e.getSource()==b[0]) //零的数字键 { if(t1.getText().trim().equals("0"))//如果显示为零不做任何操作 {} else t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); y=Double.parseDouble(t1.getText().trim()); } else if (e.getSource()==b2) //back按键 { if(!t1.getText().trim().equals("0")) //如果显示不为零 { if(str.length()!=1) { t1.setText(str.delete(str.length()-1,str.length()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); } else { t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT); str.setLength(0); } } y=Double.parseDouble(t1.getText().trim()); } else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); y=Double.parseDouble(t1.getText().trim()); //把其他数据转化为double类型 } } } catch(NumberFormatException e1){ t1.setText("数字格式异常"); t1.setHorizontalAlignment(JTextField.RIGHT); } catch(StringIndexOutOfBoundsException e1){t1.setText("字符串索引越界"); //Java API指出StringIndexOutOfBoundsException异常 t1.setHorizontalAlignment(JTextField.RIGHT);} //设置水平对齐 } }
4.2简易计算器
33的平方:
5 系统测试
表6-1 猜数游戏测试表
编号 |
测试功能 |
输入描述 |
预期结果 |
运行结果 |
HP01 |
猜数超出界限 |
1.输入一个小于0或大于100的数 |
显示游戏结束并退出循环 |
正常,与预期结果一致 |
HP02 |
猜数功能 |
1.任意输入1到100之间的整数 2.根据系统提示猜大或猜小继续输入,,知道猜对为止
|
根据玩家每次输入的数,系统将会显示猜大,猜小或者猜对了 |
正常,与预期结果一致 |
HP03 |
排序功能 |
1.输入不同玩家所猜测的数字直到猜对为止 |
根据不同玩家猜对的次数进行排序 |
正常,与预期结果一致 |
表6-1 计算器测试表
编号 |
测试功能 |
输入描述 |
预期结果 |
运行结果 |
HP01 |
加减乘除四则运算 |
1.输入数字按运算符号得出结果 |
显示出正确运算结果 |
正常,与预期结果一致 |
HP02 |
平方及平方根运算 |
1.输入数字求出那个数的平方及平方根 |
显示出正确运算结果 |
正常,与预期结果一致 |
HP03 |
归零功能 |
1.输入数字按C归零 |
将输入的数字归零 |
正常,与预期结果一致 |
6 结论和心得
心得:通过本次实验,加深了我对GUI的了解,也让我在之前的java 学习中找到了不足,以及遗忘的知识漏洞。这次实验让我巩固了曾经学习的java知识,也让我学习上的漏洞得以弥补,还加强了我在编程的活学活用的能力。希望在以后的学习中加强对知识的巩固,不要遗漏任何一点知识。