JAVA课程设计

一、团队介绍

团队成员任务分配团队成员课程设计博客链接组长
张弛创建学生信息、创建登陆界面、撰写博客https://www.cnblogs.com/zc-565095526/p/10284188.html
吴越设计主菜单GUI图形界面以及查询、增、删、改等功能的实现

二、项目git地址

张弛 https://gitee.com/zc565095526/javakeshe/tree/master
吴越 https://gitee.com/ShangDaXueJiuBuLiaoZhongGuoRen/2019java_course_designwu_yue

三、项目git提交记录截图

张弛:
1120968-20190117223059160-215728874.png

吴越:
1120968-20190117210300227-47242604.png

四、项目功能架构图与主要功能流程图

1120968-20190117201037531-1675764998.png

五、项目运行截图或屏幕录制

1.登陆系统

1120968-20190117201416258-17568942.png

1120968-20190117201425913-2003129172.png

2.增加学生信息

1120968-20190117202148057-889920575.png

1120968-20190117202153101-883989902.png

删除之后
1120968-20190117204556345-1093942937.png

1120968-20190117204603287-478146016.png

3.查看学生信息

输入学号

1120968-20190117204752009-1271273787.png

点击查看,显示该学生信息

1120968-20190117204756533-2118660531.png

换一个未添加学号,显示学号不存在

1120968-20190117205015744-1322374741.png

4.修改学生信息

将宿舍号从503改为502

1120968-20190117205354603-819150587.png

修改完后

1120968-20190117205410640-1395288202.png

5.清空功能

要重新输入信息时,要一行行删除 太过麻烦。因此我们重新设计了一个“清空”按钮。以此来实现一键清空的功能

清空前

1120968-20190117205655076-1474387869.png

清空后

1120968-20190117205706023-19500602.png

##6.显示所有学生信息

点击显示按钮,则会显示所有学生的信息。以“结束”作为标识符结束

1120968-20190117210413305-1414054748.png

六、项目关键代码

1.增加学生信息部分代码

    //
        button1.addActionListener(new ActionListener() { // 监听增加, 使用内部类
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() == button1) {           //点击增加数据按钮
                    button3.setEnabled(false);            //使button3这个按钮变灰不可点击了
                    String number1 = number.getText();    //从文本框获取用户键盘输入的字符串
                    if (number1.length() == 12) {         //学号要是12位的字符
                        try {
                            ObjectInputStream input = new ObjectInputStream(new FileInputStream(file)); //读回对象
                            hash = (Hashtable) input.readObject();      //放到hash中去                                             
                            input.close();
                        } catch (Exception e1) {
                        }
                    } 
                    else {
                        JOptionPane.showMessageDialog(null, "请输入学生的学号");                 //输入为空,就会提示此信息
                    }
                    if (number1.length() == 12) {
                    if (hash.containsKey(number1)) {                        
                        JOptionPane.showMessageDialog(null, "该生信息已存在,请到修改页面修改!");//该学生已经存在,提示此信息
                    } else {
                        
                        String name1 = name.getText();
                        String dor1 = dor.getText();
                        String address1 = address.getText();
                        String sex1 = sex.getText();
                        String date1 = date.getText();
                        String pol1 = pol.getText();
                        String phone1 = phonenum.getText();
                        
                        Student per = null;
                        per = new Student(number1, name1, dor1, address1, sex1, date1, pol1, phone1);
                        hash.put(number1, per);                                                   // 使用学号和学生来键值相对,添加
                        
                        try {
                            ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(file));//写出对象到对应文件中
                            output.writeObject(hash);
                            output.close();
                       JOptionPane.showMessageDialog(null, "添加成功!");
                        } catch (Exception e1) {}
                    }
                    }
                }
            }
        });

2.删除学生信息

