首页 > 其他分享 >学生信息管理系统博客

学生信息管理系统博客

时间:2023-01-12 09:23:34浏览次数:29  
标签:return String number 博客 学生 stu equals 信息管理系统 public

程序的整体结构如下:

 

 

组长负责 Dao数据层,File文件层的操作实施。

因为Dao数据层依赖于File文件层,所以这里我们先讲File层。

File层总共分为读文件和写文件。

读文件:我们通过流式读取文件的内容,减小了程序的负载,一行一行读取文件信息。

 1      public CsvReader(String filename) {
 2         try {
 3             reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
 4         } catch (FileNotFoundException e) {
 5             e.printStackTrace();
 6         }
 7     }
 8     
 9     public String readRecord() {
10         String line = null;
11         try {
12             line = reader.readLine();
13         } catch (IOException e) {
14             e.printStackTrace();
15         }
16         return line;
17     }

写文件:写文件也是采用了流式写入,对信息进行一行一行写入。

 1     public CsvWriter(String filename, boolean append) {
 2         try {
 3             writer = new BufferedWriter(new 
 4      OutputStreamWriter(new FileOutputStream(filename, append)));
 5         } catch (FileNotFoundException e) {
 6             e.printStackTrace();
 7         }
 8     }
 9     
10     public void writeRecord(String record) {
11         try {
12             writer.write(record);
13         } catch (IOException e) {
14             e.printStackTrace();
15         }
16     }

最后,我们在声明一个流的同时,也需要关闭一个流。

Dao层主要是对文件信息的查询,增加,删除,修改。

查询分为查询全部学生,查询单个学生。

查询单个学生:

 1     @Override
 2     public Student getStuByNumber(String number) {
 3         Student stu = null;
 4         CsvReader reader = new CsvReader(filename);
 5         String lineString = null;
 6         while((lineString = reader.readRecord()) != null) {
 7             String[] items = lineString.split(delimiter);
 8             if(items[0].equals(number))
 9                 stu = new Student(items[0], items[1], items[2], items[3], items[4], items[5], items[6], items[7]);
10         }
11         reader.close();
12         return stu;
13     }
14     

查询全部学生:

 1     @Override
 2     public List<Student> getStusByCond(String cond) {
 3         List<Student> students = getAllStudent();
 4         List<Student> res = new ArrayList<>();
 5         for(Student stu : students) {
 6             if(stu.getNumber().equals(cond) || stu.getName().equals(cond) || 
 7                     stu.getGender().equals(cond) || stu.getAddress().contains(cond) || stu.getDormNum().equals(cond)) {
 8                 res.add(stu);
 9             }
10         }
11         return res;
12     }    

删除学生:

 1     @Override
 2     public int delStuByNumber(String number) {
 3         List<Student> students = getAllStudent();
 4         CsvWriter writer = new CsvWriter(filename, false);
 5         int cnt = 0;
 6         for(Student stu : students) {
 7             if (!stu.getNumber().equals(number)) {
 8                 cnt ++;
 9                 writer.writeRecord(stu.toSaveString());
10             }
11         }
12         writer.close();
13         if(cnt == students.size()) return FAILED;
14         return SUCCESS;
15     }

增加学生:

 1     @Override
 2     public int addOneStudent(Student stu) {
 3         Student student = getStuByNumber(stu.getNumber());
 4         if(student == null) {
 5             CsvWriter writer = new CsvWriter(filename, true);
 6             writer.writeRecord(stu.toSaveString());
 7             writer.close();
 8             return SUCCESS;
 9         }
10         return FAILED;
11     }

更新学生信息:

 1     @Override
 2     public int uptStuByNumber(Student stu) {
 3         List<Student> students = getAllStudent();
 4         CsvWriter writer = new CsvWriter(filename, false);
 5         for(Student student : students) {
 6             if (!student.getNumber().equals(stu.getNumber()))
 7                 writer.writeRecord(student.toSaveString());
 8             else
 9                 writer.writeRecord(stu.toSaveString());
10         }
11         writer.close();
12         return SUCCESS;
13     }

组员负责的是实体类层entity层,业务层ui层;

