201771010133-杨玲 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告

项目 内容
课程班级博客链接 https://www.cnblogs.com/nwnu-daizh/
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12416880.html
我的课程学习目标

(1)学习并掌握关于软件工程的基本理论知识

(2)增强个人独立实践能力

(3)提升自己的专业能力

这个作业在哪些方面帮助我实现学习目标

(1)学会如何编写并发布博客

(2)通过博客园发现更多学习知识和提升自我能力的好方法

(3)通过博客园可以与志同道合的朋友进行专业上的知识和技术交流

(4)学会如何使用Github

项目Github的仓库链接地址  

  1. 需求分析

  在新型冠状病毒(2019-nCoV) 感染的肺炎疫情之下,为了有效配合防控机构有关疫情信息的采集、统计与排查,我们决定设计开发一个教职工/学生疫情上报系统,来实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。

   2. 功能设计

  • 基本功能

   学生可以登录系统来进行疫情期间个人健康状况的填写与提交,有一个数据文件,可以保存学生每日的防疫状态信息,管理员可以登录管理员界面,来查看每位同学当日的基本情况、所在区域及健康状况,还可以查询某种学生所在不同地区的人数和学生当日健康与非健康人数的统计,并用柱状图显示统计结果。

  • 扩展功能

   学生第一次可以自行注册个人账号,以此来减轻后台工作人员的工作量度,在注册个人账号时会对学生所填写的部分关键信息进行校验(如学号、电话号码、登录密码),在学生提交表单时,可将前一天所提交的数据回显,还可以自动获取当地时间并进行保存。管理员在查看学生信息时还可以对信息进行修改、删除,当某个学生错过提交时间时还可以将该生的信息添加在数据库中。

   3. 设计实现

  如下图是我所建的所有类,Discnum主要负责学生所处地区的统计,Discshop主要负责学生当日健康状况的统计,LoginDialog主要负责登录,UserAddDialog主要负责学生的注册,ShowEditor主要负责学生登录后的主页,UserAddDialog主要负责学生当日疫情填报和提交,UserQurryEditor主要负责管理员对学生当日健康状况的查看。

   数据库的构建

    管理员表keeper

    学生信息表user

   

4. 测试运行

  (1)注册界面

  (2)登录界面

     

  (3)主页

   (4)填表

    (5)管理员查看学生信息

  (6)统计

5. 粘贴自己觉得比较独特的或满意的代码片段,用博客园代码控件来显示。

 1 public void focusLost(FocusEvent e) {
 2                 // 校验学号
 3                 String name = text_3.getText().trim();
 4                 if (ValidatePassWordUtil.validateName(name)) {
 5                     label_13.setForeground(SWTResourceManager.getColor(SWT.COLOR_GREEN));
 6                     label_13.setText(" √ ");
 7                 } else {
 8                     label_13.setForeground(SWTResourceManager.getColor(255, 99, 71));
 9                     label_13.setText(" * ");
10                 }
11             }
12 public void widgetSelected(SelectionEvent e) {
13                 String id = text.getText().trim();
14                 //校验学号
15                 if ("".equals(id)) {
16                     MsgUtil.showMsgInfo("学号不可以为空!");
17                     return;
18                 }
19                 String sql1 = "";
20                 String name = text_5.getText().trim();
21                 String password = text_3.getText().trim();
22                 String sex = "";
23                 if (button.getSelection()) {
24                     sex = "男";
25                 }else if(button_1.getSelection()){
26                     sex = "女";
27                 }
28                 String nj = combo_1.getText();
29                 String xy = text_1.getText().trim();
30                 String bj = text_2.getText().trim();
31                 String city = combo.getText();
32                 String phone = text_4.getText().trim();
33 
34                 //校验电话号码
35                 boolean res1 = StringRegexUtils.isRegexpValidate(phone, StringRegexUtils.mobil_regexp);
36                 if (!res1) {
37                     MsgUtil.showMsgInfo("电话号码不合法!");
38                     return;
39                 }
40                 
41                 /*Date date=new Date();
42                 String d=date.toLocaleString();*/
43                 //执行保存sql
44                 String sql = "INSERT INTO USER(u_id,u_name,u_sex,u_p"
45                         + "word,u_nj,u_xy,u_bj,u_city,u_num) VALUES(?,?,?,?,?,?,?,?,?)";
46                 int res = db.update(sql,id,name,sex,password,nj,xy,bj,city,phone);
47                 if (res > 0) {
48                     MsgUtil.showMsgOK("注册成功!");
49                     shell.close();
50                 }else{
51                     MsgUtil.showMsgError("注册失败!");
52                 }
53                 
54             }
55 
56 tableItem.setText(text);
57             //将当前用户的id绑定在当前的TableItem上(隐藏)
58             tableItem.setData(list.get(i).get("u_id"));
59 
60 
61 /*             权限划分
62          * viewId:要打开的view的Id
63          * relationship:view打开的位置
64          * ratio:view组件这个页面的比例
65          * refId
66          * */
67         //添加没有标题的view
68         String power = LoginDialog.power;
69         if ("0".equals(power)) {
70             layout.addStandaloneView(TopView.ID, false, IPageLayout.TOP, 0.12f, layout.getEditorArea());
71             layout.addView(AdminView.ID,IPageLayout.LEFT, 0.20f, layout.getEditorArea());
72         }else if ("1".equals(power)) {
73             layout.addStandaloneView(TopView1.ID, false, IPageLayout.TOP, 0.12f, layout.getEditorArea());
74             layout.addView(AdminView1.ID,IPageLayout.LEFT, 0.20f, layout.getEditorArea());
75         }

  6. 总结

  通过这次个人项目的合计开发,我体会到了团队协作的重要性,以及自己在编程能力方面的欠缺,还有自己对待学习任务喜欢推脱的坏习惯,导致自己在后续的设计开发中没有充足的时间去使得系统更加完善,同时也体会到了个人能力提升的重要性,以及从刚开始的独自摸索到最后的得出成果,我体会到了努力的快乐和成就感,虽然做的不是很好,但今后会继续努力。

  7. 展示PSP

PSP 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 60 30
Estimate 估计这个任务需要多少时间,并规划大致工作时间 1000 1500
Development 开发 1000 2000
Analysis 需求分析(包括学习新技术) 500 9000
Design Spec 生成设计文档 30 30
Design Review 设计复审(和同事审核设计文档) 30 30
Coding Standard 代码规范 100 80
Design 具体设计 100 150
Coding 具体编码 500 900
Code Review 代码复审 30 30
Test 测试(自我测试,修改代码,提交修改) 500 400
Reporting 报告 100 80
Test Reporting 测试报告 30 30
Size Measurement 计算工作量 30 80
Postmortern & Process Improvement Plan 事后总结,并提出过程改进计划 2000 2500

猜你喜欢

转载自www.cnblogs.com/yanglinga/p/12521271.html