教材管理系统设计.docx
《教材管理系统设计.docx》由会员分享,可在线阅读,更多相关《教材管理系统设计.docx(67页珍藏版)》请在冰点文库上搜索。
教材管理系统设计
教材管理信息系统
1.1系统需求分析
学校每个学期都要购进大量的教材,然后发放给学生。
目前许多学校是以班级为单位,统一向学生发放教材,然后收取书款。
学生每学期开学都需要购买教材。
目前,在我国大部分大、中、小学都是以班级为单位,统一向学校购买教材。
首先学校根据每学期所开设的课程,向各书商或出版社购进课本,然后学生以班级为单位向学校领书交费。
这项工作现在在大部分学校还是手工操作,工作起来效率很低,并且不能及时了解教材库存和领取的具体情况。
同时由于不可避免的人为因素,可能造成教材收费出错等情况。
针对这种情况,为了更好地适应当前学校管理的需求,避免手工管理存在的这些弊端,开发了本教材管理系统。
学校通过使用本系统,可以实现教材收费、领取的自动管理。
本系统主要包含4大功能,分别是教材的入库管理,学生的书费管理,系统管理以及综合查询。
本系统使用McrosoftAccess数据库作为后台的数据管理系统,利用ADO数据库组件连接后台数据库。
开发采用的是Delphi7,它是由Borland公司开发的Windows程序开发环境。
1.2系统总体设计
1.2.1系统层次模块设计
根据系统所要实现的功能要求,不同的用户具有不同的操作权限,本系统主要划分为用户登录功能模块、系统管理功能模块、书费管理功能模块、教材出入库管理模块和综合功能查询模块。
系统模块图如图1所示。
图2-1系统模块图
1.2.2系统流程图
Y
图2-2教材管理系统流程图
1.2.3数据库设计
教材管理系统使用McrosoftAccess数据库,数据库名称为“教材系统”,包含以下6个表:
班级表、操作用户表、单位信息表、教材表、教材出入库历史表、学生书费历史库。
下面分别介绍以上各表的结构。
1、操作用户表
用来存储操作员信息。
表1-1操作用户表
字段名称
数据类型
说明
用户名
文本
主键
密码
文本
所在单位
文本
权限一
是/否
权限二
是/否
权限三
是/否
权限四
是/否
操作员
文本
最后修改时间
日期/时间
2、班级表
班级表用来保存班级的一些信息。
表1-2班级表
字段名称
数据类型
说明
班级名
文本
主键
入学时间
日期/时间
所在院系
文本
班长
文本
班长联系电话
文本
班主任
文本
班主任联系电话
文本
操作员
文本
最后修改时间
日期/时间
学费
货币
所学专业
文本
班级人数
数字
整型
3、单位信息表
单位信息表用于存储进书单位的信息。
表2-3单位信息表
字段名称
数据类型
说明
单位名
文本
主键
负责人
文本
联系电话
文本
书费
货币
操作员
文本
最后修改时间
日期/时间
4、教材表
教材表用于存储教材的基本信息。
表1-4教材表
字段名称
数据类型
说明
id
自动编号
主键
教材名
文本
出版社
文本
作者
文本
获奖情况
文本
出版年月
日期/时间
订书单位
文本
经办人
文本
教材数量
数字
整型
教材单价
货币
使用说明
文本
入库时间
日期/时间
说明
文本
操作员
文本
最后修改时间
日期/时间
5、教材出入库历史表
教材出入库历史表用于教材购入和领出信息的存储。
1-5教材出入库历史表
字段名称
数据类型
说明
id
自动编号
主键
教材名
文本
出版社
文本
获奖情况
文本
出版年月
日期/时间
经办单位
文本
经办人
文本
上期数量
数字
整型
本次数量
数字
整型
本期数量
数字
整型
教材单位
文本
使用说明
日期/时间
入库时间
日期/时间
说明
文本
操作员
文本
最后修改时间
日期/时间
6、学生书费历史库
学生书费历史库表用于对学生订书领书的基本信息存储。
表1-6学生书费历史表
字段名称
数据类型
说明
id
自动编号
主键
班级名
文本
上期费用
货币
本次费用
货币
本期费用
货币
经办人
文本
操作员
文本
最后修改时间
日期/时间
说明
文本
班级人数
数字
1.3系统详细设计
下面分别对各个功能模块进行介绍。
1.3.1、用户登录功能模块
此模块主要用于实现登录用户的身份和权限认证。
用户输入正确的密码后,系统根据用户所具有的权限,允许用户进行合法和操作。
在该窗体上,输入正确的用户名和密码,将进入到教材管理系统中。
但根据用户的权限不同,所提供的操作也不同。
本系统具有4个功能模块,分别对应4种权限,管理权、收费权、出入库权和查询权。
只有同时具有这4种权限,系统功能才完全开放,否则没有权限操作的菜单和工具条变成灰色,不可用。
用到组件有:
bitbtn1、bitbtn2、edit1、edit2、lable1、lable2、adoconection1
3-1用户登陆图
用户登陆主要代码
(1)用户主要登陆模块代码(checkuser.pas)
procedureTCheckUserForm.BitBtn2Click(Sender:
TObject);
begin
Close;
end;
procedureTCheckUserForm.BitBtn1Click(Sender:
TObject);
var
Adodataset1:
TAdoDataset;
begin
AdoDataSet1:
=TAdoDataset.Create(self);
adoDataset1.Connection:
=adoconnection1;
adodataset1.CommandType:
=cmdtext;
Adodataset1.CommandText:
='select*from操作用户表where用户名=:
usernameand密码=:
password';
adodataset1.close;
Adodataset1.Parameters.Clear;
Adodataset1.Parameters.AddParameter;
adodataset1.Parameters[0].name:
='username';
adodataset1.Parameters[0].DataType:
=ftstring;
Adodataset1.Parameters[0].Direction:
=pdinput;
adodataset1.Parameters[0].Value:
=edit1.text;
Adodataset1.Parameters.AddParameter;
adodataset1.Parameters[1].name:
='password';
adodataset1.Parameters[1].DataType:
=ftstring;
Adodataset1.Parameters[1].Direction:
=pdinput;
adodataset1.Parameters[1].Value:
=edit2.text;
adodataset1.active:
=true;
ifadodataset1.Recordset.RecordCount=1then
begin
username:
=edit1.Text;
qx[1]:
=adodataset1.FieldByName('权限一').asboolean;
qx[2]:
=adodataset1.FieldByName('权限二').asboolean;
qx[3]:
=adodataset1.FieldByName('权限三').asboolean;
qx[4]:
=adodataset1.FieldByName('权限四').asboolean;
close;
end
else
begin
Application.MessageBox('您输入的用户名或密码错误,请检查!
','提示信息',mb_ok);
i:
=i-1;
edit1.text:
='';
edit2.text:
='';
edit1.SetFocus;
end;
ifi=0then
begin
username:
='';
close;
end;
adodataset1.Active:
=false;
end;
procedureTCheckUserForm.FormActivate(Sender:
TObject);
begin
i:
=3;
edit1.text:
='';
edit2.Text:
='';
edit1.SetFocus;
end;
end.
1.3.2、系统主界面
通过单击相应的菜单项或者相应的工具条即可进入该功能管理。
单击“系统管理”菜单,将弹出如下图所示的下拉菜单,包括操作员管理工作、密码修改、系统初始化、班级管理、单位信息、退出6个子菜单。
单击相应子菜单将弹出对应的管理窗体。
系统主界面运行图如下:
图3-2系统界面图
1.3.3、系统管理功能模块
该功能模块主要是进行操作员管理、密码修改、系统初始化、班级管理、单位信息管理和退出。
其中,操作员管理包括新增、删除操作员和修改操作员的信息与权限。
(1)操作员管理
用到组件有:
bitbtn1、bitbtn2、groupbox1、groupbox2、groupbox3、adoconection1等。
图3-3操作员管理图
主要代码如下:
procedureTOperatorForm.BitBtn2Click(Sender:
TObject);
begin
close;
end;
procedureTOperatorForm.FormActivate(Sender:
TObject);
begin
RadioButton1.Checked:
=true;
initiate;
Edit1.SetFocus;
end;
procedureTOperatorForm.Edit1Exit(Sender:
TObject);
var
AdoDataset1:
TAdoDataSet;
begin
ifedit1.text<>''then
begin
adodataset1:
=TAdoDataSet.Create(self);
adodataset1.Connection:
=adoconnection1;
adodataset1.Close;
adodataset1.CommandType:
=cmdtext;
adodataset1.CommandText:
='select*from操作用户表where用户名=:
username';
adodataset1.Parameters.clear;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[0].Name:
='username';
adodataset1.Parameters[0].DataType:
=ftstring;
adodataset1.Parameters[0].Direction:
=pdinput;
adodataset1.Parameters[0].Value:
=edit1.text;
adodataset1.Active:
=true;
ifadodataset1.Recordset.RecordCount=1then
begin
ifradiobutton1.Checkedthen
begin
application.MessageBox('用户名重复,请重新输入!
','提示信息',mb_ok);
edit1.SetFocus;
end
else
begin
edit2.text:
=adodataset1.fieldbyname('密码').asstring;
edit3.text:
=adodataset1.fieldbyname('所在单位').asstring;
edit4.text:
=adodataset1.fieldbyname('操作员').asstring;
maskedit1.text:
=datetostr(adodataset1.fieldbyname('最后修改时间').asDatetime);
CheckBox1.Checked:
=adodataset1.fieldbyname('权限一').asboolean;
CheckBox2.Checked:
=adodataset1.fieldbyname('权限二').asboolean;
CheckBox3.Checked:
=adodataset1.fieldbyname('权限三').asboolean;
CheckBox4.Checked:
=adodataset1.fieldbyname('权限四').asboolean;
end;
end
else
begin
ifnotRadioButton1.Checkedthen
begin
application.MessageBox('没有该用户名,请检查!
','提示信息',mb_ok);
edit1.SetFocus;
end;
end;
adodataset1.Active:
=false;
end;
end;
procedureTOperatorForm.RadioButton1Click(Sender:
TObject);
begin
initiate;
edit1.SetFocus;
end;
procedureTOperatorForm.BitBtn1Click(Sender:
TObject);
var
AdoQuery1:
TAdoQuery;
begin
adoquery1:
=TAdoQuery.Create(self);
adoquery1.Connection:
=adoconnection1;
adoquery1.close;
ifradiobutton2.Checkedthen
begin
adoquery1.sql.Clear;
adoquery1.sql.add('update操作用户表set密码=:
password,所在单位=:
units,权限一=:
qx1,权限二=:
qx2,权限三=:
qx3,权限四=:
qx4,操作员=:
operator,最后修改时间=:
lastdatewhere用户名=:
username');
adoquery1.Parameters.Clear;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[0].name:
='password';
adoquery1.Parameters[0].DataType:
=ftstring;
adoquery1.Parameters[0].Direction:
=pdinput;
adoquery1.Parameters[0].Value:
=edit2.text;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[1].name:
='units';
adoquery1.Parameters[1].DataType:
=ftstring;
adoquery1.Parameters[1].Direction:
=pdinput;
adoquery1.Parameters[1].Value:
=edit3.text;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[2].name:
='qx1';
adoquery1.Parameters[2].DataType:
=ftboolean;
adoquery1.Parameters[2].Direction:
=pdinput;
adoquery1.Parameters[2].Value:
=checkbox1.checked;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[3].name:
='qx2';
adoquery1.Parameters[3].DataType:
=ftboolean;
adoquery1.Parameters[3].Direction:
=pdinput;
adoquery1.Parameters[3].Value:
=checkbox2.checked;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[4].name:
='qx3';
adoquery1.Parameters[4].DataType:
=ftboolean;
adoquery1.Parameters[4].Direction:
=pdinput;
adoquery1.Parameters[4].Value:
=checkbox3.checked;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[5].name:
='qx4';
adoquery1.Parameters[5].DataType:
=ftboolean;
adoquery1.Parameters[5].Direction:
=pdinput;
adoquery1.Parameters[5].Value:
=checkbox4.checked;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[6].name:
='operator';
adoquery1.Parameters[6].DataType:
=ftstring;
adoquery1.Parameters[6].Direction:
=pdinput;
adoquery1.Parameters[6].Value:
=edit4.text;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[7].name:
='lastdate';
adoquery1.Parameters[7].DataType:
=ftdatetime;
adoquery1.Parameters[7].Direction:
=pdinput;
adoquery1.Parameters[7].Value:
=StrToDate(maskedit1.text);
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[8].name:
='username';
adoquery1.Parameters[8].DataType:
=ftstring;
adoquery1.Parameters[8].Direction:
=pdinput;
adoquery1.Parameters[8].Value:
=edit1.text;
adoquery1.ExecSQL;
end
elseif(radiobutton1.Checked)and(edit1.text<>'')then
begin
adoquery1.sql.clear;
adoquery1.sql.add('insertinto操作用户表(用户名,密码,所在单位,权限一,权限二,权限三,权限四,操作员,最后修改时间)values(:
username,:
password,:
units,:
qx1,:
qx2,:
qx3,:
qx4,:
operator,:
lastdate)');
adoquery1.Parameters.Clear;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[0].name:
='username';
adoquery1.Parameters[0].DataType:
=ftstring;
adoquery1.Parameters[0].Direction:
=pdinput;
adoquery1.Parameters[0].Value:
=edit1.text;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[1].name:
='password';
adoquery1.Parameters[1].DataType:
=ftstring;
adoquery1.Parameters[1].Direction:
=pdinput;
adoquery1.Parameters[1].Value:
=edit2.text;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[2].name:
='units';
adoquery1.Parameters[2].DataType:
=ftstring;
adoquery1.Parameters[2].Direction:
=pdinput;
adoquery1.Parameters[2].Value:
=edit3.text;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[3].name:
='qx1';
adoquery1.Parameters[3].DataType:
=ftboolean;
adoquery1.Parameters[3].Direction:
=pdinput;
adoquery1.Parameters[3].Value:
=checkbox1.checked;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[4].name:
='qx2';
adoquery1.Parameters[4].DataType:
=ftboolean;
adoquery1.Parameters[4].Direction:
=pdinput;
adoquery1.Parameters[4].Value:
=checkbox2.checked;
adoquery1.Parameters.AddParameter;