《软件工程》课程设计说明书.docx
《《软件工程》课程设计说明书.docx》由会员分享,可在线阅读,更多相关《《软件工程》课程设计说明书.docx(29页珍藏版)》请在冰豆网上搜索。
![《软件工程》课程设计说明书.docx](https://file1.bdocx.com/fileroot1/2023-6/28/49610958-b449-49bd-9b56-b630340ad6d2/49610958-b449-49bd-9b56-b630340ad6d21.gif)
《软件工程》课程设计说明书
《软件工程》课程设计说明书
设计题目:
学生信息管理系统
专业:
计算机科学与技术
班级:
计科14-4班
学号:
姓名:
李雪瑞
指导教师:
赵俊峰
二○一六年12月15日
【摘要】
在现代社会中,软件应用于多个方面。
典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。
同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。
这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
【关键词】学生信息管理系统C语言
一、系统概述
1.1设计目的
由于Excel的操作复杂,需要一定的软件知识,所以导致学生信息管理随着社会信息化的脚步加快,个人的信息也呈现出多样性,这便给信息管理者造成了巨大的压力和难度,也给传统的文件信息管理模式提出了挑战。
现有的学生信息
(1)学生信息管理缺乏安全、便捷性。
(2)工作效率低。
(3)无法实现不同学院数据的复合使用。
为了提高学校学生信息管理的效率和准确性,我们团队决定开发一个学生信息管理系统,希望通过信息化手段管理学生信息,实现提高效率和准确性的目的。
学生成绩管理系统在提高学生成绩信息处理的效率的同时,又能为广大师生提供及时准备的学生成绩信息。
可使教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理。
同时,可以减少劳动力的使用,加快查询速度以及国家各部门关于信息化的步伐,使各项管理更加规范化,提高了传统教师的工作任务量。
1.2系统功能
可用来查询,插入,更新,删除学生信息。
1.3运行环境
Windows10
VisualC++SQLServer2008eclipse1.8.0
二、可行性研究
2.1可行性分析的目的
该系统的目标是在学生信息管理中,使用计算机的网络技术、通讯技术和信息处理技术,是学生信息得以加工,依次传达及保存。
系统要对使用要求不相同的用户群体设置不同的功能。
管理员能有效地管理学生的信息,同事,学生可以随时大量的检索查询多种信息。
本系统为管理者提供了完整的管理平台,其主要功能有:
(1)通过已有的学生信息库,管理学生的信息,还可以管理教师的信息,管理课程的信息,管理班级的信息;
(2)可以修改学生的信息,选择课程,检索成绩等;(3)修改教师的信息,检索学生的成绩,登记授课的学生情况。
可行性分析就是为了确定该系统从各个方面确定该系统在经济上、技术上、法律上的可否实现。
2.2可行性分析的内容
从技术可行性、资源分析、法律道德分析和效益分析来判分析一下学生信息管理系统能否实现。
2.3可行性分析过程
A.建议开发软件运行的最短寿命:
五年
B.B.进行系统方案选择比较的期限:
一周
C.C.经费来源和使用限制 :
经费来源由学校提供;使用时应定期维护,防止系统出现高漏洞而带来些复杂问题。
D.D.法律和政策方面的限制:
此软件设计合法,不存在于法律、政策相违背的现象。
E.E.硬件环境:
若干台计算机
F.F.工作站:
每个部门至少有一台作为工作站的PC机
G.G.操作系统:
windowswin7win8等操作系统
H.H.数据库:
SQLServer2005
2.3.2可行性研究方法
1、初步分析,构想所有必须完成的功能;
2、初步需求分析:
可行性分析报告、数据流图、数据字典、可行性分析报告;
3、建立系统原型:
修改规格说明;
4、管理员,教师,学生,完善模型,明确功能和实现方法;
5、系统的整体测试和修改完善。
2.3.3技术可行性
学生信息管理系统的开发需要对管理的需求进行分析,最终通过简单的界面按钮操作实现对学生数据的增、删、改和查询操作,并将这些操作反应到数据库的操作。
完成以上功能需要采用以下几个关键的技术:
(1)数据库数据显示技术
通过什么方式和形式把数据库中的学生数据显示到界面上供管理者查阅,目前的基本技术都是基于Sql语言的混合编程实现遍历数据库,对数据的提取,然后通过GUI编程在界面上显示。
目前的界面编程和Sql语言的混合编程已经比较成熟,比如用于界面编程的有C、Java、Qt、C++等等,并且他们基本都是开源的,不会存在侵权和成本的问题。
(2)数据库数据修改技术
对数据库的操作基本的还是离不开Sql语言的混合编程,主要是通过对按钮事件的捕捉,通过对应的Sql代码实现对数据库相关操作。
(3)系统在运行和维护面临的问题
系统在运行过程中,系统的用户主要是学校的信息管理人员,用户对系统使用的熟练程度会影响系统应用的效果,增加系统维护的压力。
这个问题可以通过一份简单的管理人员使用说明文档来解决。
在系统运行的初级阶段,可以由开发方的系统维护人员提供现场的使用指导。
系统维护面临的主要问题是系统存储的学生数据量比较大,数据备份和数据安全十分重要。
数据备份与恢复需要程序化、智能化。
由于数据涉及到学生个人信息秘密,数据备份与恢复工作需要有信息管理人员专职负责。
2.3.4 效益分析
1.经济效益分析
(1)提高管理者的工作效率后,使得信息管理人员需求的减少,减少了额外的开支。
(2)提高信息管理的便捷性,降低信息管理的要求。
2.社会效益分析
(1)节省了管理者的时间,降低了劳动输出量。
(2)提高了学校信息化程度的形象。
2.4可行性分析结果
通过分析,在学生信息管理中,使用计算机的网络技术,通讯技术和信息管理技术,使学生的信息得以加工,依次传达及保存。
系统要对使用要求不相同的用户群体设置不同的功能。
从必要性、技术、资源、时间、社会法律等几角度的分析,学生信息管理系统项目是可行的,是可以设计的。
第三章需求分析
3.1编写目的
为学生管理系统的开发提供可行性分析的结论,为项目是否正式立项、启动提供依据,为项目启动后的需求分析、设计、开发、测试等工作提供基础依据。
该系统的编写目的是提高学生成绩管理的工作效率,使人们从乏味的数据登记和统计工作中解脱出来,保证工作的准确率,为老师及同学提供充足的信息和快捷的查询手段。
数据库作为计算机应用的一部分,对学生成绩查询进行管理具有手工管理无法比拟的优点,例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长等。
这些优点能够极大地提高学生成绩查询和管理的效率。
学生管理系统在提高学生成信息处理的效率的同时,又能为广大师生提供及时准备的学生信息。
可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理。
同时,可以减少劳动力的使用,加快查询速度以及国家各部门关于信息化的步伐,使各项管理更加规范化,提高了传统教师的工作任务量。
学生管理系统的功能主要分为:
前台管理和后台管理两大功能。
3.2系统功能
学生管理系统的功能主要分为:
前台管理和后台管理两大功能。
●实现学生信息进入系统的自动化,提高学生信息统计的实时性,减轻人工劳动强度从而节省人力成本。
●实现学生信息查询的实时性,规避信息孤岛。
●提高学生信息的畅通度,为学生以及教师提供方便。
1)前台管理系统必须具备以下功能:
●信息的录入:
根据学校的特点制定相关功能,可以通过唯一的学号将学生信息录入,该功能可以充分保证各种电脑操作层次的人员均能通过学生管理系统快速的录入该学生,并为后续的功能提供技术上的支持。
●信息的删除:
根据学校的相关条律,将辍学或者劝退的学生的信息从学生管理系统中删除,该功能可以充分保证各种电脑操作层次的人员操作,同时也是达到系统空间的充分利用。
●信息的修改:
根据学生在校期间的表现,有些许挂科,重修的科目,都会实时性的进行更新,该功能必须充分保证各个电脑操作层次的人员都能进行操作,达到学生信息更改的迅速的效率。
●信息的查询:
在学生需要知道自己的信息时,可以通过学生管理系统,进行查询。
如:
成绩,课程表,报名等等。
2)后台管理系统必须具备以下功能:
●人员管理:
教师,学生,游客,管理员等基本信息的登记管理。
该功能将不同阶级的人分层,以便更好的管理,达到管理的高效率。
●权限管理:
各个人员的权限是不同的,教师可以登记学生成绩,学生可以浏览自己的信息或者修改一些基本信息,游客只能浏览信息,管理员可以修改各个信息。
该功能充分保证了信息的安全性。
●系统的操作人员需要进行一定的培养,不可盲目的修改,导致学生信息混乱。
●系统的运行的可靠性要求较高,必须保证信息不可轻易丢失,损害学生个人利益。
●系统必须可进行实时性处理,其效率比人工处理效率要高出70%。
信息录入:
信息录入系统能够准确的录入各种信息。
(1)关系图
(2)状态转换图
信息删除:
信息删除系统能够删除不再在学校的学生及教师信息。
(1)关系图
(2)状态转换图
信息修改:
信息修改系统能够根据学生的活动修改学生信息。
(1)关系图
(2)状态转换图
信息查询:
学生信息查询系统能够准确的查询某个学生的学生信息。
(1)关系图
(2)状态转换图
成员信息及权限管理:
用户进入POS系统界面,输入ID号码,检测是管理员,学生还是教师。
如果是管理员,则有增加、删除、修改、查询信息的功能;如果是学生,则有查询学生成绩、修改基本信息的功能;如果是教师,则有登记授课学生情况,查询学生成绩,修改教师信息的功能。
(1)关系图
(2)状态转换图
四、总体设计
4.1总体设计的目的
本系统采用面向对象方法进行分析和设计,在SQLServer2005数据库上实现数据操作。
使用纯面向对象的JAVA语言作为开发语言,使用Windows7作为开发平台,能够很好的实现系统的开发及测试。
通过这个阶段的设计将划分出组成《学生信息管理系统》的物理元素——程序、文件、数据库、人工过程和文档等,但是在这个过程中每个物理元素仍然处于黑盒子级。
同时还要在这个阶段设计软件的结构,也就是要确定系统中有那些模块组成,以及模块之间的关系。
4.2总体设计的内容
(1)设计并选取合适的实现《学生信息管理系统》的方法
(2)设计高效率的软件结构
(3)设计必要的数据库
(4)书写文档
(5)制定测试计划
4.3设计过程
(1)选取合理的方案
在SQL2005的基础上先建立一个学生数据库,然后用c++程序设计语言嵌套SQL语言设计一个合理的软件程序实现对学生数据库的管理。
最后要对操作界面进行优化,以及软件的操作流程和软件结构进行优化。
在后期我们还要配备专业的人士为此系统进行长期的管理和维护。
(2)推荐最佳的方案
省略
(3)功能分解
学生信息管理系统”主要分为登录、权限管理、学生信息管理、教师信息管理、课程信息管理、账户管理等6个模块。
系统主模块功能树如图所示:
权限管理(管理员)模块学生信息管理模块
教师信息管理模块课程信息管理模块
账户管理模块课程信息更新模块
学生信息更新模块教师信息更新模块
(4)设计软件结构
(5)设计数据库
概念结构设计就是E-R方法的分析与设计,概念结构设计是整个数据库设计的关键。
在此,将使用实体—联系(E-R)模型来描述系统的概念结构,同时设计出能够满足用户需求的的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
这也实体包括各种具体的实际信息,通过相互之间的作用形成数据的流动。
本程序根据上面的设计规划出的实体有:
学籍实体、班级实体、年级实体、课程实体与成绩实体,学生信息管理系统数据库E-R模型,如下图所示:
(5.1)数据库和数据表的建立
学生信息表
表名称标识:
Student表
数据来源:
新生信息录入模块进行录入
教师信息表
表名称标示:
teacher表
教师信息录入
课程信息表
表名标示:
course表
课程信息录入
学生课程信息表
表名称标识:
Student—course表
学生成绩录入表
教师-课程信息表
表名称标示:
teacher-course表
教师和所授课程信息
4.4总体设计的结果
通过本阶段的设计,得到一个较为合理的软件结构。
模块化分的合适,同时本结构有清晰的层次结构,各个层次的人士都能理解本软件的结构。
各个模块有较好的独立性,软件由一组完成相对独立的子功能的模块组成,这些模块之间接口的关系较为简单。
我们运用了自顶向下逐步求精方法。
同时我们运用在数据库设计方面的知识,对我们需要的数据库进行了设计。
设计步骤:
(1)概念设计
(2)逻辑设计(3)物理设计(4)数据库实施。
我们得到一个初步的学生信息关系系统的数据库。
五、编码实现
5.1编码实现的目的
编码是将软件设计结果翻译成用某种程序设计语言书写的程序,是对设计的进一步具体化。
编码为计算机中的数据与实际处理的信息之间建立联系,提高的。
编码风格是指编程遵循的基本原则。
良好的编码风格有利于弥补语言的缺陷,编写出高质量的软件。
包括程序内部的文档、数据说明、语句构造、输入/输出、效率等方面的问题。
选择一种编程语言的理论标准:
(这里选择Java)
1)有理想的模块化机制;
2)可读性好的控制结构和数据结构;
3)便于调试和提高软件可靠性;
4)编译程序发现程序错误的能力强;
5)有良好的独立编译机制。
5.2编码的工具
使用java编写程序,Eclipse
5.3编码过程
根据详细设计中的程序流程图分模块编写程序,然后再组装起来。
编码过程中涉及到的类:
SimpleStudentManager主函数类
DLFrame登陆界面类
ManagerFrane管理员界面类
StudentFrame学生界面类
SM学生信息管理的类
SAdd用于学生信息管理中增加或修改某条记录的界面的类
SSelect用于学生基本信息管理中查询时输入学号的界面的类
(1)登录界面模块:
学生信息管理系统可由管理员和学生两种身份的人使用。
管理员和学生身份登录所能操作的功能有很大的区别。
mportjavax.swing.*;
importjava.awt.*;
importjava.sql.*;
classDLFrameextendsJFrameimplementsActionListener,ItemListener{//登录界面
JPanelp1=null;
JPanelp2=null;
JPanelp3=null;
JLabeluserName=newJLabel("用户:
");
JTextFieldtxtUser=newJTextField();
JLabelpassword=newJLabel("密码:
");
JPasswordFieldtxtPwd=newJPasswordField(6);
JLabelrole=newJLabel("角色:
");
JComboBoxcbrole=newJComboBox();
JButtonbtnLogin=newJButton("登录");
JButtonbtncz=newJButton("重置");
JButtonbtnCancel=newJButton("取消");
JLabelimageLabel;
Iconimage;
staticintOK=1;
staticintCANCEL=0;
intactionCode=0;
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
intqxian=0;
publicDLFrame(){//构造方法
super("登录界面");
p1=newJPanel();
p2=newJPanel();
p3=newJPanel();
cbrole.addItem("管理员");
cbrole.addItem("学生");
image=newImageIcon("picture\\st.jpg");
imageLabel=newJLabel(image);
p1.add(imageLabel);
this.setLayout(newFlowLayout());
this.setBounds(100,100,246,345);
p2.setLayout(newGridLayout(4,2));
p2.add(userName);
p2.add(txtUser);
p2.add(password);
p2.add(txtPwd);
p2.add(role);
p2.add(cbrole);
p3.add(btnLogin);
p3.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);
}
publicvoidconnDB(){//连接数据库
try{
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
try{
con=DriverManager.getConnection(
"sa","123");
stmt=con.createStatement();
}catch(SQLExceptione){
e.printStackTrace();
}
}
publicvoidcloseDB()//关闭连接{
try{
stmt.close();
con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
publicvoiditemStateChanged(ItemEvente){
if(e.getStateChange()==ItemEvent.SELECTED){
JComboBoxjcb=(JComboBox)e.getSource();
qxian=jcb.getSelectedIndex();
}
}
publicvoidactionPerformed(ActionEvente){
Objectsource=e.getSource();
Stringun=null;
Stringpw=null;
booleansuccess=false;//用于判断是否登录成功
if(source==btnLogin){
if(txtUser.getText().equals("")||txtPwd.getText().equals("")){//判断是否输入了用户名和密码
JOptionPane.showMessageDialog(null,"登录名和密码不能为空!
");
}else{
this.connDB();
try{
rs=stmt.executeQuery("select*fromunpwwhereqx="
+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){
newManagerFrane();//进入管理员界面
}
if(qxian==1){
newStudentFrame();//进入学生界面
}
success=true;
break;
}else{
JOptionPane.showMessageDialog(null,"密码错误!
");
txtPwd.setText("");
success=true;
}
}
}
if(!
success){
JOptionPane.showMessageDialog(null,"登录名错误!
");
txtUser.setText("");
txtPwd.setText("");
}
}catch(SQLExceptione1){
e1.printStackTrace();
}
}
}elseif(source==btncz){
txtUser.setText("");
txtPwd.setText("");
}elseif(source==btnCancel){
System.exit(0);
}
}
}
(2)学生信息管理模块编码:
importjavax.swing.*;
importjava.awt.*;
importjava.sql.*;
classSAddextendsJFrameimplementsActionListener,ItemListener{//用于学生信息管理中增加或修改某条记录的界面
JLabellsno=newJLabel("学号:
");
JLabellsname=newJLabel("姓名:
");
JLabellssex=newJLabel("性别:
");
JLabellsage=newJLabel("年龄:
");
JLabellsdept=newJLabel("院系:
");
JTextFieldtsno=newJTextField(14);
JTextFieldtsname=newJTextField(14);
JComboBoxcbssex=newJComboBox();
JTextFieldtsage=newJTextField(14);
JComboBoxcbsdept=newJComboBox();
JButtonbtnOK=newJButton("确定");
JButtonbtnCancel=newJButton("取消");
JPanelp=newJPanel();
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
Stringxb="男";
Stringyx="计科系";
booleanisNewsm=true;