教师管理信息系统的设计与实现正文.docx
《教师管理信息系统的设计与实现正文.docx》由会员分享,可在线阅读,更多相关《教师管理信息系统的设计与实现正文.docx(13页珍藏版)》请在冰豆网上搜索。
教师管理信息系统的设计与实现正文
教师管理信息系统的设计与实现
1.问题描述
根据自己所掌握的编程语言,利用软件工程的方法来设计并实现一个教师信息管理系统。
2.需求分析
教师信息管理系统的使用者将有两种,一个是管理员,另一个是教师。
对管理员来说,可以对教师信息进行增加、删除、修改和查询操作;对教师来说,可以修改部分个人信息,可以查询本月工资,设置工资卡号,能对自己的论文进行上传、删除、预览和修改操作,并能预览其他教师的上传的论文。
3.系统设计
3.1用例模型描述
教师信息管理系统的用例模型如图3.1。
业务主角有两个,分别是教师和管理员。
与教师相关的用例有:
修改个人信息、管理学术论文、设置工资卡号和计算当月工资,验证登陆信息作为其他用例的包含用例而存在。
与管理员相关的用例有:
录入教师信息、查询教师信息、删除教师信息和管理用户职务,其中删除教师信息和管理用户职务作为查询教师信息的拓展用例出现,验证登陆信息已查询教师信息和录入教师信息的包含用例存在。
图3.1用例图
3.2分析类图描述
教师信息管理系统的分析类图如图3.2。
教师信息管理系统的分析类图由3个边界类、3个控制类和2个实体类组成。
其中边界类包括:
登陆界面页(LoginForm)、管理员页(AdministratorForm)和教师页(TeacherForm)。
控制类包括:
登陆验证(IdentifyControl)、教师功能控制(TeacherControl)和管理员功能控制(AdministratorControl)。
实体类包括:
教师信息类(Teacher)和论文信息类(Thesis)。
图3.2分析类图
3.3设计类图描述
教师信息管理系统的设计类图如图3.3
图3.3设计类图
设计类图包括三个:
管理员类(Admin):
用于存储管理员的登陆信息。
教师类(Teacher):
用于存储教师的登录信息和个人信息。
论文类(Thesis):
用于存储论文的相关信息。
3.4上传论文顺序图
上传论文顺序图如图3.4。
图3.4顺序图
在该顺序图中,具体说明如下:
●首先由教师调用登陆界面(loginform)的Login()方法,表示输入登陆信息;
●然后由loginform调用登录信息验证程序(identify)的Identify()方法,表示验证登陆信息;
●验证成功后,由identify新建一个教师操作界面(teacherform)与教师进行交互;
●教师调用teacherform的论文管理功能(ManageThesis()方法),选择论文上传功能,由teacherform激活教师功能管理模块(teachercontrol)的论文管理模块,再调用的upload()方法;
●若上传成功,由teachercontrol给teacherform返回OK信息,再由teacherform给教师返回上传成功(OK)的提示。
3.5论文实体状态图
在教师信息管理系统中,需要建立状态图的实体对象并不多,图3.5是论文实体的状态图。
图3.5论文实体状态图
论文实体有4个状态,分别是:
本地存储状态、服务器存储状态、浏览状态和修改状态。
初始状态是本地存储状态,终止状态有两个:
本地存储状态和服务器存储状态。
从本地存储状态开始,可以不经过任何事件驱动,直接进入终止状态,即它本身。
也可以在上传事件的驱动下进入服务器存储状态。
服务器存储状态在预览事件的驱动下进入预览状态,关闭预览后回到服务器存储状态。
服务器存储状态也可以在修改事件的驱动下进入修改状态,修改完毕后返回服务器存储状态。
服务器存储状态也可以在删除事件的驱动下回到本地存储状态。
3.6教师信息管理系统组件图
如3.6给出了教师信息管理系统的组件图。
教师信息管理系统由6大模块组成,分别是登陆验证模块、管理员界面、教师界面、管理员功能模块、普通教师功能模块、后台数据库模块。
管理员界面依赖管理员功能模块,教师界面依赖普通教师功能模块;登录验证模块、管理员功能模块、普通教师功能模块都依赖后台数据库模块。
图3.6
3.7数据库设计
采用实体——联系方法来设计数据库,ER图如图3.7所示。
图3.7
ER图中包含两个实体和一个关系:
论文和教师,以及教师与论文之间的管理关系。
论文的属性包含:
编号、题目、作者、作者工号、路径。
教师的属性包括:
年龄、性别、姓名、工号、密码、职称、职务、工资卡号、当前任教课程总学分。
管理关系不包含任何属性,它是教师与论文之间的一对多关系。
由ER图可以得到两张表,其中管理关系插入到Thesis表中。
图3.8是Thesis表,表示论文信息;图3.9是Teacher表,表示教师信息。
图3.8Thesis表
图3.9Teacher表
Thesis表的ID表示编号,是该表的主键。
TeacherID表示作者工号,是该表懂的外键,用来体现管理关系。
Teacher表的ID表示工号,是该表的主键。
3.8输入设计和输出设计
输入设计包括下述三种:
●输入文本:
允许用户用键盘输入文本字符。
●选择选项:
允许用户从系统提供的选项中选择需要的选项。
●选择文件:
允许用户选择本地存储的文件交予系统处理。
输出设计包括下述三种:
●普通文本:
通过普通文本字符的形式输出所需的信息或提示。
●记录形式:
通过记录的形式将关联信息一并显示。
●弹出窗口:
通过弹出窗口的形式输出所需的信息或提示。
3.9用户界面设计
用户界面主要是以窗口和页的方式来呈现,让用户可以进行简单方便的可视化操作。
登陆界面如图3.10,包含登陆验证所需的所有信息和提示。
管理员界面(图3.11)和教师界面(图3.12)相似,都是以左边部分导航,右边部分显示内容的方式来组织。
图3.10登陆界面
图3.11管理员界面
图3.12教师界面
3.10处理过程设计
处理过程主要由用户与前台界面进行交互,通过用户点击按钮、选择记录等操作触发一系列的事件来调用后台的函数及数据库操作。
4.系统测试
4.1测试方法
教师信息管理系统中最重要的功能就是对教师信息进行增加、删除、修改和查询,故对系统进行的进行黑盒测试,对以上4项功能,设计下述测试用例进行重点测试。
测试编号
前置条件
测试操作
测试目的
预期结果
1
1.管理员身份登陆系统;
2.系统不存在工号为001的教师信息。
添加工号为001的教师信息。
在系统不存在某教师信息的情况下,管理员是否可以添加该教师信息。
系统提示添加成功“添加成功”。
2
1.管理员身份登陆系统;
2.系统存在工号为工001的教师信息。
添加工号为001的教师信息。
系统存在某教师信息的情况下,管理员是否可以添加该教师信息。
系统提示“不能重复添加工号相同的教师信息”。
3
1.管理员身份登陆系统;
2.系统存在工号为001的教师信息。
查询工号为001的教师信息。
在系统存在某教师信息的情况下,管理员是否可以查询到该教师信息。
系统显示出工号为001的教师信息。
4
1.管理员身份登陆系统;
2.系统不存在工号为001的教师信息。
查询工号为001的教师信息。
在系统不存在某教师信息的情况下,管理员是否可以查询到该教师信息
系统提示“不存在工号为001的教师信息”。
5
1.管理员身份登陆系统;
2.系统存在工号为001的教师信息。
删除工号为001的教师信息。
在系统存在某教师信息的情况下,管理员是否可以删除该教师信息。
系统提示“删除成功”。
6
1.管理员身份登陆系统;
2.系统存在工号为001的教师信息。
修改工号为001的教师信息。
在系统存在某教师信息的情况下,管理员是否可以修改该教师信息。
管理员可以修改该教师信息。
7
教师身份登陆系统;
修改教师个人信息。
在教师成功登陆系统的情况下,教师是否可以修改自己的个人信息。
教师可以修改自己的个人信息。
4.2测试结果
测试结果如下表所示:
测试编号
测试结果
1
系统提示添加成功“添加成功”。
2
系统提示“不能重复添加工号相同的教师信息”。
3
系统显示出工号为001的教师信息。
4
系统提示“不存在工号为001的教师信息”。
5
系统提示“删除成功”。
6
管理员可以修改该教师信息。
7
教师可以修改自己的个人信息。
5.设计特点、不足和收获
5.1设计特点
●本次设计采用WPF(WindowsPresentationFoundation)技术,进行可视化系统设计,使用户体验比较好。
采用窗体和页面相结合的方法,实现了“左边部分导航,右边部分显示内容”的显示效果,而不是一味地新建窗口和关闭窗口。
前台采用XAML(eXtensibleApplicationMarkupLanguage)来编写,可以方便地进行控件布局。
后台采用C#来编写,采用面向对象的编程方法,使程序的可拓展性大大增强。
●本次设计中,程序与数据库的交互是采用LINQToEntity技术,把整个数据库和表都看成对象来操作,对数据库的操作变成了简单的属性修改和方法调用,没有使用任何SQL语句代码,极大地降低了开发难度和语句编写错误率,减少了调试和测试的工作量,提高了开发速度。
5.2设计不足
●在需求阶段没有好好地了解业务流程,致使在编程实现时出现反复迭代的过程比较多,浪费了不少时间。
●个人觉得信息管理系统最好的编程模式应该是B/S模式,但由于个人技术原因,只能使用C/S模式,采用窗口和页相结合的方式来尽量弥补用户体验的不足。
●由于对WPF编程不是十分熟悉,因此在做前台设计时,布局掌握得不够,只能限制窗体和页的大小不能被改变来维持前台的美观。
5.3设计收获
●再次熟悉了WPF编程,学会了窗口和页相结合的设计方法,得到更好的用户体验。
学会了如何利用Brush来得到丰富多彩颜色,使整个画面更丰富。
●学会了在窗口内部实现页的导航,Window是不支持页的导航的,要实现页导航,必须使用NavigationWindow或Frame作为页的父容器。
Page的父容器只能是Window和Frame,所以Page内部是不能直接包含Page的。
但Page内部可以包含Frame,所以通过Frame就可以实现Page内包含Page的需求了。
这个技术十分有用,在“一窗多页”的设计办法中扮演了非常重要的觉得。
●为了给系统建模,再次复习了UML的知识,对UML的理解再次加深。
体会到模型在系统设计中扮演的重要角色。
一个好的模型不仅恰到好处的反映了用户的需求,而且会给后续编程提供方向指导,避免了“无奈翻工”的尴尬。
●学会了一种新技术LINQToEntity来实现程序与数据库的交互,非常方便,而且不容易出错。