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提交记录截图

张弛:

吴越:

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

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

1.登陆系统

2.增加学生信息

删除之后

3.查看学生信息

输入学号

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

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

4.修改学生信息

将宿舍号从503改为502

修改完后

5.清空功能

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

清空前

清空后

6.显示所有学生信息

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

六、项目关键代码

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.学号的排序方式有问题,因为使用的哈希表,所以无法进行排序

posted @ 2019-01-17 22:29  网络1611张弛  阅读(217)  评论(0编辑  收藏  举报