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 选题

选题一

算术运算测试

题目要求

实现十道 100 以内加减法数学题,能根据题目计算出答案,与输

入答案对比,判断做题是否正确,最后计算分数。

添加排行榜功能存放到文件或数据库中。

使用Java知识

if循环

封装

方法调用

Random类

AWT和Swing组件的运用

选题二

简易计算器模拟程序

题目要求

简易计算器模拟程序

功能要求:仿照 Windows 计算器,编写一具有 GUI 的计算器,能实现整数的

加、减、乘、除四则运算。历次计算需存放在文件或数据库中,下回启动可重复

使用。功能具体参考 windows 计算器(查看菜单选择:标准型即可)

加分建议-可升级至综合设计:更多功能(进制转换)、更漂亮界面、更方便

的操作、支持解析四则运算表达式、支持对大数的加减法、支持对运算结果的保

存与读取。或者做成多线程,提供网络计算服务。根据添加内容:可提升至综合

设计。

使用Java知识

继承

构造方法

方法调用

AWT和Swing组件的运用

2 系统需求分析

2.1 系统可行性分析

算术运算测试

功能要求:实现十道 100 以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。添加排行榜功能存放到文件或数据库中。

简易计算器模拟程序

功能要求:仿照 Windows 计算器,编写一具有 GUI 的计算器,能实现整数的加、减、乘、除四则运算。历次计算需存放在文件或数据库中,下回启动可重复使用。功能具体参考 windows 计算器(查看菜单选择:标准型即可),加分建议-可升级至综合设计:更多功能(进制转换)、更漂亮界面、更方便的操作、支持解析四则运算表达式、支持对大数的加减法、支持对运算结果的保存与读取。或者做成多线程,提供网络计算服务。根据添加内容:可提升至综合设计。

2.2 系统需求分析

1、随机产生一道算术题并且这道算术题是从100以内的数字产生的,需要输入结果进行判断是否正确,利用循环完成十道算术题,答对一题加十分最后统计总分。

2、在输出界面上随意进行一个加减乘除的运算。就按照平时的简易计算器进行操作即可。

2.3 进度安排

阶段一进度安排如表3-1所示。

表3-1 进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

10min

需求分析

需求说明,功能模块图

设计阶段

30min

系统设计

设计说明-可以画流程图;数据库设计

实现阶段

3h

编写代码

项目工程源代码

1h

系统测试

进行黑盒测试(功能测试)-测试说明

运行阶段

30min

部署、运行

系统使用说明、运维报告、录制视频

3 系统设计

3.1 系统设计

根据系统的实际功能需求分析,对系统功能部分进行了设计。

算术运算测试:

分析:利用JFrame(窗口)、JPanel(容器)函数进行主界面的输出,分别对窗口大小,窗口内的标题框,答案框,还有期中的输出,都进行了大小的设置,导入了Java中有用的包,判断窗口。

总结:

优点:系统完成了实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比判断答案是否正确,最后计算分数功能。

缺点:系统界面还是比较单调,需要进一步美化,提高用户的兴趣。点击下一题时上次输入的答案还在新题的答案框里。

收获:刚开始的时候觉得自己学的不好,这要写那么多怎么办呀,可是慢慢的还是自己边翻笔记边写虽然这个过程是有点艰难但是最后还是做出来了,感觉自己收获了很多,以前不清晰的知识点也变得清晰了很多。通过个人阶段的训练我相信后面的总和实训自己会做的更好。

