《软件工程课程设计报告2——正文-华北电力大学-宋雨.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计报告2——正文-华北电力大学-宋雨.docx(136页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date软件工程课程设计报告2正文-华北电力大学-宋雨软件工程课程设计报告2正文-华北电力大学-宋雨一、课程设计(综合实验)的目的与要求1.通过该课程设计要使学生树立起强烈的工程化意识,用工程化思想和方法开发软件。切实体会出用软件工程的方法开发系统与一般程序设计方法的不同之处,学生在对所开发的系统进行软件计划、需求分析、设计的基础上,实现并测试实际开发的系统。通过一系列规范化
2、软件文档的编写和系统实现,使学生具备实际软件项目分析、设计、实现和测试的基本能力;2至少提交4个文档,包括软件计划、软件需求规格说明书、软件设计说明书、软件测试计划,要求文档格式规范、逻辑性强(可参考计算机综合实践指导中给出的要求及格式)、图表规范; 3独自实现了系统的某些功能,基本达到了要求的性能,经过测试,基本能运行。二、设计(实验)正文1.引言1.1.系统开发的背景、目的和意义1.1.1.系统开发的背景当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率
3、,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。管理信息系统是进行信息的采集、存储、加工、维护和使用的系统。它是随着管理科学和技术科学的发展而形成的。学生档案管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进
4、入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管理软件成为很有必要的事情,学生学籍管理系统提供了强大的学生成绩管理管理功能,方便管理员对学生学籍等信息的添加.修改.删除.查询.汇总.统计等操作。更适合大型数据库的管理。1.1.2.系统开发的目的和意义由于将数据录入FoxPro的工作是学校工作人员直接对FoxPro数据库的操
5、作,而随着各学校的合并后的人数的变化导致了管理的复杂性,所以一些学校就自己开发了学生信息管理系统,这就是最初的学生管理信息系统。这种初级的学生管理信息系统的主要功能是:为学校管理工作人员输入大量数据提供一个操作简单、使用方便的友好界面;在已有的数据中作简单的查询和统计。1.2系统开发的工具和环境1.2.1 Visual Studio 2010概述Visual Studio.2010是.NET平台下最为强大的开发工具,无论是软件服务商,还是企业应用程序的部署与发布,Visual Studio.NET都可以提供近乎完美的解决方案。VisuaStudio.2010提供了包括设计、编码、编译调试、数据
6、库连接操作等基本功能和基于开放架构的服务器组件开发平台、企业开发工具和应用程序重新发布工具以及性能评测报告等高级功能。1.2.2 C# 简介C#是一种先进,面向对象的语言,通过C#可以让开发人员快速的建立大范围的基于MS网络平台的应用,并且提供大量的开发工具和服务帮助开发人员开发基于计算和通信的各种应用。由于C#是一种面向对象的开发语言,所以C#可以大范围的适用于高层商业应用和底层系统的开发。即使是通过简单的C#构造也可以使各种组件方便的转变为基于WEB的应用,并且能够通过Internet被各种系统或是其他开发语言所开发的应用程序调用。1.2.3 ASP简介 ASP是Active Server
7、 Page的缩写,意为“动态服务器页面”。ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.asp,现在常用于各种动态网站中。 ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或Web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的web应用程序。1.2.4 Server SQL Microsoft简介Microsoft SQL Server 2008是一个高性能的客户端/
8、服务器结构的关系数据库管理系统(RDBMS,Relational Database Management System)。SQL Server 2008是为了支持高容量的事务处理(比如在线订购录入、存货目录、记帐或制造)以及数据仓库和决策支持系统(比如销售分析应用)而设计的。它运行在Microsoft Windows NT4或Microsoft Windows 20008 Server上基于intel处理器的网络。可以把SQL Server 2008作为一种个人桌面数据库系统安装在运行Window NT Workstation 4、Windows 2008 Professional、Windo
9、ws98和Windows Millennium Edition(Me)的机器上。2.系统分析与设计2.1系统的需求分析和可行性分析2.1.1系统的需求分析学生学籍管理系统是基于学校的工作需求而设定,围绕这一明确的工作需求,根据高校人员结构分析,在项目开发前期的需求分析工程中,学生学籍管理系统的应用应包括系统设置、学生信息管理、学生成绩管理以及系统说明等部分。系统应具有学生学籍信息输入、删除和修改的功能,学生成绩信息亦是如此。系统的查询功能应较为完备,不同的用户将登录到不同的主界面,进行不同的界面操作功能。能方便快捷地进行相应数据的简单查询和任意字段组合的复合查询,改变以前只有专门人员才能进行数
10、据查询的情况。系统应有学生数据安全保密措施,由于身份不同将登录到不同的主界面,高级的用户可以操作低级用户的信息,而低级用户之间互不能操作,保持了信息的安全性。但在需要时可由系统维护人员通过添加用户并授权来设置相应权限。在系统程序设计中应充分利用数据库服务器的处理能力,降低网络通信量,尽可能减少数据修改冲突,以最大程度地提高系统的执行速度和可靠性,真正起到提高工作效率的作用。2.1.2可行性分析系统可行性主要包括3个方面:技术上的可行性、经济上的可行性和管理上的可行性。a、系统在技术上无论是硬件性能要求(包括外围设备),还是软件性能要求(包括Win2000操作系统、Winxp操作系统、Power
11、builder、SQL server,程序设计,软件开发工具),均可行。b、从开发项目的成本与效益来看,系统开发的设备费用、运行费用、培训费用并不大,而通过系统的实施,一方面,提高了工作效率,将带来更多的经济效益;另一方面,系统所产生的间接效益也不容忽视。工作效率的提高可以节省人力资源,减轻了有关业务人员手工处理的工作负担,及时提供决策信息,促进业务的规范化、系统化、条理化和程序化。c、科学的管理是建立管理信息系统的前提。管理人员支持本系统的研发运行,相应的管理制度改革的时机已经成熟,规章制度已经齐全,原始数据正确。随着时代的发展,人员素质已经逐步提高,不论是对于电脑系统的基本操作还是对于系统
12、的维护都有了一定的基础。同时还可以配置专业的电脑维护人员来维护电脑,不必担心电脑故障问题。2.2学籍管理需求分析2.2.1.系统登录学籍管理系统系统登录模块,面对的用户是系统管理员、教师以及学生。主要功能是:(1)系统分三种登录模式,各模式登录成功后将进入不同的主界面。(2)教师登录需使用教师姓名和教师的工号,学生登录需使用学生姓名和学号。2.2.2.信息管理学籍管理系统信息管理模块,主要面对的用户是学校的管理人员。其主要职责:(1)学生信息的录入。学生在入校后,学校将为每一位学生分配一个学号,根据学生所属系部,所选专业给学生分配班级,学校将根据学生的学号和姓名将学生的所有信息录入学生学籍管理
13、系统,以便对学生进行统一管理。(2)学生信息的查询。系统管理员、教师以及学生本人都可以进行信息查询,获取学生信息;对于学生而言,学生需提供学号和姓名进行查询,目的是为了避免除学生本身以外的其他学生盗取信息,进行非法行为。(3)学生信息的修改。此模块只有系统管理员和教师可以操作,学生没有权限。2.2.3.成绩管理学籍管理系统成绩管理模块,主要面对的用户是系统管理员和教师,学生只有查询信息的功能。其主要职责是:(1)成绩录入。每个学生在考试后都有一个成绩,教师根据每个人的考试结果,将成绩录入成绩管理中,以便学生查询和期末汇总。(2)成绩查询。管理员、教师和学生都可以通过此模块查询成绩,教师可以查询
14、整个班级的学生成绩,但学生只能查询自己的成绩。(3)成绩修改。如有学生成绩录入出错时,教师可找到学生成绩信息,并进行修改。2.2.4.系统说明学籍管理系统系统说明模块,主要对本系统进行说明,方便用户操作使用。2.2.5.注销管理学籍管理系统注销管理模块,主要功能是:(1)注销用户。用户需要更换登陆用户时,可通过注销,重新从登陆界面登陆到系统。(2)关闭。退出整个应用系统。3.数据库设计3.1数据库概念结构设计本系统采用了E-R图的方法进行数据库概念结构设计。E-R图是描述数据库实体关系的一种直观工具。这种图中有:实体。用方框表示。方框内为实体的名称。实体的各种属性。用椭圆表示,椭圆内为属性名称
15、。使用线段将其和相应的实体连接起来。实体之间的关系。用菱形表示,菱形内为联系的名称。实体和实体之间的联系较多,比较常见的联系有1:1,1:N和M:N这三种。根据对人事管理信息系统情况的掌握,绘制了相应的E-R图。由于数据库中的信息太多,只取部分示例:用户名问题答案登录编号管理员1、 管理员登录信息表答案问题用户名登录编号教师2、 教师登录信息表答案问题用户名登录学号学生3、 学生登录信息表出生性别姓名籍贯班级编号学号学生信息4、 学生信息表班级名称班级编号专业编号班级信息5、 班级信息表专业编号系部编号专业名称专业信息6、 专业信息表系部编号系部名称系部信息7、 系部信息表专业编号课程编号课程
16、名称学分学时课程类别课程信息8、 课程信息表学号课程编号考试成绩作业成绩平时成绩课程信息最后得分9、 成绩信息表3.2数据库逻辑结构设计概念结构是独立于实际数据模型的信息结构,必须将其转化为逻辑结构后才能进行数据库应用设计。也就是要将概念上的结构转化为数据库系统所支持的实际数据模型。第一种转化是将实体转化为关系表。这种转化较简单,需要将实体的属性定义为表的属性即可。第二种转化时联系的转化。即将各个实体之间的联系转化为表格之间的关系,如外部键的定义。在系统分析及数据库概念结构设计的基础上,将系统E-R图转换成关系模型的逻辑结构,并根据选用的数据库管理系统SQL Server作了适当的修改,同时考
17、虑到学生学籍管理系统的实际情况,在上面工作的基础上归纳出学籍管理数据库表格的组成、列的属性、表格之间的联系等待,得到了如下的关系数据库表。同时该数据库系统具有以下方面的特点:结构合理,对一个学生建立多条记录。所建立的数据冗余度小,独立性强。建档、修改、查询、统计快而准确。保密性好、可靠性好。(1)管理员登录信息表,表名为T_Administrator_user,主键为Num。字段名 字段类型 能否为空 含义Id int not null 编号Num char(9) not null 管理员工号Name nvarchar(50) not null 管理员名称Question nvarchar(5
18、0) null 问题Answer nvarchar(50) null 答案(2)学生登录信息表,表名为T_Student_user,主键为Num。字段名 字段类型 能否为空 含义Id int not null 编号Num char(9) not null 学号Name nvarchar(50) not null 学生姓名Question nvarchar(50) null 问题Answer nvarchar(50) null 答案(3)教师登录信息表,表名为T_Teacher_user,主键为Num。字段名 字段类型 能否为空 含义Id int not null 编号Num char(9) n
19、ot null 教师工号Name nvarchar(50) not null 教师姓名Question nvarchar(50) null 问题Answer nvarchar(50) null 答案(4)学生信息表,表名为T_Student,主键为Num。字段名 字段类型 能否为空 含义Num char(9) not null 学号Name nvarchar(8) not null 姓名Sex nchar(2) null 性别Birthday smalldatetime null 出生Address nvarchar(100) null 籍贯 classID char(10) null 班级编
20、号 (5)班级信息表,表名为T_Class,主键为classID。字段名 字段类型 能否为空 含义classID char(10) not null 班级编号className nvarchar(50) null 班级名称majorID char(10) null 专业编号(6)专业信息表,表名为T_Major,主键为majorID。字段名 字段类型 能否为空 含义majorID char(10) not null 专业编号majorName nvarchar(50) null 专业名称departmentID char(10) null 系部编号(7)系部信息表,表名为T_Departmen
21、t,主键为departmentID。字段名 字段类型 能否为空 含义departmentID char(10) not null 系部编号departmentName nvarchar(50) null 系部名称(8)课程信息表,表名为T_Course,主键为CourseID。字段名 字段类型 能否为空 含义CourseID char(5) not null 课程编号CourseName nvarchar(50) not null 课程名称Category char(10) null 课程类别Period smallint null 学时Credit tinyint null 学分majorI
22、D nchar(10) null 专业编号(9)成绩信息表,表名为T_Grade,主键为Num和CourseID。字段名 字段类型 能否为空 含义Num char(10) not null 学号CourseID char(5) not null 课程编号DailyGrade decimal(5, 1) null 平时成绩PracticeGrade decimal(5, 1) null 作业成绩TestGrade decimal(5, 1) null 考试成绩Grade decimal(5, 1) null 最终得分4.系统设计4.1.登录窗口的设计登录窗口放置了三个label、两个TextBo
23、x、一个ComboBox和两个Button,其中TextBox是用来接收用户键入的用户名和密码,ComboBox是用来选择登录身份,通过按钮“登陆”执行代码,通过查询后台数据库信息,查出是否有此用户,从而决定用户是否被允许进入主系统,通过按钮“退出”执行代码退出真个系统。如图:管理员登录账户和密码都是admin,教师登录账户和密码都是teacher。实现代码如下:public static string Num; public static string Person; private void btnLogin_Click(object sender, EventArgs e) string
24、 Name = txtUserName.Text.Trim(); Num = txtUserPwd.Text.Trim(); string sql=; switch (cbPerson.SelectedIndex) case 0: Person = cbPerson.Text; sql = select * from T_Administrator_user where Num= + Num + ; break; case 1: Person = cbPerson.Text; sql = select * from T_Teacher_user where Num= + Num + ; bre
25、ak; case 2: Person = cbPerson.Text; sql = select * from T_Student_user where Num= + Num + ; break; SqlDataReader sdr = dataOperate.getRow(sql); if (sdr.Read() if (Name = sdrName.ToString() txtUserPwd.Text = ; this.Visible = false; if (Person = Administrator | Person = Teacher) AdminTeacherManagement
26、System atms = new AdminTeacherManagementSystem(); atms.Show(); if (Person = Student) StudentManagementSystem x = new StudentManagementSystem(); x.Show(); else MessageBox.Show(用户名错误,请重新输入!); else MessageBox.Show(对不起,用户不存在!); return; private void btnExit_Click(object sender, EventArgs e) Application.E
27、xit(); /注册 private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) AddUser Add = new AddUser(); Add.Show(); 4.2.建立应用程序主窗口本系统的主窗口如图:系统主界面4.3.菜单的设计系统设置面删除用户添加用户信息管理信息录入信息查询成绩查询成绩录入成绩管理成绩修改信息修改关闭注销注销系统说明4.4.删除用户界面的设计删除用户窗口界面如图:页面加载时,通过访问数据库,加载学生姓名信息并绑定到学生姓名;由于考虑重名的问题,可通过姓名查询
28、学生的学号,再根据学号查寻具体学生的信息;通过删除按钮,用户可删除当前用户的信息。实现代码如下:private SqlConnection con; private SqlDataAdapter sdapt; private DataSet ds,ds1; private void DeleteUser_Load(object sender, EventArgs e) /加载系部信息 string sql = select * from T_Department; ds1 = dataOperate.getDataSet(sql,T_Department); cbDepartment.Data
29、Source = ds1.Tables0; cbDepartment.DisplayMember = departmentName; private void btnLeftAll_Click(object sender, EventArgs e) this.BindingContextds, T_Student.Position = 0; btnLeftAll.Enabled = false; btnLeft.Enabled = false; btnRight.Enabled = true; btnRightAll.Enabled = true; private void btnLeft_C
30、lick(object sender, EventArgs e) if (this.BindingContextds, T_Student.Position 0) this.BindingContextds, T_Student.Position-; if (this.BindingContextds, T_Student.Position = 0) btnLeftAll.Enabled = false; btnLeft.Enabled = false; btnRight.Enabled = true; btnRightAll.Enabled = true; private void btnR
31、ight_Click(object sender, EventArgs e) if (this.BindingContextds, T_Student.Position this.BindingContextds, T_Student.Count - 1) this.BindingContextds, T_Student.Position+; if (this.BindingContextds, T_Student.Position = this.BindingContextds, T_Student.Count - 1) btnRight.Enabled = false; btnRightA
32、ll.Enabled = false; btnLeft.Enabled = true; btnLeftAll.Enabled = true; private void btnRightAll_Click(object sender, EventArgs e) this.BindingContextds, T_Student.Position = this.BindingContextds, T_Student.Count - 1; btnLeft.Enabled = true; btnLeftAll.Enabled = true; btnRight.Enabled = false; btnRi
33、ghtAll.Enabled = false; private void btnDelete_Click(object sender, EventArgs e) /删除学生账户信息 int i= this.BindingContextds, T_Student.Position; string Num = ds.TablesT_Student.Rowsi0.ToString(); string sql = delete from T_Student_user where Num= + Num + ; bool flag = dataOperate.execSQL(sql); if (flag)
34、 /删除T_Student表中的数据 sql = delete from T_Student where Num=+Num+; bool flag1 = dataOperate.execSQL(sql); if (flag1) MessageBox.Show(删除成功!); getInfo(); else MessageBox.Show(删除用户信息失败!); return; /int rowID = this.BindingContextds, T_Student.Position; /ds.TablesT_Student.RowsrowID.Delete(); /sdapt.Update(
35、ds, T_Student); /this.BindingContextds, T_Student.Position = 0; /btnLeft.Enabled = false; /btnLeftAll.Enabled = false; /btnRight.Enabled = true; /btnRightAll.Enabled = true; else MessageBox.Show(删除用户账户失败!); return; private void btnClose_Click(object sender, EventArgs e) this.Close(); private void cbDepartment_SelectedIndexChanged(object sender, EventArgs e) string sql = select mr.majorName from T_Major as mr,T_Department as dt where dt.departmentName= + cbDepartment.Text + and mr.departmentID=dt.departmentID; ds1 = dataOperate.getDataSet(sql, T_Major); cbMajo