entity层是我们写的学生信息的实体类。

 1 public class Student {
 2     
 3     // 学号
 4     private String number;
 5     // 姓名
 6     private String name;
 7     // 性别
 8     private String gender;
 9     // 出生日期
10     private String birth;
11     // 政治面貌
12     private String politics;
13     // 家庭住址
14     private String address;
15     // 电话
16     private String phone;
17     // 宿舍号
18     private String dormNum;
19     
20     public Student() {}
21     
22     public Student(String number, String name, String gender, String birth, String politics, String address, String phone,
23             String dormNum) {
24         super();
25         this.number = number;
26         this.name = name;
27         this.gender = gender;
28         this.birth = birth;
29         this.politics = politics;
30         this.address = address;
31         this.phone = phone;
32         this.dormNum = dormNum;
33     }
34     
35     public String getNumber() {
36         return number;
37     }
38     public void setNumber(String number) {
39         this.number = number;
40     }
41     public String getName() {
42         return name;
43     }
44     public void setName(String name) {
45         this.name = name;
46     }
47     public String getGender() {
48         return gender;
49     }
50     public void setGender(String gender) {
51         this.gender = gender;
52     }
53     public String getBirth() {
54         return birth;
55     }
56     public void setBirth(String birth) {
57         this.birth = birth;
58     }
59     public String getPolitics() {
60         return politics;
61     }
62     public void setPolitics(String politics) {
63         this.politics = politics;
64     }
65     public String getAddress() {
66         return address;
67     }
68     public void setAddress(String address) {
69         this.address = address;
70     }
71     public String getPhone() {
72         return phone;
73     }
74     public void setPhone(String phone) {
75         this.phone = phone;
76     }
77     public String getDormNum() {
78         return dormNum;
79     }
80     public void setDormNum(String dormNum) {
81         this.dormNum = dormNum;
82     }
83     
84     @Override
85     public String toString() {
86         return "Student [number=" + number + ", name=" + name + ", gender=" + gender + ", birth=" + birth
87                 + ", politics=" + politics + ", address=" + address + ", phone=" + phone + ", dormNum=" + dormNum + "]";
88     }
89     
90     public String toSaveString() {
91         return number + "," + name + "," + gender + "," + birth + "," + politics + "," + address + "," + phone + "," + dormNum + "\n";
92     }
93     
94 }

UI层是我们实现整个GUI界面的图形布局以及程序逻辑最直观的体现。

GUI图形界面布局:

UI层程序逻辑分为展示学生信息,添加学生,删除学生,修改学生。

查询学生信息:

1             // 查询学生基本信息
2             public void actionPerformed(ActionEvent e) {
3                 String cond = findText.getText();
4                 if(!"".equals(cond)) fullTable(studentDao.getStusByCond(cond));
5             }

添加学生信息:

1             // 添加学生基本信息
2             public void actionPerformed(ActionEvent e) {
3                 StudentAddUI dialog = new StudentAddUI();
4                 dialog.setModal(true);
5                 dialog.setLocationRelativeTo(null); 
6                 dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
7                 dialog.setVisible(true);
8             }

删除学生信息:

 1             // 删除学生基本信息
 2             public void actionPerformed(ActionEvent e) {
 3                 String number = numberText.getText();
 4                 if("".equals(number)) {
 5                     JOptionPane.showMessageDialog(null, "请先选中左侧表格要删除的数据");
 6                 } else {
 7                     int flag = studentDao.delStuByNumber(number);
 8                     if(flag == StudentDao.SUCCESS) 
 9                         JOptionPane.showMessageDialog(null, "学生信息删除成功");
10                     else 
11                         JOptionPane.showMessageDialog(null, "学生信息删除失败");
12                     clearForm();
13                     fullTable(studentDao.getAllStudent());
14                 }
15             }

