学生信息管理系统的设计与实现报告.docx
- 文档编号:9963351
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:32
- 大小:63.86KB
学生信息管理系统的设计与实现报告.docx
《学生信息管理系统的设计与实现报告.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统的设计与实现报告.docx(32页珍藏版)》请在冰豆网上搜索。
学生信息管理系统的设计与实现报告
软件工程课程设计
学生信息管理系统的设计与实现
学生信息管理系统的设计和实现
1引言
1.1背景
学生信息管理系统是为了适应现代化学校管理的需要,加快推进高校数字化校园建设、充分利用校园网,利用网络、多媒体等计算机应用技术和手段,提高办公效率、改善质量的高效管理信息系统。
学生信息管理系统是系科综合管理信息系统的重要组成部分,进行学生基本信息、扩充信息、成绩信息、在校的其它各种信息的集中电子化处理,实现主要系务业务流程的计算机管理,实现系科学生管理工作的自动化管理和公用信息在校园网上自动发布。
本文档为“学生信息管理系统的设计和实现”的说明书,主要用于为实现系统的功能而进行的系统详细设计说明,详细系统各软件组成模块的实现流程、功能、接口、编译、测试要点等内容,便于对系统的编码进行指导和约束。
本文档供项目组全体成员及项目组领导,单元测试人员阅读。
1.2目标
✧实现学生信息资料的集中化电子化处理;
✧实现学生成绩的电子化处理;
✧实现普通用户的前台多媒体自助查询功能,公用信息在校园网上自动发布;
✧实现学生管理工作制度化、标准化、规范化;
✧实现学生管理的其它必要的管理功能。
✧建立关于学生数据比较全面详细的数据库。
2需求分析
2.1系统需求
2.1.1性能要求
2.1.1.1时间特性要求
✧查询服务部分:
用户通过多媒体电脑提交命令到返回不超过5秒钟。
✧数据管理部分:
提交一笔录入到结果返回不超过5秒钟。
排课对资源不能满足排课要求时应首先予以提示,不能出现死循环无限等待。
2.1.1.2可扩充性要求
✧各种字典数据的编码要尽可能采用行业标准,自行编码也应合乎规范,征得相关业务部门认可;
✧数据库的设计应考虑可扩充性,以适应今后学校发展和系统升级的需要。
2.1.2运行环境
2.1.2.1软件环境
✧学生管理系统的设计与运行基于采用C/S网络应用环境运行于校园网上。
后台操作系统为MicrosoftWindows2000,数据库为MicrosoftSQLServer2000;Web服务器运行环境为WindowsNTServer(SP6),浏览器为IE4.0以上版本。
✧数据查询服务部分采用B/S网络应用环境。
2.1.2.2硬件环境
✧服务器端包括一台标准服务器(也可用性能较好的普通PC服务器,数据库服务器、WEB服务器也可运行在同一台服务器上)。
PC服务器要求CPU:
PIII600MHZ以上,内存容量大于或等于512M,硬盘容量大于或等于20G。
✧客户端包括多媒体电脑、PC客户机,要求多媒体电脑和PC客户机与上述PC服务器物理上连接畅通;
✧系科业务工作站桌面到校园网带宽要求至少为10M,保证连接畅快,最好有100M带宽。
2.2功能需求
进行学生基本信息、扩充信息、成绩信息、在校的其它各种信息的集中电子化处理,实现主要系务业务流程的计算机管理,实现系科学生管理工作的自动化管理和公用信息在校园网上自动发布。
整个涉及的工作主要包括:
新生录取报到处理、在校生基本管理、学生成绩处理与查询、学生社团组织管理、毕业生管理等方面,由此整个系统可划分为如下子系统/功能模块:
✧新生报到管理相关业务(系学生工作助理、辅导员等);
✧在校生基本管理相关业务(系辅导员、班主任等);
✧学生成绩汇总与查询相关业务(相关教师、教务干事);
✧党团组织管理相关业务(学生工作助理、辅导员等);
✧毕业生信息管理相关业务(系主任、学生工作助理、辅导员、教务干事等)
✧校友信息管理相关业务(系主任等)。
2.3业务流程图
本系统主要业务在学生管理办公室进行,但也有部分业务在校园内其他部门进行(如查询等),或在校园外远程进行(如网上公开信息发布、信息查询等),所以本系统应是一个分布式、规模可变的系统。
数据集中在一个数据库服务器上,处理可能分布到应用程序的各层上,借助于校园网,各业务人员无障碍地实现分工协作,公共完成目标任务。
根据系统总体目标及技术成熟型、一般企业流行的体系结构,学生管理系统采用分层体系结构,具体划分为三层:
表现层、业务层和数据层,如下图所示:
表现层
业务层
数据层
Windows
及其他
GUI
Web浏览器
DLLs
COM/DCOM
MTS
ActiveX/
ASP/CGI
文件
数据库
其他数据
图2-3.1业务流程图
1.表现层:
用户和系统进行交互地层次。
通过键盘、显示器、鼠标、打印机等进行人工交互。
提供校园网内/外任何时间地点的访问支持(校园内借助于校园网;校园外借助于拨号上网)。
①应用基于网页的解决方案:
即所谓的“瘦客户机”解决方案。
应用则借助于免费的浏览器如InternetExplore、NetScape等,仅需设计服务器端网页文件,勿需设计专用的前台的应用程序。
本解决方案主要应用于速度要求不高的简单场合,如一般的公共查询等。
②基于网络的EXE解决方案:
即所谓的“胖客户机”解决方案。
编写前台源程序,编译成目标代码(EXE)文件。
本方案是本系统的主要解决方案,完成各种数据管理、数据处理以及速度要求高的特殊查询。
工作平台选用WIN9X,开发工具选用Inprise公司的Delphi以及Microsoft公司的VisualFoxpro等。
2.业务层:
即事务逻辑层或中间层,完成事物处理规则和业务流程约束数据的处理。
考虑到本系统问题的规模以及复杂程度、难度等,本系统业务层应用MicrosoftIIS、FTP等完成业务层的功能。
3.数据层:
即数据资源管理层,本层完成数据资源等的插入、删除、更新修改等数据存储管理工作,还包括定义各种存储过程、数据约束等控制、触发器定义等。
更多的数据处理工作在“胖/瘦客户机”上进行。
在本系统中采用RDBMS来完成数据层功能,应用MicrosoftSQLServe来实现。
细化的系统结构图如下:
应用服务器
WEB服务器
客户机
数据库
应用服务器开发工具
应用服务程序
数据接口
WEB开发工具
CGI
ASP
ISAPI
NSAPI
WSAPI等
浏览器
请求
请求
数据
页面
Windows
及其他
GUI
数据
请求
图2-3.2细化的系统结构图
3总体设计
3.1基本设计概念和处理流程
本系统主要业务在学生管理办公室进行,但也有部分业务在校园内其他部门进行(如查询等),或在校园外远程进行(如网上公开信息发布、信息查询等),所以本系统应是一个分布式、规模可变的系统。
数据集中在一个数据库服务器上,处理可能分布到应用程序的各层上,借助于校园网,各业务人员无障碍地实现分工协作,公共完成目标任务。
3.2系统数据流程图
系统总体数据流见下图:
图3.2-1系统数据流程图
系统中所有数据都存放在数据库Server中,客户机中要保存的数据必须上传到Server,交给Server来处理、保存。
Server与各前台终端是通过企业网总线通信的,主要机制是TCP/IP和HTTP协议,对用户名和密码的传输要采用SSL或其它加密机制(默认为DES算法)。
Server和后台数据库通过ADO、JDBC、T3协议(Weblogic默认的通信协议)进行通信,某些重要信息(如帐户、密码等)需要进行加密(DES)。
3.3系统层次模块图
整个学生管理系统的结构可由以下图示来表明:
学生管理系统
系科综合信息管理系统
新生报到管理模块
在校生日常管理模块
组织社团管理模块
毕业生信息管理模块
学生成绩查询模块
其它功能
图3.3-1系统层次模块图
3.4模块设计
1.登陆数据库:
输入数据库服务器名(ServerIP)、用户账号()UserID、密码(PassWord);以账号DEP_Computer0、密码DEP_Computer0登陆数据库服务器,检索系统权限表,根据权限设置相应功能模块:
①无此用户或禁止权限
Enable:
=False;
②浏览权限
Enable:
=True;
修改UserID:
=Dep_Computer1;
修改PassWord:
=11;
③修改权限
Enable:
=True;
修改UserID:
=Dep_Computer2;
修改PassWord:
=2;
2.采用Win31下程序组、程序项的原理组织各执行模块:
登陆服务器
新生录取数据、入学报道管理
学生信息(在校)管理
学生社团管理
毕业生信息管理
学生成绩综合查询与统计
各程序组、程序项的显示分别可以是分层/树状/大图标/小图标等方式;各程序项或菜单项的名称命名为相应功能模块的目标代码文件名。
3.可执行功能模块的调用执行:
通过程序项或菜单项名称获取可执行目标代码文件名,应用API函数CreateProcess开始执行。
i:
=StartMenu.IndexOf(MenuItem);
j:
=StartMenu.Items[i].IndexOf(MenuItem);
caseStartMenu.Items[i].Items[j].Tagof
1:
allow:
='禁止';
2:
allow:
='浏览';
3:
allow:
='修改';
end;
ExecutableFileName:
=
Trim(StartMenu.Items[i].Items[j].Name)+'.exe'
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb:
=Sizeof(StartupInfo);
StartupInfo.dwFlags:
=STARTF_USESHOWWINDOW;
CreateProcess(PChar(ExecutableFileName),
'',
nil,
nil,
false,
CREATE_NEW_CONSOLEor
NORMAL_PRIORITY_CLASS,
nil,
'.\',
StartupInfo,
ProcessInfo);
4数据库设计
4.1数据库的逻辑设计
1.数据流字典
数据流名
组成
备注
招生数据流
详细参见全国网上招生系统的导出数据表
专业数据流
专业代码+专业名称+所属系科+学制+层次+备注
学生基本信息数据流
报考号+学号+姓名+性别+民族+政治面貌+籍贯+家庭通信地址+邮政编码+家长姓名+家长联系方式+考生类别+考生毕业类别+报考志愿一+报考志愿二+报考志愿三+幢号+寝室号+班级代码+年级+传呼+手机+电子邮箱+备注
“学号”在新生时为预分学号,下同
高考成绩数据流
详细参见全国网上招生系统的导出数据表
高考体检数据流
详细参见全国网上招生系统的导出数据表
班级数据流
班级代码+班级名称+系科+专业+层次+学制+年级+总人数+备注
寝室数据流
幢号+房间号+总床位数+有效床位数+电话号码+室长+备注
寝室安排数据流
学号+姓名+性别+寝室数据流
报到数据流
学号+姓名+性别+签到否+报到手续完成情况(组织关系、户口、饭卡、体检、缴费情况等)+备注
欠费数据流
学号+姓名+性别+专业名称+班级名称+欠费数额+备注
2.加工说明部分
(1)加工名称:
招生数据转入
激发条件:
招生工作完毕,新生数据下载到本地。
加工逻辑:
将新生基本数据、体检信息和成绩导入在籍学生数据库中,并分配临时学号。
(2)加工名称:
新生编班
激发条件:
新生数据基本入库。
加工逻辑:
将新生按专业进行分班,分班结果写回学生基本信息表中。
(3)加工名称:
新生寝室安排
激发条件:
新生数据入库
加工逻辑:
按学校分配的寝室可用资源,将新生分配到可用寝室里,提供手工修改功能,并将结果写加数据库。
(4)加工名称:
新生报到处理
激发条件:
新生到校后,现场报到
加工逻辑:
将新生报到情况记录在案,包括签到、组织关系转入否、户口交办否、体检完成否、饭卡、收费(欠费)情况等;以备进行欠费统计和报到统计。
(5)加工名称:
欠费统计
激发条件:
需要更新或查询新生的欠费情况
加工逻辑:
更新或查询报到情况表,可以统计学生的欠费情况。
(6)加工名称:
新生录取信息查询统计
激发条件:
新生数据入库后,需要查询与统计新生的各种参数,包括统计性别、籍贯、民族、政治面貌、投档志愿和成绩。
4.2数据库的配置
整个系务涉及的业务工作主要包括:
新生录取报到处理、在校生基本管理、学生成绩处理与查询、学生社团组织管理、毕业生管理等方面,由此整个系统可划分为如下子系统/功能模块:
✧新生报到管理相关业务(系学生工作助理、辅导员等);
✧在校生基本管理相关业务(系辅导员、班主任等);
✧学生成绩汇总与查询相关业务(相关教师、教务干事);
✧毕业生信息管理相关业务(系主任、学生工作助理、辅导员、教务干事等)
5详细设计
5.1.新生管理子系统
总体设计:
新生管理子系统包含新生录取信息的导入,新生预分学号,新生班级分配,新生寝室安排,新生报到管理,新生报到信息统计,新生欠费统计,新生分布信息,新生高考成绩分布等。
设计:
下面给出设计方案与实现方法。
新生基本信息管理
招生数据导入
报到预处理
新生报到
新生信息查询与统计
预分学号
班级编排
寝室安排
预处理查询
现场报到处理
欠费查询统计
报到情况统计
新生比例分布
高考成绩统计
功能:
①完成对新录取学生数据的导入
②完成对新生数据的报到预处理(初始化)
③实现新生报到现场完成,并统计报到情况
④统计新生的各种分布比例和成绩分布
设计:
①总体设计:
用Delphi的PageCtrl控件来实现各项菜单功能
②招生数据导入:
可以通过选择来指定全国网上录取系统的导出数据所在路径,并根据使用手册检查25个.dbf文件是否存在,来决定是否允许导入;在导入时采用记录的查重处理,所以,只能借助记录集的循环来完成;其中,对政治面貌与民族表要单独处理。
主要实现文件检查的代码:
functionCheckDBFile(varstrRst:
String):
boolean;
var
i,j:
integer;
blFound:
boolean;
begin
arrstrFileName[0]:
='t_tddw';arrstrFileName[1]:
='t_jhk';
//……此处对表名赋值
CheckDBFile:
=False;
blFound:
=True;i:
=0;
strRst:
='数据表';
while(i<25)do
beginj:
=DBFileListBox.Items.IndexOf(arrstrFileName[i]+'.dbf');
ifj=-1then//某个文件未找到,返回“假”
begin
blFound:
=False;
strRst:
=strRst+arrstrFileName[i]+'.dbf';
end;
i:
=i+1;
end;
strRst:
=strRst+'不存在!
';
ifblFoundthen//全部数据文件检查正确
CheckDBFile:
=True;
end;
③学号预处理:
将导入的数据从信息库表到在校生表,并根据考生的考号及其它信息填入其基本信息(如省份、入年年份等);基本处理思想是:
根据考生年份(报考号前两位)与当前系统数据库的绝对学期时间,筛选相应的考生信息,然后从这些信息中依次在学生基本信息表(JBXX2)中查询是否重复,来决定是否写入;如果写入,则根据报考号(第3、4位)的信息,写入考生所在省份代码。
④新生班级编排:
将分配学号的新生编排到指定班级中。
用两个DBGrid(可多选)分别将未分班学生和班级信息列出来,通过手工选中一个或多个学生,即可分配班级或从班级中取消分班。
实现DBGrid多选并在数据库中完成添加的代码:
withStuDBGrid.DataSource.DataSetdo
begin
fori:
=0tointSelStuCnt-1do
begin
GotoBookmark(pointer(StuDBGrid.SelectedRows.Items[i]));
strStuNo:
=Fields[0].AsString;
strSql:
='Updatejbxx2setBJID='+''''+strClasNo+'''';
strSql:
=strSql+'WhereXH='+''''+strStuNo+'''';
database.Execute(strSql);
end;
end;
……
寝室分配与班级编排可类似处理。
⑤新生现场报到:
对新生的报到程序进行计算机管理,自动检查该新生是否已到校,是否已完成所有报到手续,以及新生的欠费情况(只记载欠费,不记载缴费);并根据各项手续的完成,来确认新生的报到状态,为下一步查询提供足够信息。
此处关键在于如何把数据表中“0”和“1”状态标志以CheckBox的状态输出,代码如下:
读出:
……
ifADORegInfo.Activethen
begin
strState:
=ADORegInfo.FieldByName('SFQD').AsString;
ifstrState='1'then//是否签到
Reg1Check.Checked:
=true
else
Reg1Check.Checked:
=false;
strState:
=ADORegInfo.FieldByName('ZZGX').AsString;
ifstrState='1'then//组织关系
Reg2Check.Checked:
=true
else
Reg2Check.Checked:
=false;
strState:
=ADORegInfo.FieldByName('HKQY').AsString;
ifstrState='1'then//户口迁移
Reg3Check.Checked:
=true
else
Reg3Check.Checked:
=false;
strState:
=ADORegInfo.FieldByName('JCK').AsString;
ifstrState='1'then//就餐卡
Reg4Check.Checked:
=true
else
Reg4Check.Checked:
=false;
strState:
=ADORegInfo.FieldByName('TJ').AsString;
ifstrState='1'then//体检
Reg5Check.Checked:
=true
else
Reg5Check.Checked:
=false;
end;
……
写回数据库:
……
ADORegInfo.Edit;
ifReg1Check.Checkedthen
ADORegInfo.FieldByName('SFQD').AsString:
='1'
else
ADORegInfo.FieldByName('SFQD').AsString:
='0';
ifReg2Check.Checkedthen
ADORegInfo.FieldByName('ZZGX').AsString:
='1'
else
ADORegInfo.FieldByName('ZZGX').AsString:
='0';
ifReg3Check.Checkedthen
ADORegInfo.FieldByName('HKQY').AsString:
='1'
else
ADORegInfo.FieldByName('HKQY').AsString:
='0';
ifReg4Check.Checkedthen
ADORegInfo.FieldByName('JCK').AsString:
='1'
else
ADORegInfo.FieldByName('JCK').AsString:
='0';
ifReg5Check.Checkedthen
ADORegInfo.FieldByName('TJ').AsString:
='1'
else
ADORegInfo.FieldByName('TJ').AsString:
='0';
ADORegInfo.Post;
……
欠费查询可相应处理。
⑥报到情况统计:
可以按性别、专业、班级、省份等统计学生的报到情况,并以柱状图和表格显示;提供自由控制条件查询未报到学生信息。
统计功能实现代码如下:
……
CntBySexDBChar.Title.Text.Clear;//清除标题
CntBySexDBChar.Title.Text.Add('新生报到情况(按班级统计)');
CntBySexDBChar.Series[0].Clear;//清除图形
strSql:
='';
CntStrGrid.RowCount:
=ADOQFCntQuery.RecordCount+1;
fori:
=0to4do//设置StringGrid的标题
begin
CntStrGrid.Cols[i].Clear;
CntStrGrid.Cols[i].Add(titleName[i]);
end;
i:
=0;
RegSexTLbl.Lines.Clear;//清空统计显示
whilenotADOQFCntQuery.Eofdo
begin
intCntRegd[i]:
=ADOQFCntQuery.FieldByName('ClassRegdCnt').AsInteger;
CntBySexDBChar.Series[0].Add(intCntTot[i],inttostr(i)+'应到',clBlue);
CntBySexDBChar.Series[0].Add(intCntRegd[i],'到',clRed);
strSql:
=inttostr(i)+'['+trim(strClassName[i])+']报到比例:
';
strSql:
=strSql+floattostr(trunc(intCntRegd[i]/intCnttot[i]*10000)/100)+'%'+#13;
RegSexTLbl.Lines.Add(strSql);
CntStrGrid.Rows[i+1].Add(inttostr(i+1));
CntStrGrid.Rows[i+1].Add(strClassName[i]);
CntStrGrid.Rows[i+1].Add(inttostr(intCntTot[i]));
CntStrGrid.Rows[i+1].Add(inttostr(intCntRegd[i]));
CntStrGrid.Rows[i+1].Add(floattostr(trunc(intCntRegd[i]/intCnttot[i]*10000)/100)+'%');
i:
=i+1;
ADOQFCntQuery.Next;//下一个班
end;
……
⑦新生分布情况统计:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 设计 实现 报告