《软件工程课程设计说明书.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计说明书.docx(50页珍藏版)》请在三一办公上搜索。
1、软件工程课程设计说明书软件工程课程设计说明书设计题目:学生信息管理系统专业:计算机科学与技术班级:计科14-4班学号:姓名:李雪瑞指导教师:赵俊峰二一六年12月15日目录一、系统概述11.1设计目的11.2系统功能11.3运行环境1二、可行性研究22.1可行性分析的目的22.2可行性分析的内容22.3可行性分析过程22.3.1条件假定和预定22.3.2可行性研究方法22.3.3技术可行性32.3.4效益分析32.4可行性分析结果3第三章需求分析43.1编写目的43.2系统功能4四、总体设计154.1总体设计的目的154.2总体设计的内容154.3设计过程15五、编码实现215.1编码实现的目的
2、215.2编码的工具225.3编码过程22六、代码测试276.1代码测试的目的276.2 测试工具(方法)276.3 测试过程276.4测试结果27七、系统维护287.1 维护目的297.2 维护方法297.3 维护过程297.4 维护结果29八、心得与体会29参考文献30【摘要】在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。经过软件开发的实践训练,进一步掌握软
3、件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。【关键词】学生信息管理系统 C语言一、 系统概述1.1设计目的由于Excel的操作复杂,需要一定的软件知识,因此导致学生信息管理随着社会信息化的脚步加快,个人的信息也呈现出多样性,这便给信息管理者造成了巨大的压力和难度,也给传统的文件信息管理模式提出了挑战。现有的学生信息(1)学生信息管理缺乏安全、便捷性。(2)工作效率低。(3)无法实现不同学院数据的复合使用。为了提高学校学生信息管理的效率和准确性,我们团队决定开发一个学生信息管理系统,希望经过信息化手段管理学生信息,实现提高效率和准确性的目的。学生成绩管
4、理系统在提高学生成绩信息处理的效率的同时,又能为广大师生提供及时准备的学生成绩信息。可使教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理。同时,能够减少劳动力的使用,加快查询速度以及国家各部门关于信息化的步伐,使各项管理更加规范化,提高了传统教师的工作任务量。1.2系统功能可用来查询,插入,更新,删除学生信息。1.3运行环境Windows 10Visual C+ SQL Server eclipse1.8.0二、 可行性研究2.1可行性分析的目的该系统的目标是在学生信息管理中,使用计算机的网络技术、通讯技术和信息处理技术,是学生信息得以加工,依次传达及保存。系统要对使用要
5、求不相同的用户群体设置不同的功能。管理员能有效地管理学生的信息,同事,学生能够随时大量的检索查询多种信息。本系统为管理者提供了完整的管理平台,其主要功能有:(1)经过已有的学生信息库,管理学生的信息,还能够管理教师的信息,管理课程的信息,管理班级的信息;(2)能够修改学生的信息,选择课程,检索成绩等;(3)修改教师的信息,检索学生的成绩,登记授课的学生情况。可行性分析就是为了确定该系统从各个方面确定该系统在经济上、技术上、法律上的可否实现。2.2可行性分析的内容从技术可行性、资源分析、法律道德分析和效益分析来判分析一下学生信息管理系统能否实现。2.3可行性分析过程2.3.1条件假定和预定A 建
6、议开发软件运行的最短寿命:五年B进行系统方案选择比较的期限:一周C经费来源和使用限制:经费来源由学校提供;使用时应定期维护,防止系统出现高漏洞而带来些复杂问题。D法律和政策方面的限制:此软件设计合法,不存在于法律、政策相违背的现象。E硬件环境:若干台计算机F工作站:每个部门至少有一台作为工作站的PC机G操作系统:windows win7 win8等操作系统H数据库:SQL Server 2.3.2可行性研究方法1、初步分析,构想所有必须完成的功能;2、初步需求分析:可行性分析报告、数据流图、数据字典、可行性分析报告;3、建立系统原型:修改规格说明;4、管理员,教师,学生,完善模型,明确功能和实
7、现方法;5、系统的整体测试和修改完善。2.3.3技术可行性学生信息管理系统的开发需要对管理的需求进行分析,最终经过简单的界面按钮操作实现对学生数据的增、删、改和查询操作,并将这些操作反应到数据库的操作。完成以上功能需要采用以下几个关键的技术:(1)数据库数据显示技术经过什么方式和形式把数据库中的学生数据显示到界面上供管理者查阅,当前的基本技术都是基于Sql语言的混合编程实现遍历数据库,对数据的提取,然后经过GUI编程在界面上显示。当前的界面编程和Sql语言的混合编程已经比较成熟,比如用于界面编程的有C、Java、Qt、C+等等,而且她们基本都是开源的,不会存在侵权和成本的问题。(2)数据库数据
8、修改技术对数据库的操作基本的还是离不开Sql语言的混合编程,主要是经过对按钮事件的捕捉,经过对应的Sql代码实现对数据库相关操作。(3)系统在运行和维护面临的问题系统在运行过程中,系统的用户主要是学校的信息管理人员,用户对系统使用的熟练程度会影响系统应用的效果,增加系统维护的压力。这个问题能够经过一份简单的管理人员使用说明文档来解决。在系统运行的初级阶段,能够由开发方的系统维护人员提供现场的使用指导。系统维护面临的主要问题是系统存储的学生数据量比较大,数据备份和数据安全十分重要。数据备份与恢复需要程序化、智能化。由于数据涉及到学生个人信息秘密,数据备份与恢复工作需要有信息管理人员专职负责。 2
9、.3.4效益分析1.经济效益分析(1)提高管理者的工作效率后,使得信息管理人员需求的减少,减少了额外的开支。(2)提高信息管理的便捷性,降低信息管理的要求。2.社会效益分析(1)节省了管理者的时间,降低了劳动输出量。(2)提高了学校信息化程度的形象。2.4可行性分析结果经过分析,在学生信息管理中,使用计算机的网络技术,通讯技术和信息管理技术,使学生的信息得以加工,依次传达及保存。系统要对使用要求不相同的用户群体设置不同的功能。从必要性、技术、资源、时间、社会法律等几角度的分析,学生信息管理系统项目是可行的,是能够设计的。第三章需求分析3.1编写目的为学生管理系统的开发提供可行性分析的结论,为项
10、目是否正式立项、启动提供依据,为项目启动后的需求分析、设计、开发、测试等工作提供基础依据。该系统的编写目的是提高学生成绩管理的工作效率,使人们从乏味的数据登记和统计工作中解脱出来,保证工作的准确率,为老师及同学提供充分的信息和快捷的查询手段。数据库作为计算机应用的一部分,对学生成绩查询进行管理具有手工管理无法比拟的优点,例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长等。这些优点能够极大地提高学生成绩查询和管理的效率。 学生管理系统在提高学生成信息处理的效率的同时,又能为广大师生提供及时准备的学生信息。可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理。
11、同时,能够减少劳动力的使用,加快查询速度以及国家各部门关于信息化的步伐,使各项管理更加规范化,提高了传统教师的工作任务量。学生管理系统的功能主要分为:前台管理和后台管理两大功能。3.2系统功能学生管理系统的功能主要分为:前台管理和后台管理两大功能。3.2.1总目标l 实现学生信息进入系统的自动化,提高学生信息统计的实时性,减轻人工劳动强度从而节省人力成本。l 实现学生信息查询的实时性,规避信息孤岛。l 提高学生信息的畅通度,为学生以及教师提供方便。3.2.2具体目标1)前台管理系统必须具备以下功能:l 信息的录入:根据学校的特点制定相关功能,能够经过唯一的学号将学生信息录入,该功能能够充分保证
12、各种电脑操作层次的人员均能经过学生管理系统快速的录入该学生,并为后续的功能提供技术上的支持。l 信息的删除:根据学校的相关条律,将辍学或者劝退的学生的信息从学生管理系统中删除,该功能能够充分保证各种电脑操作层次的人员操作,同时也是达到系统空间的充分利用。l 信息的修改:根据学生在校期间的表现,有些许挂科,重修的科目,都会实时性的进行更新,该功能必须充分保证各个电脑操作层次的人员都能进行操作,达到学生信息更改的迅速的效率。l 信息的查询:在学生需要知道自己的信息时,能够经过学生管理系统,进行查询。如:成绩,课程表,报名等等。2)后台管理系统必须具备以下功能:l 人员管理:教师,学生,游客,管理员
13、等基本信息的登记管理。该功能将不同阶级的人分层,以便更好的管理,达到管理的高效率。l 权限管理:各个人员的权限是不同的,教师能够登记学生成绩,学生能够浏览自己的信息或者修改一些基本信息,游客只能浏览信息,管理员能够修改各个信息。该功能充分保证了信息的安全性。3.2.3性能目标l 系统的操作人员需要进行一定的培养,不可盲目的修改,导致学生信息混乱。l 系统的运行的可靠性要求较高,必须保证信息不可轻易丢失,损害学生个人利益。l 系统必须可进行实时性处理,其效率比人工处理效率要高出70%。3.2.4系统图学生基本信息管理系统信息录入信息浏览信息查询信息排序信息删除信息修改信息添加退出系统输入学生的相
14、关信息显示学生的相关信息按姓名查询按学号查询更新保存的学生信息对新加的学生进行信息录入菜单选择信息录入:信息录入系统能够准确的录入各种信息。信息录入准确录入信息(1)关系图(2)状态转换图信息删除:信息删除系统能够删除不再在学校的学生及教师信息。信息删除删除离校师生信息(1)关系图(2)状态转换图信息修改:信息修改系统能够根据学生的活动修改学生信息。信息修改修改师生信息(1)关系图(2)状态转换图信息查询:学生信息查询系统能够准确的查询某个学生的学生信息。信息查询准确查询学生信息(1)关系图(2)状态转换图成员信息及权限管理:用户进入POS系统界面,输入ID号码,检测是管理员,学生还是教师。如
15、果是管理员,则有增加、删除、修改、查询信息的功能;如果是学生,则有查询学生成绩、修改基本信息的功能;如果是教师,则有登记授课学生情况,查询学生成绩,修改教师信息的功能。(1)关系图(2)状态转换图四、总体设计4.1总体设计的目的本系统采用面向对象方法进行分析和设计,在SQL Server 数据库上实现数据操作。使用纯面向对象的JAVA语言作为开发语言,使用Windows 7作为开发平台,能够很好的实现系统的开发及测试。经过这个阶段的设计将划分出组成学生信息管理系统的物理元素程序、文件、数据库、人工过程和文档等,可是在这个过程中每个物理元素依然处于黑盒子级。同时还要在这个阶段设计软件的结构,也就
16、是要确定系统中有那些模块组成,以及模块之间的关系。4.2总体设计的内容(1) 设计并选取合适的实现学生信息管理系统的方法(2) 设计高效率的软件结构(3) 设计必要的数据库(4) 书写文档(5) 制定测试计划4.3设计过程(1) 选取合理的方案在SQL 的基础上先建立一个学生数据库,然后用c+程序设计语言嵌套SQL语言设计一个合理的软件程序实现对学生数据库的管理。最后要对操作界面进行优化,以及软件的操作流程和软件结构进行优化。在后期我们还要配备专业的人士为此系统进行长期的管理和维护。(2) 推荐最佳的方案省略(3) 功能分解学生信息管理系统”主要分为登录、权限管理、学生信息管理、教师信息管理、
17、课程信息管理、账户管理等6个模块。系统主模块功能树如图所示:权限管理(管理员)模块学生信息管理模块 教师信息管理模块课程信息管理模块 账户管理模块 课程信息更新模块 学生信息更新模块教师信息更新模块(4) 设计软件结构(5) 设计数据库 概念结构设计就是E-R方法的分析与设计,概念结构设计是整个数据库设计的关键。在此,将使用实体联系(E-R)模型来描述系统的概念结构,同时设计出能够满足用户需求的的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这也实体包括各种具体的实际信息,经过相互之间的作用形成数据的流动。本程序根据上面的设计规划出的实体有:学籍实体、班级实体、年级实体、课程实体
18、与成绩实体,学生信息管理系统数据库E-R模型,如下图所示:(5.1)数据库和数据表的建立学生信息表表名称标识:Student表数据来源:新生信息录入模块进行录入教师信息表表名称标示:teacher表教师信息录入课程信息表表名标示:course表课程信息录入学生课程信息表表名称标识:Studentcourse表学生成绩录入表教师-课程信息表表名称标示:teacher-course表教师和所授课程信息4.4总体设计的结果经过本阶段的设计,得到一个较为合理的软件结构。模块化分的合适,同时本结构有清晰的层次结构,各个层次的人士都能理解本软件的结构。各个模块有较好的独立性,软件由一组完成相对独立的子功能
19、的模块组成,这些模块之间接口的关系较为简单。我们运用了自顶向下逐步求精方法。同时我们运用在数据库设计方面的知识,对我们需要的数据库进行了设计。设计步骤:(1)概念设计(2)逻辑设计(3)物理设计(4)数据库实施。我们得到一个初步的学生信息关系系统的数据库。五、编码实现5.1编码实现的目的 编码是将软件设计结果翻译成用某种程序设计语言书写的程序,是对设计的进一步具体化。编码为计算机中的数据与实际处理的信息之间建立联系,提高信息处理的效率。编码风格是指编程遵循的基本原则。良好的编码风格有利于弥补语言的缺陷,编写出高质量的软件。包括程序内部的文档、数据说明、语句构造、输入/输出、效率等方面的问题。
20、选择一种编程语言的理论标准:(这里选择Java)1)有理想的模块化机制;2)可读性好的控制结构和数据结构;3)便于调试和提高软件可靠性;4)编译程序发现程序错误的能力强;5)有良好的独立编译机制。5.2编码的工具使用java编写程序, Eclipse5.3编码过程根据详细设计中的程序流程图分模块编写程序,然后再组装起来。编码过程中涉及到的类:SimpleStudentManager 主函数类DLFrame 登陆界面类 ManagerFrane 管理员界面类 StudentFrame 学生界面类 SM 学生信息管理的类 SAdd 用于学生信息管理中增加或修改某条记录的界面的类 SSelect 用
21、于学生基本信息管理中查询时输入学号的界面的类(1)登录界面模块:学生信息管理系统可由管理员和学生两种身份的人使用。管理员和学生身份登录所能操作的功能有很大的区别。mport javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;class DLFrame extends JFrame implements ActionListener, ItemListener / 登录界面JPanel p1 = null;JPanel p2 = null;JPanel p3 = null;JLabel userNa
22、me = new JLabel(用户:);JTextField txtUser = new JTextField();JLabel password = new JLabel(密码:);JPasswordField txtPwd = new JPasswordField(6);JLabel role = new JLabel(角色:);JComboBox cbrole = new JComboBox();JButton btnLogin = new JButton(登录);JButton btncz = new JButton(重置);JButton btnCancel = new JButt
23、on(取消);JLabel imageLabel;Icon image;static int OK = 1;static int CANCEL = 0;int actionCode = 0;Connection con = null;Statement stmt = null;ResultSet rs = null;int qxian = 0;public DLFrame() / 构造方法super(登录界面);p1 = new JPanel();p2 = new JPanel();p3 = new JPanel();cbrole.addItem(管理员);cbrole.addItem(学生)
24、;image = new ImageIcon(picturest.jpg);imageLabel = new JLabel(image);p1.add(imageLabel);this.setLayout(new FlowLayout();this.setBounds(100, 100, 246, 345);p2.setLayout(new GridLayout(4, 2);p2.add(userName);p2.add(txtUser);p2.add(password);p2.add(txtPwd);p2.add(role);p2.add(cbrole);p3.add(btnLogin);p
25、3.add(btncz);p3.add(btnCancel);this.add(p1);this.add(p2);this.add(p3);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.show();btnLogin.addActionListener(this);cbrole.addItemListener(this);btncz.addActionListener(this);btnCancel.addActionListener(this);public void con
26、nDB() / 连接数据库try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch (ClassNotFoundException e) e.printStackTrace();try con = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433; DatabaseName=student,sa, 123);stmt = con.createStatement(); catch (SQLException e) e.printStackTrac
27、e();public void closeDB() / 关闭连接try stmt.close();con.close(); catch (SQLException e) e.printStackTrace();public void itemStateChanged(ItemEvent e) if (e.getStateChange() = ItemEvent.SELECTED) JComboBox jcb = (JComboBox) e.getSource();qxian = jcb.getSelectedIndex();public void actionPerformed(ActionE
28、vent e) Object source = e.getSource();String un = null;String pw = null;boolean success = false;/ 用于判断是否登录成功if (source = btnLogin) if (txtUser.getText().equals() | txtPwd.getText().equals() / 判断是否输入了用户名和密码JOptionPane.showMessageDialog(null, 登录名和密码不能为空!); else this.connDB();try rs = stmt.executeQuery
29、(select * from unpw where qx=+ qxian);while (rs.next() un = rs.getString(un).trim();pw = rs.getString(pw).trim();if (txtUser.getText().equals(un) if (txtPwd.getText().equals(pw) actionCode = OK;this.setVisible(false);if (qxian = 0) new ManagerFrane();/ 进入管理员界面if (qxian = 1) new StudentFrame();/ 进入学生
30、界面success = true;break; else JOptionPane.showMessageDialog(null, 密码错误!);txtPwd.setText();success = true;if (!success) JOptionPane.showMessageDialog(null, 登录名错误!);txtUser.setText();txtPwd.setText(); catch (SQLException e1) e1.printStackTrace(); else if (source = btncz) txtUser.setText();txtPwd.setTex
31、t(); else if (source = btnCancel) System.exit(0);(2)学生信息管理模块编码:import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;class SAdd extends JFrame implements ActionListener, ItemListener / 用于学生信息管理中增加或修改某条记录的界面JLabel lsno = new JLabel(学号:);JLabel lsname = new JLabel(姓名:);JLabe
32、l lssex = new JLabel(性别:);JLabel lsage = new JLabel(年龄:);JLabel lsdept = new JLabel(院系:);JTextField tsno = new JTextField(14);JTextField tsname = new JTextField(14);JComboBox cbssex = new JComboBox();JTextField tsage = new JTextField(14);JComboBox cbsdept = new JComboBox();JButton btnOK = new JButto
33、n( 确 定 );JButton btnCancel = new JButton( 取 消 );JPanel p = new JPanel();Connection con = null;Statement stmt = null;ResultSet rs = null;String xb = 男;String yx = 计科系;boolean isNewsm = true;/ 用于判断是否显示学生管理的界面public SAdd(String xb, String yx) / 构造方法this.xb = xb;this.yx = yx;this.setTitle(增加);this.setBo
34、unds(200, 200, 220, 210);if (xb.trim().equals(男) cbssex.addItem(男);cbssex.addItem(女); else cbssex.addItem(女);cbssex.addItem(男);if (yx.trim().equals(计科系) cbsdept.addItem(计科系);cbsdept.addItem(物理系);cbsdept.addItem(数学系);cbsdept.addItem(外语系);if (yx.trim().equals(物理系) cbsdept.addItem(物理系);cbsdept.addItem(
35、计科系);cbsdept.addItem(数学系);cbsdept.addItem(外语系);if (yx.trim().equals(外语系) cbsdept.addItem(外语系);cbsdept.addItem(计科系);cbsdept.addItem(物理系);cbsdept.addItem(数学系);if (yx.trim().equals(数学系) cbsdept.addItem(数学系);cbsdept.addItem(计科系);cbsdept.addItem(物理系);cbsdept.addItem(外语系);p.setLayout(new FlowLayout(FlowLa
36、yout.LEFT);p.add(lsno);p.add(tsno);p.add(lsname);p.add(tsname);p.add(lsage);p.add(tsage);p.add(lssex);p.add(cbssex);p.add(lsdept);p.add(cbsdept);p.add(btnOK);p.add(btnCancel);this.add(p);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);cbssex.addItemListener(this);cbsdept.addItemListener(this);bt
37、nOK.addActionListener(this);btnCancel.addActionListener(this);this.show(); public void connDB() / 连接数据库try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch (ClassNotFoundException e) e.printStackTrace();try con = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433; DatabaseN
38、ame=student,sa, 123);stmt = con.createStatement(); catch (SQLException e) e.printStackTrace();public void closeDB() / 关闭连接try stmt.close();con.close(); catch (SQLException e) e.printStackTrace();public void insertst() / 插入记录String xh = null;String xm = null;int nl = 0;xh = tsno.getText();xm = tsname
39、.getText();try nl = Integer.parseInt(String) tsage.getText();if (this.getTitle() = 修改) / 如果是修改记录,先删除再增加try this.connDB();int rs1 = stmt.executeUpdate(delete from s where sno=+ xh + ); catch (SQLException e) e.printStackTrace();String str = insert into s values( + xh + , + xm + , + nl+ , + xb + , + y
40、x + );this.connDB();/ 连接数据库try stmt.executeUpdate(str);JOptionPane.showMessageDialog(null, this.getTitle() + 成功!,提示, JOptionPane.INFORMATION_MESSAGE, new ImageIcon(menu4.gif);this.setVisible(false); catch (SQLException e) JOptionPane.showMessageDialog(null, 学号已存在!);tsno.setText(); catch (NumberForma
41、tException e) / 判断年龄是否为数字JOptionPane.showMessageDialog(null, 年龄必须是整数!);tsage.setText();isNewsm = false;if (this.getTitle() = 增加) / 如果是增加记录,对应的用户表中也增加一条记录try stmt.executeUpdate(insert into unpw values( + xh + ,+ xh + , + 1 + ); catch (NullPointerException e) catch (SQLException e) / e.printStackTrace
42、(); public void actionPerformed(ActionEvent e) if (e.getActionCommand() = 确 定 ) this.insertst();if (isNewsm) new SM().display();isNewsm = true;if (e.getActionCommand() = 取 消 ) this.setVisible(false);new SM().display(); public void itemStateChanged(ItemEvent e) / 下拉框的监听if (e.getStateChange() = ItemEv
43、ent.SELECTED) JComboBox jcb = (JComboBox) e.getSource();if (jcb.getSelectedItem() = 男)| (jcb.getSelectedItem() = 女) xb = (String) jcb.getSelectedItem(); else yx = (String) jcb.getSelectedItem();六、代码测试6.1代码测试的目的测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。测试决不能证明软件是正确的,也不能证明错误的不存在,它只能证明错误的存在。6.2 测试工具(方法)