201271050130-滕江南 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告

项 目 内 容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12416880.html
我的课程学习目标 (1)掌握软件项目个人开发流程(2)掌握Github发布软件项目的操作方法。
这个作业在哪些方面帮助我实现学习目标 (1)提高了独立完成作业的能力(2)学会了Github基本操作(3)学会了数据库的基本操作(4)提升了JAVA编程能力
项目Github的仓库链接地址 https://github.com/jiangnanteng0413/Epidemic-monitoring-tjn

任务1:陈述学生疫情每日上报子系统使用体验
  疫情每日上报系统的主要是为了记录学校教职工、学生每日的身体状况和行为动态,方便学校收集大数据掌握情况,为学校开学学生返校提供了科学依据。这个系统在使用之初,存在几个问题:1.集中时间段大量用户进入,造成系统奔溃,无法载入的问题,目前这个情况已得到了改善。2.上报的内容每天都要重复填写,比较繁琐,目前这个情况已得到改善,系统保存前一天上报的内容,在此情况下修改即可。本人的建议:1.设置闹钟提醒,在规定时间的前10分钟提醒,可开设闹铃或者推送消息,提醒用户完成情况上报。2.界面优化,填写内容简洁明了,完成填写后可显示内容,确认无误后提交。由于疫情突然,在短时间内完成这个系统,开发人员都十分辛苦。在第一时间完成,并能保障全校范围内的正常使用,觉得非常不容易,为背后的开发人员的辛勤劳动、无私付出点赞!希望我们能早日攻克难关,相聚在美丽的“西施”校园。

任务2:我选择第一类开发任务:有一个数据文件,保存了100天 2000 个员工的所有防疫的信息,请设计一个命令行的程序,支持查询某员工在某一天的疫情情况,查询某种数据的周/月的疫情统计情况,并用柱状图显示统计结果。
       
1.需求分析(5分)

  2019 年 12 月,武汉发生新型冠状病毒(2019-nCoV)疫情,为阻止疫情进一步蔓延,中国政府于2020 年 1 月 23 日对武汉采取了隔离措施,包括北京、上海等 31个省市也相继实施了严格的防控措施。
                                    ----引用自《中国抗击新型冠状病毒:进展和影响》
  当前,疫情防控工作到了最吃劲的关键阶段。为准确高 效采集和统计全校师生员工新冠肺炎疫情防控相关信息,进一步夯实疫情防控工作基础,坚决打赢校园疫情防控阻击战,学校组织力量开发了师生健康打卡系统。
                                    ----引用自《关于试运行西北师范大学师生健康打卡系统的通知》

  学校教职工、学生分布范围较广,使得采集的疫情数据复杂,难度较大。通过系统构建的上报平台,将数据整合,然后进行统计分析,为进一步掌握学校疫情情况提供科学依据。数据是平台的血液,动态的数据现时更新才能体现平台的生命力。用户通过系统客户端界面填写相关信息,与此同时后台数据库同步更新,并将其存储起来,进行统计分析。后台通过数据整合,可进行筛选排查,生成相应图表,优化疫情数据的可视性。

2.功能设计
  基本功能:
    (1)采集学生信息;
    (2)查询学生信息;
    (3)可生成柱状图。
  扩展功能:
    (1)提取重点关注的人员信息,每日监控;
    (2)向负责人发送重点关注人员的信息。
     
3.设计实现


     
4.测试运行




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