button2.addActionListener(new ActionListener() { // 监听删除按钮
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() == button2) {
                    button3.setEnabled(false);          
                    String number1 = number.getText();
                    if (number1.length() == 12) {
                        try {
                            ObjectInputStream input = new ObjectInputStream(new FileInputStream(file)); //每次都要读回对象
                            hash = (Hashtable) input.readObject();
                            input.close();
                        } catch (Exception e1) {
                        }
                    } 
                    else {
                        JOptionPane.showMessageDialog(null, "请输入学生的学号");//提示信息
                    }
                    if (hash.containsKey(number1)) {
                        hash.remove(number1);                                  //删除操作
                        ObjectOutputStream output = null;                         //初始输出置空
                        JOptionPane.showMessageDialog(null, "删除成功");
                        
                        try {
                            output = new ObjectOutputStream(new FileOutputStream(file));   //写出对象到对应文件中
                            output.writeObject(hash);                                      //将hash中的数据写出
                            output.close();
                        } catch (IOException ex) {
                            Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } 
                    else {
                        JOptionPane.showMessageDialog(null, "学号不存在");
                    }
                }
            }
        });

3.修改学生信息

button3.addActionListener(new ActionListener() {             // 监听修改按钮
            public void actionPerformed(ActionEvent e) {

                if (e.getSource() == button3) {
                    button3.setEnabled(false);                  
                    
                    String number1 = number.getText();
                    String name1 = name.getText();
                    String dor1 = dor.getText();
                    String address1 = address.getText();
                    String sex1 = sex.getText();
                    String date1 = date.getText();
                    String pol1 = pol.getText();
                    String phone1 = phonenum.getText();
                    
                    Student per = new Student(number1, name1, dor1, address1, sex1, date1, pol1, phone1);
                    hash.put(number1, per);
                    JOptionPane.showMessageDialog(null, "修改成功");
                    
                    try {
                        ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(file));//写出对象到对应文件中
                        output.writeObject(hash);
                        output.close();
                    } catch (Exception e1) {
                    }
                }
            }
        });

七、项目代码扫描结果及改正

八、尚待改进

1.登陆界面在输完密码之后无法直接用回车进入系统,上网查资料无果,只能单击“登录”按钮才能进入系统。

2.图形界面的背景图部分,想要给其加自定义背景图片,但是由于时间比较赶(有去尝试过),也未能完成改进。

3.想通过其他信息部分进行索引,查到该学生的具体资料,但由于时间不够,就只做了以学号为索引的方式

4.学号的排序方式有问题,变成了从大到小进行排序,因为使用的是Enumeration遍历方法

转载于:https://www.cnblogs.com/zc-565095526/p/10284188.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、课程设计目的:1. 学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。2. 进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。3. 通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。二、 课程设计总体要求:1. 问题的描述与程序将要实现的具体功能。2. 程序功能实现的具体设计思路或框架,并检查流程设计。3. 代码实现。4. 程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。5. 设计小结(包括)三、 课程设计题目:1. 选做部分1) 利用Socket编程制作一个简单的C/S应用。其中,Client端为GUI程序,用于提供界面输入两个数,并有1个“发送”按钮,另外还有一个 TextField用于显示传来的计算结果;Server端用于监听连接请求、计算发送过来的两数的和、送回数据结果。2) 编一个多线程Applet,实现简单的动画。具体要求:自动出现由小到大变换的圆,位置与颜色随机,变到150直径时擦除,重新再出现圆;变换速度有HTML文件传入的参数控制(控制sleep时间)。3) 编写Applet,包含两个按钮,一个按钮用于放大Applet上的一串字符串,一个按钮用于缩小;连续点击可不断放大或缩小。4) 设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除混合运算。5) 编写生产者/消费者问题的应用程序。生产者以0~200ms的速度随机产生30个小写字母,消费者以0~2s的速度取出字母,并显示在屏幕上。2. 必做部分 根据自己的兴趣,结合实际情况,选取合适题目,利用所学JAVA知识开发一个小型的应用软件。要求:1) 阐述清楚应用程序实现的具体功能和设计思路。2) 所选课题难度不应太简单。3) 所有人的题目及设计不得类同。四、 课程设计报告内容:1) 目录2) 设计题目及具体要求 3) 总体设计思路(简要说明系统包含的java源程序及其功能,描述类之间的主要关系)4) 具体设计(以表格形式描述各个类含有的成员变量和方法,并对关键代码加以说明,显示程序运行界面)5) 总结(包括对本课程的建议)6) 参考资料。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值