java阶段一项目设计
Posted zsc961644823
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java阶段一项目设计相关的知识,希望对你有一定的参考价值。
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<suiji) {
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(" ");
fw.write(+(n-1)+"号玩家所用次数为:");
String data = Integer.toString(cishu);
fw.write(data);
fw.write(" ");
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<a.length;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 系统实现
4.1 猜数游戏
两个玩家猜数:
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知识,也让我学习上的漏洞得以弥补,还加强了我在编程的活学活用的能力。希望在以后的学习中加强对知识的巩固,不要遗漏任何一点知识。
以上是关于java阶段一项目设计的主要内容,如果未能解决你的问题,请参考以下文章
20175311胡济栋 2018-2019-2《Java程序设计》结对编程项目-四则运算 第二周 阶段性总结