修改学生信息:

 1             // 修改学生基本信息
 2             public void actionPerformed(ActionEvent e) {
 3                 // 获取输入框中的数据
 4                 String number = numberText.getText();
 5                 String name = nameText.getText();
 6                 String gender = (String) genderBox.getSelectedItem();
 7                 String birth = birthText.getText();
 8                 String politics = (String) politicsBox.getSelectedItem();
 9                 String address = addressText.getText();
10                 String phone = phoneText.getText();
11                 String dormNum = dormNumText.getText();
12                 
13                 if("".equals(number) || "".equals(name) || "".equals(gender) || "".equals(birth) ||
14                         "".equals(politics) || "".equals(address) || "".equals(phone) || "".equals(dormNum)) {
15                     JOptionPane.showMessageDialog(null, "存在空数据,无法修改");
16                 } else {
17                     Student student = new Student(number, name, gender, birth, politics, address, phone, dormNum);
18                     int flag = studentDao.uptStuByNumber(student);
19                     if(flag == StudentDao.SUCCESS) 
20                         JOptionPane.showMessageDialog(null, "学生信息更新成功");
21                     else
22                         JOptionPane.showMessageDialog(null, "学生信息更新失败");
23                     clearForm();
24                     fullTable(studentDao.getAllStudent());
25                 }
26             }

总结:这次项目是一个分工项目,我们两个从最初的框架制定,业务逻辑制定的冲突,到逐渐达成共识。再到具体的实施,充分感受到了一个小型项目从开发到形成成果的来之不易。

标签:return,String,number,博客,学生,stu,equals,信息管理系统,public
From: https://www.cnblogs.com/poneyzxd/p/17045470.html

相关文章

  • 博客学习笔记导航
    图论最短路问题网络流差分约束TarjanFHQ-treap拓扑排序树链剖分二分图线性结构单调队列&单调栈杂项搜索数论数论Ⅰ数论Ⅱ数论Ⅲ......
  • 我的Hexo博客搭建记录,从入门到进阶
    咕,我的个人博客开站啦.目前基于hexo+github配置截止到2023年1月10日,我搭建好这个博客有好几天了,最近也忙着在增改博客的功能.我尽量用简单的语言,记录一下我的工作,如......
  • Hi,all。 博客园我回来了
    之后会更新工作中,学习中遇到的各种问题。涉及运维相关的朋友可以关注交流下。已经很久没有更新了,前期发布的东西也没有章法,很菜,刚入行,基本都是照搬和测试的一些文章。随......
  • 农村高中生源转型期提升学生二次函数建模能力的课堂探究
        例如,在学习二次函数和“指数函数”期间,为了可以在实际授课中渗透指数函数模型,可以在授课中结合“培养黄豆芽”这一主题来创设如下一个启发性问题情境:指导全班......
  • 学生成绩管理系统
    1.项目简介系统用以管理学生成绩等相关信息,支持用户登录,数据采用数据库存储,可对学生成绩等相关信息进行增删查改,支持分别对所有学生各科成绩画出柱状分布图,能随机生成10万......
  • 学生信息管理系统(课程设计)
    面向对象程序综合设计课程设计1.项目简介功能描述:一个学生信息管理系统,从文件中读取信息并且写入文件,功能上可以实现登录,验证,利用链表实现对学生信息的增删改查等功能,做......
  • C语言学生成绩录入系统
    C语言学生成绩录入系统学生成绩录入系统录入10名学生的学号,姓名,及3门课程(高数、马克思、C语言)的平时成绩与考试成绩,3门课程的比例如下:高数:总成绩=平时成绩30%+考试成......
  • C语言学生成绩管理系统[2023-01-10]
    C语言学生成绩管理系统[2023-01-10]学生成绩管理系统建立学生结构体类型,包括:学号(学号11位)、姓名、3门课成绩及总分。采用链表来存放学生信息,从键盘录入10个同学的信息(总......
  • Docusaurus2搭建博客及入门使用
    ##开始上手[官方文档](https://docusaurus.io/zh-CN/docs/category/getting-started)##hexo博客转换为Docusaurus2博客hexo博客可以轻松的转换为Docusauru......
  • 我的博客主题以及美化
    我的博客主题以及美化前言上了大学以后就开始做笔记,准备把自己学习的知识做个梳理和记录,以备复习和查询,同时作为学习成果也是有成就感的。一开始选择的使用微软的OneNote......