#学生信息管理系统的设计与实现报告Word文件下载.doc
《#学生信息管理系统的设计与实现报告Word文件下载.doc》由会员分享,可在线阅读,更多相关《#学生信息管理系统的设计与实现报告Word文件下载.doc(15页珍藏版)》请在冰豆网上搜索。
2.1.3运行时间 14
2.1.4人工处理过程 14
2.2系统的改进与提高 14
需求分析(含业务流程图,数据流程图,E-R图等)
概要设计(模块划分等)
1详细设计
1.1.新生管理子系统
总体设计:
新生管理子系统包含新生录取信息的导入,新生预分学号,新生班级分配,新生寝室安排,新生报到管理,新生报到信息统计,新生欠费统计,新生分布信息,新生高考成绩分布等。
设计:
下面给出设计方案与实现方法。
新生基本信息管理
招生数据导入
报到预处理
新生报到
新生信息查询与统计
预分学号
班级编排
寝室安排
预处理查询
现场报到处理
欠费查询统计
报到情况统计
新生比例分布
高考成绩统计
功能:
①完成对新录取学生数据的导入
②完成对新生数据的报到预处理(初始化)
③实现新生报到现场完成,并统计报到情况
④统计新生的各种分布比例和成绩分布
①总体设计:
用Delphi的PageCtrl控件来实现各项菜单功能
②招生数据导入:
可以通过选择来指定全国网上录取系统的导出数据所在路径,并根据使用手册检查21个.dbf文件是否存在,来决定是否允许导入;
在导入时采用记录的查重处理,所以,只能借助记录集的循环来完成;
其中,对政治面貌与民族表要单独处理。
主要实现文件检查的代码:
functionCheckDBFile(varstrRst:
String):
boolean;
var
i,j:
integer;
blFound:
begin
arrstrFileName[0]:
='
t_tddw'
;
arrstrFileName[1]:
t_jhk'
//……此处对表名赋值
CheckDBFile:
=False;
=True;
i:
=0;
strRst:
数据表'
while(i<
21)do
beginj:
=DBFileListBox.Items.IndexOf(arrstrFileName[i]+'
.dbf'
);
ifj=-1then//某个文件未找到,返回“假”
begin
blFound:
strRst:
=strRst+arrstrFileName[i]+'
.dbf'
end;
i:
=i+1;
=strRst+'
不存在!
'
ifblFoundthen//全部数据文件检查正确
CheckDBFile:
end;
③学号预处理:
将导入的数据从信息库表到在校生表,并根据考生的考号及其它信息填入其基本信息(如省份、入年年份等);
基本处理思想是:
根据考生年份(报考号前两位)与当前系统数据库的绝对学期时间,筛选相应的考生信息,然后从这些信息中依次在学生基本信息表(JBXX2)中查询是否重复,来决定是否写入;
如果写入,则根据报考号(第3、4位)的信息,写入考生所在省份代码。
④新生班级编排:
将分配学号的新生编排到指定班级中。
用两个DBGrid(可多选)分别将未分班学生和班级信息列出来,通过手工选中一个或多个学生,即可分配班级或从班级中取消分班。
实现DBGrid多选并在数据库中完成添加的代码:
withStuDBGrid.DataSource.DataSetdo
fori:
=0tointSelStuCnt-1do
begin
GotoBookmark(pointer(StuDBGrid.SelectedRows.Items[i]));
strStuNo:
=Fields[0].AsString;
strSql:
Updatejbxx2setBJID='
+'
+strClasNo+'
=strSql+'
WhereXH='
+strStuNo+'
database.Execute(strSql);
end;
……
寝室分配与班级编排可类似处理。
⑤新生现场报到:
对新生的报到程序进行计算机管理,自动检查该新生是否已到校,是否已完成所有报到手续,以及新生的欠费情况(只记载欠费,不记载缴费);
并根据各项手续的完成,来确认新生的报到状态,为下一步查询提供足够信息。
此处关键在于如何把数据表中“0”和“1”状态标志以CheckBox的状态输出,代码如下:
读出:
ifADORegInfo.Activethen
strState:
=ADORegInfo.FieldByName('
SFQD'
).AsString;
ifstrState='
1'
then//是否签到
Reg1Check.Checked:
=true
else
=false;
ZZGX'
then//组织关系
Reg2Check.Checked:
Reg2Check.Checked:
HKQY'
then//户口迁移
Reg3Check.Checked:
JCK'
then//就餐卡
Reg4Check.Checked:
TJ'
then//体检
写回数据库:
ADORegInfo.Edit;
ifReg1Check.Checkedthen
ADORegInfo.FieldByName('
).AsString:
else
0'
ifReg2Check.Checkedthen
ifReg3Check.Checkedthen
ifReg4Check.Checkedthen
ADORegInfo.Post;
欠费查询可相应处理。
⑥报到情况统计:
可以按性别、专业、班级、省份等统计学生的报到情况,并以柱状图和表格显示;
提供自由控制条件查询未报到学生信息。
统计功能实现代码如下:
CntBySexDBChar.Title.Text.Clear;
//清除标题
CntBySexDBChar.Title.Text.Add('
新生报到情况(按班级统计)'
CntBySexDBChar.Series[0].Clear;
//清除图形
strSql:
CntStrGrid.RowCount:
=ADOQFCntQuery.RecordCount+1;
fori:
=0to4do//设置StringGrid的标题
CntStrGrid.Cols[i].Clear;
CntStrGrid.Cols[i].Add(titleName[i]);
RegSexTLbl.Lines.Clear;
//清空统计显示
whilenotADOQFCntQuery.Eofdo
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+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].