` package 疫情;

import java.sql.;
import javax.swing.
;
import java.awt.;
import java.awt.event.
;
import java.awt.Color;
public class LLogin {

 public static void main(String[] args) {  
        new loginFrame();   
    }  	  
} 

class loginFrame extends JFrame implements ActionListener{  
    Box box1,box2,baseBox;  
    JLabel userName,userPwd,tubiao;  
    JTextField nameField;  
    JPasswordField pwdField;  
    JButton button;  
    JTabbedPane choose;  
    JPanel panel1,panel2;  
    loginFrame(){  
        setBackground(Color.white);  
        userName=new JLabel("账号",JLabel.CENTER);  
        userPwd=new JLabel("密码",JLabel.CENTER);  
        nameField=new JTextField(8);  
        pwdField=new JPasswordField(8);  
        panel1=new JPanel();  
        panel2=new JPanel();  
        choose=new JTabbedPane();  
        choose.add("登录界面",panel1);  
        panel1.setLayout(new GridLayout(2,2));  
        panel1.add(userName);panel1.add(nameField);  
        panel1.add(userPwd);panel1.add(pwdField);  
        add(choose,BorderLayout.CENTER);  
        button=new JButton("登陆");  
        add(button,BorderLayout.SOUTH);  
        button.addActionListener(this);  
        //小图标
        ImageIcon tubiao=new ImageIcon("H:/Java:学生信息成绩管理系统/StudentSystem/src/疫情/层云.jpeg"); 
        setIconImage(tubiao.getImage());  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        setVisible(true);  
        setBounds(200,100,500,200);  
        setTitle("疫情信息管理系统");  
        validate();  
    }  


    public void actionPerformed(ActionEvent e){  
        String name,pwd;  
        name=nameField.getText();  
        pwd=pwdField.getText();  
        try{  
          Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动 
           
        }  
        catch(ClassNotFoundException ex){  
        System.out.println(ex);  
        }  
        try{  
            Connection con;  
            Statement sql;  
            ResultSet rs;  
            String url,userName,userPwd;  
             // 连接数据库的语句
          url =  "jdbc:mysql://localhost:3306/studentinfo?useUnicode=true&characterEncoding=utf-8";
        
            userName="root";  
            userPwd="root";  
            con=DriverManager.getConnection(url,userName,userPwd);  
            sql=con.createStatement();  
            rs=sql.executeQuery("select * from login where name ='"+name+"' and pwd='"+pwd+"'");  
            int q=0;  
            
            while(rs.next()){  
                q++;  
              
            }  
            if(q>0){  
                JOptionPane.showMessageDialog(this, "登陆成功!","消息对话框",JOptionPane.WARNING_MESSAGE);  
                this.dispose();  
                new CommFrame();    
                  
            }  
            else  
                JOptionPane.showMessageDialog(this, "账号或者密码错误!","消息对话框",JOptionPane.WARNING_MESSAGE);  
        }  
        catch(SQLException exp){  
            System.out.println(exp);  
        }        
    }  

6.总结:你设计的程序如何实现软件设计的“模块化”原则。
  本人表示很遗憾没有按照要求完成任务,设想是分成信息采集,信息查询,图表生成三个模块 实现软件设计。目前只能做到简单的信息采集和信息查询功能。      
7.展示PSP,这个环节重要的是让自己看到自己的估计和实际消耗时间,哪个环节耗时最多,哪个环节估计和实践相差巨大?为什么?(5分)

|PSP |任务内容| 计划共完成需要的时间(min)| 实际完成需要的时间
|-------|--------|-------|--------|-------
|Planning| 估计这个任务需要多少时间,并规划大致工作步骤| 45 |30
|Deveploment| 开发| 3000| 4000
|Analysis| 需求分析 (包括学习新技术)| 2000| 2000
|Design Spec| 生成设计文档| 0 |0
|Design Review| 设计复审 (和同事审核设计文档)| 0| 0
|Coding Standard| 代码规范 (为目前的开发制定合适的规范)| 180| 180
|Design |具体设计 |300 |300
|Coding |具体编码| 300| 800
|Code Review |代码复审| 120| 120
|Test |测试(自我测试,修改代码,提交修改)| 180| 180
|Reporting| 报告 |120 |180
|Test Report| 测试报告 |60 |60
|Size Measurement| 计算工作量| 60 |60
|Postmortem & Process Improvement Plan |事后总结 ,并提出过程改进计划| 60| 60
  开发过程是花了大量时间,按照计划是用JAVA语言和SQL实现系统功能。由于个人没有学习过数据库,编程能力比较弱,所以整个项目做起来特别吃力。过程中安装了SQL 2008R,通过视频学习了数据库的基本操作,实现了数据库中的数据导入,但是没有实现数据库和系统界面的连接。界面做的很简单,只能实现信息输入和显示,没有按照任务要求完成本次实验。
8.如果所有的环节你都认真做了,那么,此处你应该会有很多经验愿意与大家分享。
  从刚开始上课的时候,就是觉得这是不可能完成任务,但还是硬着头皮看视频学习,想着能做多少做多少,尽力去完成。虽然完成的结果不咋样,但是前后十几天每天都在为了这个项目学习,感觉还是很充实。好几次想要放弃,但还好坚持下来,只能自我安慰:学习过程更重要,继续坚持终将收获成功的果实。

posted @ 2020-03-18 16:25  滕江南  阅读(297)  评论(3编辑  收藏  举报