运行结果:

  1 import java.awt.event.ActionEvent;
  2 import java.awt.event.ActionListener;
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.sql.Statement;
  8 import java.util.Random;
  9 
 10 import javax.swing.JButton;
 11 import javax.swing.JFrame;
 12 import javax.swing.JLabel;
 13 import javax.swing.JOptionPane;
 14 import javax.swing.JPanel;
 15 import javax.swing.JTextField;
 16 import javax.swing.WindowConstants;
 17 
 18 public class Random_problem {      
 19     
 20     // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
 21     static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
 22     static final String DB_URL = "jdbc:mysql://localhost:3306/person1";
 23     // 数据库的用户名与密码,需要根据自己的设置
 24     static final String USER = "result";
 25     static final String PASS = "lw280615";
 26     
 27     JFrame jf=new JFrame();
 28     JPanel jp=new JPanel();
 29     JLabel jl=new JLabel();    //显示题目
 30     JLabel jl2=new JLabel();   //显示结果正确与否
 31     JButton jb=new JButton("提交");
 32     JButton jb2=new JButton("next");
 33     
 34     JTextField jtf=new JTextField();    //输入答案
 35     public int num1,num2,sum,s,temp,count=0,score,s1;
 36     public Random_problem() 
 37     { 
 38         //定义界面的大小
 39         jf.setSize(300,300);
 40         jf.add(jp);
 41         jp.setLayout(null);
 42         jp.add(jl);
 43         jl.setBounds(18,18,100,10);
 44         jp.add(jtf);
 45         jtf.setBounds(120,10,40,20);
 46         jp.add(jb);
 47         jb.setBounds(10,50,60,40);
 48         jp.add(jb2);
 49         jb2.setBounds(80,50,60,40);
 50         jp.add(jl2);
 51         jl2.setBounds(60,100,200,50);
 52         jf.setVisible(true);
 53         jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
 54     }
 55     public void produce()
 56     {
 57         //创建Random类
 58         Random rand=new Random();
 59         //产生随机数
 60         num1=(int)(Math.random()*100);
 61         num2=(int)(Math.random()*100);
 62         sum=0;
 63         //根据temp产生的随机数对2取余的值来判断是加法还是减法
 64         
 65         temp=(int)(Math.random()*100)%2;
 66         if(temp==0)
 67         {
 68             jl.setText("第"+(count)+"题:"+num1+"+"+num2+"=");
 69             count++;
 70             sum=num1+num2;
 71         }
 72         else if(num1>num2){
 73             count++;
 74             jl.setText("第"+(count)+"题:"+num1+"-"+num2+"=");
 75             sum=num1-num2;
 76         }
 77         else {
 78             count++;
 79             jl.setText("第"+(count)+"题:"+num2+"-"+num1+"=");
 80             sum=num2-num1;
 81         }
 82         jb.addActionListener(new ActionListener()
 83         {
 84             public void actionPerformed(ActionEvent e) {
 85                 int s=Integer.parseInt(jtf.getText());
 86                 if(sum==s) {
 87                     jl2.setText("恭喜,回答正确");
 88                     score+=10;
 89                 }
 90                 else {
 91                     jl2.setText("抱歉,回答错误。"+"正确答案:"+sum);
 92                 }
 93             }
 94         }
 95         );
 96         
 97         Connection conn = null;
 98         Statement stmt = null;
 99         try{
100             // 注册 JDBC 驱动
101             Class.forName(JDBC_DRIVER);
102         
103             // 打开链接
104             System.out.println("连接数据库...");
105             conn = DriverManager.getConnection(DB_URL,USER,PASS);
106         
107             // 执行查询
108             System.out.println(" 实例化Statement对象...");
109             stmt = conn.createStatement();
110             String sql;
111             sql = "insert into result value('"+count+"','"+s+"','"+sum+"','"+score+"');";
112             ResultSet rs = stmt.executeQuery(sql);
113         
114             // 完成后关闭
115             rs.close();
116             stmt.close();
117             conn.close();
118         }catch(SQLException se){
119             // 处理 JDBC 错误
120             se.printStackTrace();
121         }catch(Exception e){
122             // 处理 Class.forName 错误
123             e.printStackTrace();
124         }finally{
125             // 关闭资源
126             try{
127                 if(stmt!=null) stmt.close();
128             }catch(SQLException se2){
129             }// 什么都不做
130             try{
131                 if(conn!=null) conn.close();
132             }catch(SQLException se){
133                 se.printStackTrace();
134             }
135         }
136     
137         
138         jb2.addActionListener(new ActionListener() {
139             public void actionPerformed(ActionEvent e)
140             {
141                 if(count==10) {
142                     JOptionPane j=new JOptionPane();
143                     j.showMessageDialog(jf,"您的分数是:"+score);
144                     jf.setVisible(false);
145                 }
146                 Random rand =new Random();
147                 num1=(int)(Math.random()*100);
148                 num2=(int)(Math.random()*100);
149                 sum=0;
150                 temp=(int)(Math.random()*10)%2;
151                 if(temp==0) {
152                     count++;
153                     jl.setText("第"+(count)+"题:"+num1+"+"+num2+"=");
154                     sum=num1+num2;
155                 }
156                 else if(num1>num2){
157                     count++;
158                     jl.setText("第"+(count)+"题:"+num1+"-"+num2+"=");
159                     sum=num1-num2;
160                 }
161                 else {
162                     count++;
163                     jl.setText("第"+(count)+"题:"+num2+"-"+num1+"=");
164                     sum=num2-num1;
165                 }
166             }
167         }
168         );
169         
170         }
171          
172         
173     
174     
175     
176     public static void main(String[] args)
177     {
178         Random_problem a=new Random_problem();
179         a.produce();
180         
181         
182     }
183 }

