《学生信息管理系统的设计与实现报告.doc》由会员分享,可在线阅读,更多相关《学生信息管理系统的设计与实现报告.doc(15页珍藏版)》请在三一办公上搜索。
1、管理信息系统课程设计报告 题 目 学生信息管理系统 学生姓名 缪 惠 学 号 200717020203 专业班级 信息管理与信息系统 指导老师 方霞老师 设计日期 指导老师评阅意见:评阅成绩: 签名:目 录1 详细设计31.1. 新生管理子系统31.2 毕业生管理子模块81.3 教学评价打分121.4学生成绩网上查询132 系统维护和改进142.1 运行维护142.1.1运行模块组合142.1.2运行控制142.1.3运行时间142.1.4人工处理过程142.2 系统的改进与提高14需求分析(含业务流程图,数据流程图,E-R图等)概要设计(模块划分等)1 详细设计1.1. 新生管理子系统总体设
2、计:新生管理子系统包含新生录取信息的导入,新生预分学号,新生班级分配,新生寝室安排,新生报到管理,新生报到信息统计,新生欠费统计,新生分布信息,新生高考成绩分布等。设计:下面给出设计方案与实现方法。新生基本信息管理招生数据导入报到预处理新生报到新生信息查询与统计预分学号班级编排寝室安排预处理查询现场报到处理欠费查询统计报到情况统计新生比例分布高考成绩统计功能:完成对新录取学生数据的导入 完成对新生数据的报到预处理(初始化)实现新生报到现场完成,并统计报到情况统计新生的各种分布比例和成绩分布 设计:总体设计:用Delphi的PageCtrl控件来实现各项菜单功能招生数据导入:可以通过选择来指定全
3、国网上录取系统的导出数据所在路径,并根据使用手册检查21个.dbf文件是否存在,来决定是否允许导入;在导入时采用记录的查重处理,所以,只能借助记录集的循环来完成;其中,对政治面貌与民族表要单独处理。主要实现文件检查的代码:function CheckDBFile(var strRst:String):boolean;var i,j:integer; blFound:boolean;begin arrstrFileName0:=t_tddw;arrstrFileName1:=t_jhk; /此处对表名赋值 CheckDBFile:=False; blFound:=True;i:=0; strRs
4、t:=数据表; while (i21)do begin j:=DBFileListBox.Items.IndexOf(arrstrFileNamei+.dbf); if j=-1 then/某个文件未找到,返回“假” begin blFound:=False; strRst:=strRst+arrstrFileNamei+.dbf ; end; i:=i+1; end; strRst:=strRst+不存在!; if blFound then /全部数据文件检查正确 CheckDBFile:=True;end;学号预处理:将导入的数据从信息库表到在校生表,并根据考生的考号及其它信息填入其基本信
5、息(如省份、入年年份等);基本处理思想是:根据考生年份(报考号前两位)与当前系统数据库的绝对学期时间,筛选相应的考生信息,然后从这些信息中依次在学生基本信息表(JBXX2)中查询是否重复,来决定是否写入;如果写入,则根据报考号(第3、4位)的信息,写入考生所在省份代码。新生班级编排:将分配学号的新生编排到指定班级中。用两个DBGrid(可多选)分别将未分班学生和班级信息列出来,通过手工选中一个或多个学生,即可分配班级或从班级中取消分班。实现DBGrid多选并在数据库中完成添加的代码:with StuDBGrid.DataSource.DataSet dobegin for i:=0 to in
6、tSelStuCnt-1 do begin GotoBookmark(pointer(StuDBGrid.SelectedRows.Itemsi); strStuNo:=Fields0.AsString; strSql:=Update jbxx2 set BJID=+strClasNo+; strSql:=strSql+ Where XH=+strStuNo+; database.Execute(strSql); end;end;寝室分配与班级编排可类似处理。新生现场报到:对新生的报到程序进行计算机管理,自动检查该新生是否已到校,是否已完成所有报到手续,以及新生的欠费情况(只记载欠费,不记载缴
7、费);并根据各项手续的完成,来确认新生的报到状态,为下一步查询提供足够信息。此处关键在于如何把数据表中“0”和“1”状态标志以CheckBox的状态输出,代码如下:读出:if ADORegInfo.Active thenbegin strState:=ADORegInfo.FieldByName(SFQD).AsString; if strState=1 then /是否签到 Reg1Check.Checked:=true else Reg1Check.Checked:=false; strState:=ADORegInfo.FieldByName(ZZGX).AsString; if str
8、State=1 then /组织关系 Reg2Check.Checked:=true else Reg2Check.Checked:=false; strState:=ADORegInfo.FieldByName(HKQY).AsString; if strState=1 then /户口迁移 Reg3Check.Checked:=true else Reg3Check.Checked:=false; strState:=ADORegInfo.FieldByName(JCK).AsString; if strState=1 then /就餐卡 Reg4Check.Checked:=true e
9、lse Reg4Check.Checked:=false; strState:=ADORegInfo.FieldByName(TJ).AsString; if strState=1 then /体检 Reg1Check.Checked:=true else Reg1Check.Checked:=false;end;写回数据库:ADORegInfo.Edit;if Reg1Check.Checked then ADORegInfo.FieldByName(SFQD).AsString:=1else ADORegInfo.FieldByName(SFQD).AsString:=0;if Reg2C
10、heck.Checked then ADORegInfo.FieldByName(ZZGX).AsString:=1else ADORegInfo.FieldByName(ZZGX).AsString:=0;if Reg3Check.Checked then ADORegInfo.FieldByName(HKQY).AsString:=1else ADORegInfo.FieldByName(HKQY).AsString:=0;if Reg4Check.Checked then ADORegInfo.FieldByName(JCK).AsString:=1else ADORegInfo.Fie
11、ldByName(JCK).AsString:=0;if Reg1Check.Checked then ADORegInfo.FieldByName(TJ).AsString:=1else ADORegInfo.FieldByName(TJ).AsString:=0;ADORegInfo.Post;欠费查询可相应处理。报到情况统计:可以按性别、专业、班级、省份等统计学生的报到情况,并以柱状图和表格显示;提供自由控制条件查询未报到学生信息。统计功能实现代码如下:CntBySexDBChar.Title.Text.Clear;/清除标题CntBySexDBChar.Title.Text.Add(新
12、生报到情况(按班级统计);CntBySexDBChar.Series0.Clear;/清除图形strSql:=; CntStrGrid.RowCount:=ADOQFCntQuery.RecordCount+1;for i:=0 to 4 do /设置StringGrid的标题begin CntStrGrid.Colsi.Clear; CntStrGrid.Colsi.Add(titleNamei);end;i:=0;RegSexTLbl.Lines.Clear; /清空统计显示while not ADOQFCntQuery.Eof dobeginintCntRegdi:=ADOQFCntQu
13、ery.FieldByName(ClassRegdCnt).AsInteger; CntBySexDBChar.Series0.Add(intCntToti,inttostr(i)+应到,clBlue); CntBySexDBChar.Series0.Add(intCntRegdi,到,clRed); strSql:=inttostr(i)+trim(strClassNamei)+报到比例:;strSql:=strSql+floattostr(trunc(intCntRegdi/intCnttoti*10000)/100)+%+#13; RegSexTLbl.Lines.Add(strSql)
14、; CntStrGrid.Rowsi+1.Add(inttostr(i+1); CntStrGrid.Rowsi+1.Add(strClassNamei); CntStrGrid.Rowsi+1.Add(inttostr(intCntToti); CntStrGrid.Rowsi+1.Add(inttostr(intCntRegdi);CntStrGrid.Rowsi+1.Add(floattostr(trunc(intCntRegdi/intCnttoti*10000)/100)+%); i:=i+1; ADOQFCntQuery.Next; /下一个班end;新生分布情况统计:从学生的扩展
15、信息与高考资料中提取信息,统计新生的各种分布情况,以饼状图和表格信息显示出来。相应地,高考成绩信息也可以按科目绘制出柱状图来反映分布情况,对新生的整体情况有一个大概了解,以便有针对性地开展工作。成绩统计的代码如下:strSql:=Select Max(+FieldName+) as MaxScore,Min(+FieldName+) as MinScore,AVG(+FieldName+) as AvgScore;strSql:=strSql+ From t_tdd,xs_base,xs_expend Where t_tdd.ksh=xs_expend.bkh and xs_expend.xh
16、=xs_base.xh;strSql:=strSql+ and Nj=+MidStr(CurrentXQSJ,1,4);ADOQFCntQuery.SQL.Clear;ADOQFCntQuery.SQL.Add(strSql);ADOQFCntQuery.Open;if ADOQFCntQuery.Eof thenbegin ShowMessage(对不起,未找到相关学生的成绩!); abort;end;for i:=0 to 2 dobegin CntScoreStrGrid.Colsi.Clear; CntScoreStrGrid.Colsi.Add(titleNamei);end;Cnt
17、ScoreDBChart.Title.Text.Clear;CntScoreDBChart.Title.Text.Add(新生高考成绩统计+itemName+);CntScoreDBChart.Series0.Clear;maxScore:=ADOQFCntQuery.FieldByName(MaxScore).AsInteger;minScore:=ADOQFCntQuery.FieldByName(MinScore).AsInteger;avgScore:=ADOQFCntQuery.FieldByName(AvgScore).AsInteger;itemsCount:=trunc(max
18、Score-minScore)/1)+1;intCrntScore:=trunc(minScore/1)*1;i:=0;isWrite:=true;CntScoreStrGrid.RowCount:=itemsCount+4;intCrntCnti:=ADOQFCntQuery.FieldByName(CrntCnt).AsInteger; strSql:=; if (isWrite) or (itemsCount12) then strSql:=inttostr(intCrntScore-1)+-;CntScoreDBChart.Series0.Add(intCrntCnti,strSql,
19、intColori mod 11);CntScoreStrGrid.Rowsi+1.Add(inttostr(intCrntScore-1)+-+inttostr(intCrntScore); CntScoreStrGrid.Rowsi+1.Add(inttostr(intCrntCnti);CntScoreStrGrid.Rowsi+1.Add(floattostr(trunc(intCrntCnti/19*10000)/100)+%); isWrite:=not isWrite; i:=i+1;end;CntScoreStrGrid.Rowsi+1.Add(最高分);CntScoreStr
20、Grid.Rowsi+1.Add(inttostr(maxScore);CntScoreStrGrid.Rowsi+2.Add(最低分);CntScoreStrGrid.Rowsi+2.Add(inttostr(minScore);CntScoreStrGrid.Rowsi+3.Add(平均分);CntScoreStrGrid.Rowsi+3.Add(inttostr(avgScore);1.2 毕业生管理子模块毕业生基本信息管理综合信息查询基础编码维护择业与就业档案与经费证书发放毕业生离校毕业生标记职业类别档案材料择业意向处理就业去向处理择业与就业统计毕业生档案材料毕业生经费证书发放登记证书
21、发放统计功能:编辑学生(班级)的学习状态(在读、毕业班、已毕业等)毕业班级学生(毕业生)综合信息查询职业类别与档案材料基础代码的维护毕业生择意向与就业去向的处理毕业生档案材料与毕业经费的管理毕业生证书的发放管理设计:总体设计:采用与新生管理统一的界面,用PageCtrl来实现。毕业学生状态设置:完成在校生到毕业班学生状态的改变或毕业班学生向已毕业学生状态的改变。实现是通过修改学生基本信息的状态标志。修改学生状态代码如下:/设置毕业班procedure TSelGraForm.addClassBtnClick(Sender: TObject);var strSql,strCrntClassID:
22、String;begin if (ValClassListBox.Items.Count1) or (ValClassListBox.ItemIndex0) then abort; strCrntClassID:=strValClassIDValClassListBox.ItemIndex; strSql:=Update jbxx2 set ZT=+毕业班+ Where bjid=+strCrntClassID+; MainForm.database.Execute(strSql); SelGraForm.FormShow(Sender);end;毕业生综合信息查询:查询毕业生的综合信息(成绩
23、除外,有单独模块提供查询功能),按类分为若干页显示,提供打印功能。响应数据源控件的代码:procedure TsrchForm.DSsrchStuDataChange(Sender: TObject; Field: TField); /查询学生数据源数据改变begin srchForm.RefreshBaseInfo();/刷新基本信息 srchForm.RefreshJCInfo(); /刷新奖惩信息 srchForm.RefreshQTInfo(); /刷新干部信息等end;procedure TsrchForm.RefreshBaseInfo();/刷新基本信息var strSql,cr
24、ntXH:String;/查询语句与学号begin crntXH:=trim(ADOsrchStuQuery.FieldByName(学号).AsString); strSql:=SELECT XS_BASE.*, JBXX2.XM, JBXX2.XB, BJXX.BJMC,; strSql:=strSql+ XS_ZYB.ZYMC,XS_BJXX.CC,XS_BJXX.XZ, ZZMMB.ZZMM,MZB.MZ,JGB.JGMC,; strSql:=strSql+ SFB.SFMC,XS_EXPEND.CYM,XS_EXPEND.SG, XS_EXPEND.XX,XS_EXPEND.BYXX
25、,; strSql:=strSql+ XS_EXPEND.TC,XS_EXPEND.EMAIL, XS_EXPEND.HOMEPAGE,XS_EXPEND.JKXX; strSql:=strSql+ FROM JBXX2 INNER JOIN; strSql:=strSql+ BJXX ON JBXX2.BJID = BJXX.BJID LEFT OUTER JOIN; /外连接班级扩展信息 strSql:=strSql+ XS_BJXX ON BJXX.BJID = XS_BJXX.BJID LEFT OUTER JOIN; /外连接专业表 strSql:=strSql+ XS_ZYB ON
26、 BJXX.ZYID = XS_ZYB.ZYID LEFT OUTER JOIN; /外连接籍贯表 strSql:=strSql+ SFB ON XS_BASE.SYSF = SFB.SFID LEFT OUTER JOIN; strSql:=strSql+ JGB ON XS_BASE.JGID = JGB.JGID; strSql:=strSql+ Where jbxx2.XH=+crntXH+; ADOBaseQuery.SQL.Clear; ADOBaseQuery.SQL.Add(strSql); ADOBaseQuery.Open;end;基础编码维护:直接维护职业类别表与档案材料
27、表。通过ADOTable对象来实现与数据库中表的联系,直接读取或编辑更新数据表。择业意向登记与就业去向登记:根据学生的择业要求和志向,登记其擅长的职业类别;按照毕业生的实际就业去向,登记毕业生的毕业单位、职务、联系方式等信息,以进行各种数据的统计和信息的交流。采用DBGrid来显示学生信息,而用数据库控件来绑定就业详细信息;用按钮来实现数据的添加、修改和删除。关键在于按钮状态(增、删、改)的实现:procedure TMainForm.RefreshStuJob();/刷新就业信息var strSql,strJobXH:String;begin strJobXH:=trim(DBText10.
28、Field.Text);/取得学号 if strJobXH= then /为空,程序出错,退出 abort; strSql:=Select xs_jyxx.* from xs_jyxx Where XH=+strJobXH+; /查询是否已有该生就业信息 ADOStuGraQuery.SQL.Clear; ADOStuGraQuery.SQL.Add(strSql); ADOStuGraQuery.Open; /控制权限 if EditTB.Down then /处于编辑状态 begin if not ADOStuGraQuery.Eof then /有该生就业信息 begin FirmDBE
29、dit.Enabled:=true; /可编辑 ProTypeLookup.Enabled:=true; PosDBEdit.Enabled:=true; TelDBEdit.Enabled:=true; EmailDBEdit.Enabled:=true; BZMemo.Enabled:=true; addJobBtn.Enabled:=false; delJobBtn.Enabled:=true; /删除为有效 confirmJobBtn.Enabled:=true; /确认编辑为有效 end else /无就业信息,可添加 begin FirmDBEdit.Enabled:=false;
30、 ProTypeLookup.Enabled:=false; PosDBEdit.Enabled:=false; TelDBEdit.Enabled:=false; EmailDBEdit.Enabled:=false; BZMemo.Enabled:=false; addJobBtn.Enabled:=true; /添加为有效 delJobBtn.Enabled:=false; /删除无效 confirmJobBtn.Enabled:=false; /确认无效 end; end; /end of EditTB.Downend; /end of procedure毕业生档案材料管理:登记毕业生
31、的档案材料信息,并提供查询,以确认该生是否具备正常的可毕业手续。代码如下:procedure TMainForm.RefreshDocuStu();/刷新档案材料信息var strSql,strCrntXH:String;begin strSql:=Select jbxx2.xh as 学号,xm as 姓名,xb as 性别,; strSql:=strSql+xs_daxx.DACLdm as 档案材料代码,DACLMC as 档案材料名称,; strSql:=strSql+ xs_daxx.BZ as 备注; strSql:=strSql+ from jbxx2,xs_daxx,xs_da
32、mc; strSql:=strSql+ Where jbxx2.xh=xs_daxx.xh and xs_daxx.dacldm=xs_damc.dacldm; strCrntXH:=trim(ADODStuQuery.FieldByName(学号).AsString); strSql:=strSql+ and xs_daxx.XH=+strCrntXH+; ADODocuStuQuery.SQL.Clear; ADODocuStuQuery.SQL.Add(strSql); ADODocuStuQuery.Open;end;毕业经费处理与档案材料基本相同。毕业证书发放管理:对毕业证和学位证的
33、发放进行管理,登记毕业证和学位证的发放情况,并对数据的完整性进行控制:毕业证发放日期如果不为空,则毕业证编号不能为空;学位证发放日期不为空,则学位证编号不能为空;若毕业证发放日期为空,则必须说明证书未发放原因。进行数据完整性控制的代码如下:procedure TMainForm.confirmCertiBtnClick(Sender: TObject);var strBYZRQ,strBYZBH,strXWZRQ,strXWZBH:String;begin strBYZRQ:=trim(BYZRQEdit.Text); /毕业证日期 strBYZBH:=trim(BYZBHedit.Text)
34、; /毕业证编号 strXWZRQ:=trim(XWZRQEdit.Text); /学位证日期 strXWZBH:=trim(XWZBHEdit.Text); /学位证编号 if (strBYZRQ=) xor (strBYZBH=) then /异或运算 if MessageDlg(毕业证颁发日期和毕业证编号不符!+#13+要取消本次更新操作吗?,mtWarning,mbYes,mbNo,0)=mrYes then begin ADOCertiQuery.CancelUpdates; /选择取消 MainForm.RefreshCertiInfo(); abort; end else abo
35、rt; if (strBYZRQ=) and (strBYZBH=) and (strXWZRQ)then / 处理学位证 if (strBYZRQ=) and (strBYZBH=) and (strXWZRQ=) and (strXWZBH=) and (trim(YYEdit.Text)=) then /未获证 if MessageDlg(未获得毕业证和或学位证的请写明原因!+#13+要取消本次更新操作吗?,mtWarning,mbYes,mbNo,0)=mrYes then begin ADOCertiQuery.CancelUpdates; MainForm.RefreshCerti
36、Info(); abort; end1.3 教学评价打分基础教学信息模块教室简况管理课程名称简况管理教材简况管理系科简况管理增加删除修改增加删除修改增加删除修改增加删除修改功能: 对基础教学信息(主要指全院系科信息、课程信息、教室信息、教材信息)整理、规范,相应名称及全院统一编制的ID(Identfier)号插、查、删、改;制表输出。设计:本模块处理的数据比较简单,主要完成系科信息表(Depart)、课程信息表(CourseInfo)、教室信息表(Classroom)、教材信息表(JCXX)等相应数据及编码的输入、删除、修改,在输入系科类似的已编码数据时,要通过名称下选而保存的是相应的ID信息
37、。这主要通过TDBLookupComboBox来实现,设置好如下几个重要属性: DataSource /待输入数据的数据源 DataField /待输入数据的字段名 KeyField /关联字段 ListField /下选显示字段 ListSource /下选数据源在数据浏览的网格图表中,各编码字段要显示为相应的名称,这要通过在数据集中新建Lookup类型的字段来实现,设置好如下几个重要属性: Field Property FieldType:=Lookup Lookup Definition Key Field /待输入数据字段名 DataSet /待输入数据数据集 LookupKey /关
38、联关键字段 Result Field /显示字段基础教学信息模块教室简况管理课程名称简况管理教材简况管理系科简况管理增加删除修改增加删除修改增加删除修改增加删除修改1.4学生成绩网上查询功能: 对基础教学信息(主要指全院系科信息、课程信息、教室信息、教材信息)整理、规范,相应名称及全院统一编制的ID(Identfier)号插、查、删、改;制表输出。设计:本模块处理的数据比较简单,主要完成系科信息表(Depart)、课程信息表(CourseInfo)、教室信息表(Classroom)、教材信息表(JCXX)等相应数据及编码的输入、删除、修改,在输入系科类似的已编码数据时,要通过名称下选而保存的是
39、相应的ID信息。这主要通过TDBLookupComboBox来实现,设置好如下几个重要属性: DataSource /待输入数据的数据源 DataField /待输入数据的字段名 KeyField /关联字段 ListField /下选显示字段 ListSource /下选数据源在数据浏览的网格图表中,各编码字段要显示为相应的名称,这要通过在数据集中新建Lookup类型的字段来实现,设置好如下几个重要属性: Field Property FieldType:=Lookup Lookup Definition Key Field /待输入数据字段名 DataSet /待输入数据数据集 Looku
40、pKey /关联关键字段 Result Field /显示字段2 系统维护和改进2.1 运行维护2.1.1运行模块组合系统运行需要后台数据库、WEB Server、系统总控、完成特定数据管理功能程序模块和HTML显示控制几个部分协同工作。2.1.2运行控制系统需要先启动数据库服务器,然后启动中间的WEB Server,启动无误后,各个用户就可以登录进入系统开始各种操作。如前所述,为控制各数据管理用户对特定数据进行管理,各数据管理功能模块完全独立开发编译,但各数据管理功能模块不允许独立运行,只能在系统总控程序调度下执行。2.1.3运行时间后台DB服务器单独占用一个服务器,WEB&APP Serv
41、er的事务处理量也比较大,需要一台单独的PC服务器。前端用户需要的系统开销较小,普通的微机就可以了。多媒体终端需要安装JRE运行环境,内存应该不小于128M。正常情况下后台DB服务器、WEB&APP Server和浏览器终端是始终处于运行状态,其它终端可以随时起停。2.1.4人工处理过程本系统需要人工处理的地方有数据库的建立和维护,数据表的建立和删除,这些需要有系统管理员的权限。2.2 系统的改进与提高由于各种原因,本系统有许多缺点。针对本系统的一些缺点,在二期开发时主要在以下方面进行改进:为便于维护,设计了三种日志:系统运行日志、操作日志、出错日志。三种日志根据不同的重要程度采取存放在文件和数据库的方式,系统管理员可以很轻松地监控系统运行情况。数据表的建立和删除有数据库系统管理员予以维护。调试分析测试结果附录或参考资料(含程序源码)