18111130
目 录
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 选题
|
选题一 |
算术运算测试 |
|
题目要求 |
|
|
实现10道100以内的加减法数学题,根据题目计算答案,与输入的答案对比,判断答案是否正确,最后计算分数。
|
|
|
使用Java知识 |
|
|
Random方法的应用 For循环的使用 数组的定义,赋值,排序
|
|
|
选题二 |
简易计算器模拟程序 |
|
题目要求 |
|
|
功能要求:仿照Windows计算器,编写- -具有GUI的计算器,能实现整数的加、减、乘、除四则运算。历次计算需存放在文件或数据库中,下回启动可重复使用。功能具体参考windows计算器(查看菜单选择:标准型即可)
|
|
|
使用Java知识 |
|
|
使用if-else循环语句循环嵌套语句 创建对象以及对象的引用 方法构造 方法监听 继承extends和接口实现implements
|
|
2 系统需求分析
2.1 系统可行性分析
系统具有可行性,操作性。
算术运算测试要求随机生成十道题加减数学题,然后根据输入的结果判断是否正确,并给于得分,将结果列入一个数组中保存。
简易计算器,能进行计算器的加减乘除普通运算,省时省力方便的功能。
2.2 系统需求分析
算术运算测试要求随机生成十道题加减数学题,然后根据输入的结果判断是否正确,并给于得分,将结果列入一个数组中保存。
简易计算器,仿照Windows计算器,编写- -具有GUI的计算器,能实现整数的加、减、乘、除四则运算
2.3 进度安排
阶段一进度安排如表3-1所示。
表3-1 进度安排表
|
阶段 |
持续时间 |
阶段描述 |
输出 |
|
构思阶段 |
60分钟 |
需求分析 |
需求说明,功能模块图 |
|
设计阶段 |
30分钟 |
系统设计 |
设计说明-可以画流程图;数据库设计 |
|
实现阶段 |
5小时 |
编写代码 |
项目工程源代码 |
|
1小时 |
系统测试 |
进行黑盒测试(功能测试)-测试说明 |
|
|
运行阶段 |
1小时 |
部署、运行 |
系统使用说明、运维报告、录制视频 |
3 系统设计
3.1 系统设计
一、算术运算测试
根据系统的实际功能需求分析,对系统功能部分进行了设计。
import java.util.Random;
import java.util.Scanner;
public class dome {
public static void main(String[]args) {
Scanner input = new Scanner (System.in);
Random r= new Random();
int score =0;
int arr[]= new int[10];//定义一个数组
long total=0;
int len=arr.length;
//十个计算题的循环体
for(int i=0;i<len;i++) {
int a;
int b;
a=r.nextInt(100);
b=r.nextInt(100);
System.out.println("请输入"+a+"+"+b+"的答案");
int c = input.nextInt();
int k ;
if(c==a+b) {
k=c;
System.out.println("回答正确!正确答案是:"+k);
score+=10;//成绩+10分
}
else {
k=a+b;
System.out.println("回答错误!正确答案是:"+k);
score=score;//成绩不变
}
System.out.println("你的得分:"+score);//测试得分情况
arr[i]=k;
}
//将结果列出来
System.out.println("所有习题的正确答案是:");
for(int i=0;i<len;i++) {
System.out.print(arr[i]+"、");
}
System.out.println();
//冒泡排序(升序)
for(int i=0;i<len;i++) {
for(int j=i+1;j<len;j++) {
if(arr[i]>arr[j]) {
int team=arr[j];
arr[j]=arr[i];
arr[i]=team;
}
}
}
System.out.println("----------");
for(int i=0;i<len;i++) {
System.out.print(arr[i]+"、");
}
}
}
二、简易计算器模拟程序
import javax.swing.*;
import javax.swing.JTextField;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.Color;
public class Caculator 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[12]; //用数组添加12个按钮的空间
private JButton b1,b2,b3,b4,b5,b6,b7,b8;
public Caculator() //构造方法
{
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.add(t1);
p2.setLayout(new GridLayout(4,1)); //设置四行一列的布局
for(int i=0;i<10;i++)
{
String s=""+i;
b[i]= new JButton(s); //将数组添加到按钮上
b[i].addActionListener(this); //添加监听对象
}
b[10]= new JButton("00"); 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("=");
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);
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.setLayout(new GridLayout(4,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);
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) //创建一个方法实现一个窗口
{ Caculator f = new Caculator(); }
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()==b[11])
{
if(t1.getText().trim().indexOf('.')!=-1)
{
}
else
{
if(t1.getText().trim().equals("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)
{
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 系统实现
项目一
项目二、
5 系统测试
表1、算术运算测试
|
编号 |
测试功能 |
输入描述 |
预期结果 |
运行结果 |
|
HP01 |
功能 |
1.生成计算式 2.获取测试得分 3.存入数组中 |
可以生成计算式,并且可以测试 |
正常,与预期结果一致 |
|
HP02 |
生成计算式 |
|
生成10道100以内的加减随机运算式 |
正常,与预期结果一致 |
|
HP03 |
生成分数 |
1计算的结果与输入的值比较
|
参与答题,得出总分 |
正常,与预期结果一致 |
表2、简易计算器模拟程序
|
编号 |
测试功能 |
输入描述 |
预期结果 |
运行结果 |
|
HP01 |
功能键测试 |
|
可以返回上一步; 可以清0; |
正常,与预期结果一致 |
|
HP02 |
符号键测试 |
1.加减乘除,开根号 |
能够进行正常的运算 |
正常,与预期结果一致 |
|
HP03 |
数字键输入 |
1.1,2,3,4…..0的输入 |
正常显示 |
正常,与预期结果一致 |
6 结论和心得
心得:
通过这个实验我增加了许多代码的认识,还有对Java知识的积累,原本不清晰,不牢固的知识点,能够得到巩固。
通过这个项目一的测试,做Java程序设计要有明确的思路,对代码的熟悉。就像算术运算这个程序,首先要有明确的思路,对功能的明确,然后再去设计程序;像简易计算器这个有很多代码,方法很多都是陌生的,所以进程比较慢,我会通过这个程序好好学习这些新方法,新代码,然后积累下来。
浙公网安备 33010602011771号