简易计算器:

流程图:

 

总结:

1、在实验过程中出现了各类问题,通过发现问题并改正,提高了自身的编程能力。

2、熟练掌握了Swing组件和AWT组件的应用以及之前的一些知识点的应用。

运行结果

  1 import java.awt.*;     //导入包
  2 import java.awt.event.*;
  3 
  4 import javax.swing.*;
  5 
  6 class Jisuan extends JFrame {    //计算器
  7     JPanel p1 = new JPanel();
  8     JButton numberbutton[] = new JButton[10];
  9     String numbuttonName[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};//为了后面对数字按钮的构造
 10 
 11     JButton plusbutton = new JButton("+");
 12     JButton minusbutton = new JButton("-");
 13     JButton multipybutton = new JButton("X");
 14     JButton dicisionbutton = new JButton("/");
 15     JButton calbutton = new JButton("=");
 16     JButton pointbutton = new JButton(".");
 17 
 18     JLabel label = new JLabel("计算:");
 19 
 20     String add1 = ""; //标签上运算符之前的内容
 21     String add2 = "";
 22     String output = "";
 23     boolean plusClicked = false;
 24     boolean minuClicked = false;
 25     boolean multClicked = false;
 26     boolean diciClicked = false;
 27     Double result = 0.0;  //输出结果初始化
 28 
 29     Jisuan() {   //构造方法
 30         setTitle("简易计算器");
 31         getContentPane().setLayout(null);
 32         p1.setBounds(100, 30, 400, 450);
 33         p1.setLayout(new GridLayout(4, 4));
 34         for (int i = 0; i < 10; i++) {
 35             numberbutton[i] = new JButton(numbuttonName[i]); //对数字按钮的构造
 36             numberbutton[i].setFont(new Font("楷体", Font.BOLD, 20));
 37             numberbutton[i].addActionListener(new ActionListener() {  //为了简洁下面都会使用这种格式的监听接口实现
 38                 public void actionPerformed(ActionEvent e) {
 39                     if (!(plusClicked || minuClicked || multClicked || diciClicked)) {
 40                         add1 = add1 + e.getActionCommand();
 41                         output = "计算:" + add1;
 42                         label.setText(output);
 43                     } else {
 44                         add2 = add2 + e.getActionCommand();
 45                         output = output + e.getActionCommand();
 46                         label.setText(output);
 47                     }
 48                 }
 49             });
 50             p1.add(numberbutton[i]);
 51         } // 数字按钮的添加
 52 
 53         plusbutton.addActionListener(new ActionListener() {  //加号监听事件
 54             public void actionPerformed(ActionEvent e) {
 55                 plusClicked = true;
 56                 output += "+";
 57                 label.setText(output);
 58             }
 59         });
 60         plusbutton.setFont(new Font("楷体", Font.BOLD, 20));
 61         p1.add(plusbutton);   //将加号加到面板上
 62 
 63         minusbutton.addActionListener(new ActionListener() {
 64             public void actionPerformed(ActionEvent e) {
 65                 minuClicked = true;
 66                 output += "-";
 67                 label.setText(output);
 68             }
 69         });
 70         minusbutton.setFont(new Font("楷体", Font.BOLD, 20));   //为了美观特意把按钮字体调大
 71         p1.add(minusbutton);  //将减号加到面板上
 72 
 73         multipybutton.addActionListener(new ActionListener() {
 74             public void actionPerformed(ActionEvent e) {
 75                 multClicked = true;
 76                 output += "*";
 77                 label.setText(output);
 78             }
 79         });
 80         multipybutton.setFont(new Font("楷体", Font.BOLD, 20));
 81         p1.add(multipybutton); //将乘号加到面板上
 82 
 83         dicisionbutton.addActionListener(new ActionListener() {
 84             public void actionPerformed(ActionEvent e) {
 85                 diciClicked = true;
 86                 output += "/";
 87                 label.setText(output);
 88             }
 89         });
 90         dicisionbutton.setFont(new Font("楷体", Font.BOLD, 20));
 91         p1.add(dicisionbutton); //将除号加到面板上
 92 
 93         pointbutton.addActionListener(new ActionListener() {//小数点监听事件
 94             public void actionPerformed(ActionEvent e) {
 95                 if (!(plusClicked || minuClicked || multClicked || diciClicked)) {
 96                     add1 += ".";
 97                     output += ".";
 98                 } else {
 99                     add2 += ".";
100                     output += ".";
101                 }
102 
103                 label.setText(output);
104             }
105         });
106         p1.add(pointbutton);
107         pointbutton.setFont(new Font("楷体", Font.BOLD, 20));  //将小数点加到面板上
108 
109         calbutton.addActionListener(new ActionListener() {
110             public void actionPerformed(ActionEvent e) {
111                 if (plusClicked) {
112                     result = Double.valueOf(add1) + Double.valueOf(add2);
113                     plusClicked = false;
114                     add1 = "";
115                     add2 = "";
116                 }
117                 if (minuClicked) {
118                     result = Double.valueOf(add1) - Double.valueOf(add2);
119                     minuClicked = false;
120                     add1 = "";
121                     add2 = "";
122                 }
123                 if (multClicked) {
124                     result = Double.valueOf(add1) * Double.valueOf(add2);
125                     multClicked = false;
126                     add1 = "";
127                     add2 = "";
128                 }
129                 if (diciClicked) {
130                     result = Double.valueOf(add1) / Double.valueOf(add2);
131                     diciClicked = false;
132                     add1 = "";
133                     add2 = "";
134 
135                 }
136                 output += "=" + Double.toString(result);
137                 label.setText(output);
138                 output = "";
139             }
140         });
141         calbutton.setFont(new Font("楷体", Font.BOLD, 20));
142         p1.add(calbutton);  //将等号加到面板上
143 
144         getContentPane().add(p1);  //把面板放到JFrame上
145         label.setBounds(20, 380, 200, 300);
146         label.setFont(new Font("黑体", Font.BOLD, 20));
147         getContentPane().add(label); //把标签放到窗口上
148         setSize(600, 680);
149         setVisible(true);
150         setDefaultCloseOperation(EXIT_ON_CLOSE);
151     }//构造方法的末尾
152 }
153 
154 
155 public class Calculator {
156     public static void main(String[] args) {
157 
158         Jisuan js = new Jisuan();
159     }
160 }

  

与老师讨论:

猜你喜欢

转载自www.cnblogs.com/qkmm/p/13200704.html
今日推荐