教材管理系统设计.doc_第1页
教材管理系统设计.doc_第2页
教材管理系统设计.doc_第3页
教材管理系统设计.doc_第4页
教材管理系统设计.doc_第5页
免费预览已结束,剩余39页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库应用与开发课程设计论文教材管理信息系统1.1系统需求分析 学校每个学期都要购进大量的教材,然后发放给学生。目前许多学校是以班级为单位,统一向学生发放教材,然后收取书款。学生每学期开学都需要购买教材。目前,在我国大部分大、中、小学都是以班级为单位,统一向学校购买教材。首先学校根据每学期所开设的课程,向各书商或出版社购进课本,然后学生以班级为单位向学校领书交费。这项工作现在在大部分学校还是手工操作,工作起来效率很低,并且不能及时了解教材库存和领取的具体情况。同时由于不可避免的人为因素,可能造成教材收费出错等情况。针对这种情况,为了更好地适应当前学校管理的需求,避免手工管理存在的这些弊端,开发了本教材管理系统。学校通过使用本系统,可以实现教材收费、领取的自动管理。本系统主要包含4大功能,分别是教材的入库管理,学生的书费管理,系统管理以及综合查询。本系统使用Mcrosoft Access数据库作为后台的数据管理系统,利用ADO数据库组件连接后台数据库。开发采用的是Delphi7,它是由Borland公司开发的Windows程序开发环境。 1.2系统总体设计1.2.1系统层次模块设计根据系统所要实现的功能要求,不同的用户具有不同的操作权限,本系统主要划分为用户登录功能模块、系统管理功能模块、书费管理功能模块、教材出入库管理模块和综合功能查询模块。系统模块图如图1所示。教材管理系统 出入库管理综合查询书费管理系统管理操作员管理库存查询书费查询教师领书学生领书教材入库缴纳书费退回书费领书查询密码修改系统初始化班级管理单位信息退出图2-1 系统模块图1.2.2系统流程图开 始 启动界面用户登陆 Y系统管理书费管理出入库管理综合查询结 束图2-2教材管理系统流程图1.2.3数据库设计 教材管理系统使用Mcrosoft Access数据库,数据库名称为“教材系统”,包含以下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)procedure TCheckUserForm.BitBtn2Click(Sender: TObject);begin Close;end;procedure TCheckUserForm.BitBtn1Click(Sender: TObject);var Adodataset1:TAdoDataset;begin AdoDataSet1:=TAdoDataset.Create(self); adoDataset1.Connection:=adoconnection1; adodataset1.CommandType:=cmdtext; Adodataset1.CommandText:=select * from 操作用户表 where 用户名=:username and 密码=:password; adodataset1.close; Adodataset1.Parameters.Clear; Adodataset1.Parameters.AddParameter; adodataset1.P:=username; adodataset1.Parameters0.DataType:=ftstring; Adodataset1.Parameters0.Direction:=pdinput; adodataset1.Parameters0.Value:=edit1.text; Adodataset1.Parameters.AddParameter; adodataset1.P:=password; adodataset1.Parameters1.DataType:=ftstring; Adodataset1.Parameters1.Direction:=pdinput; adodataset1.Parameters1.Value:=edit2.text; adodataset1.active:=true; if adodataset1.Recordset.RecordCount=1 then begin username:=edit1.Text; qx1:=adodataset1.FieldByName(权限一).asboolean; qx2:=adodataset1.FieldByName(权限二).asboolean; qx3:=adodataset1.FieldByName(权限三).asboolean; qx4:=adodataset1.FieldByName(权限四).asboolean; close; end else begin Application.MessageBox(您输入的用户名或密码错误,请检查!,提示信息,mb_ok); i:=i-1; edit1.text:=; edit2.text:=; edit1.SetFocus; end; if i=0 then begin username:=; close; end; adodataset1.Active:=false; end;procedure TCheckUserForm.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操作员管理图主要代码如下:procedure TOperatorForm.BitBtn2Click(Sender: TObject);begin close;end;procedure TOperatorForm.FormActivate(Sender: TObject);begin RadioButton1.Checked:=true; initiate; Edit1.SetFocus;end;procedure TOperatorForm.Edit1Exit(Sender: TObject);var AdoDataset1:TAdoDataSet;begin if edit1.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.Parameters0.Name:=username; adodataset1.Parameters0.DataType:=ftstring; adodataset1.Parameters0.Direction:=pdinput; adodataset1.Parameters0.Value:=edit1.text; adodataset1.Active:=true; if adodataset1.Recordset.RecordCount=1 then begin if radiobutton1.Checked then 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 if not RadioButton1.Checked then begin application.MessageBox(没有该用户名,请检查!,提示信息,mb_ok); edit1.SetFocus; end; end; adodataset1.Active:=false; end;end;procedure TOperatorForm.RadioButton1Click(Sender: TObject);begin initiate; edit1.SetFocus;end;procedure TOperatorForm.BitBtn1Click(Sender: TObject);var AdoQuery1:TAdoQuery;begin adoquery1:=TAdoQuery.Create(self); adoquery1.Connection:=adoconnection1; adoquery1.close; if radiobutton2.Checked then begin adoquery1.sql.Clear; adoquery1.sql.add(update 操作用户表 set 密码=:password,所在单位=:units,权限一=:qx1,权限二=:qx2,权限三=:qx3,权限四=:qx4,操作员=:operator,最后修改时间=:lastdate where 用户名=:username); adoquery1.Parameters.Clear; adoquery1.Parameters.AddParameter; adoquery1.P:=password; adoquery1.Parameters0.DataType:=ftstring; adoquery1.Parameters0.Direction:=pdinput; adoquery1.Parameters0.Value:=edit2.text; adoquery1.Parameters.AddParameter; adoquery1.P:=units; adoquery1.Parameters1.DataType:=ftstring; adoquery1.Parameters1.Direction:=pdinput; adoquery1.Parameters1.Value:=edit3.text; adoquery1.Parameters.AddParameter; adoquery1.P:=qx1; adoquery1.Parameters2.DataType:=ftboolean; adoquery1.Parameters2.Direction:=pdinput; adoquery1.Parameters2.Value:=checkbox1.checked; adoquery1.Parameters.AddParameter; adoquery1.P:=qx2; adoquery1.Parameters3.DataType:=ftboolean; adoquery1.Parameters3.Direction:=pdinput; adoquery1.Parameters3.Value:=checkbox2.checked; adoquery1.Parameters.AddParameter; adoquery1.P:=qx3; adoquery1.Parameters4.DataType:=ftboolean; adoquery1.Parameters4.Direction:=pdinput; adoquery1.Parameters4.Value:=checkbox3.checked; adoquery1.Parameters.AddParameter; adoquery1.P:=qx4; adoquery1.Parameters5.DataType:=ftboolean; adoquery1.Parameters5.Direction:=pdinput; adoquery1.Parameters5.Value:=checkbox4.checked; adoquery1.Parameters.AddParameter; adoquery1.P:=operator; adoquery1.Parameters6.DataType:=ftstring; adoquery1.Parameters6.Direction:=pdinput; adoquery1.Parameters6.Value:=edit4.text; adoquery1.Parameters.AddParameter; adoquery1.P:=lastdate; adoquery1.Parameters7.DataType:=ftdatetime; adoquery1.Parameters7.Direction:=pdinput; adoquery1.Parameters7.Value:=StrToDate(maskedit1.text); adoquery1.Parameters.AddParameter; adoquery1.P:=username; adoquery1.Parameters8.DataType:=ftstring; adoquery1.Parameters8.Direction:=pdinput; adoquery1.Parameters8.Value:=edit1.text; adoquery1.ExecSQL; end else if (radiobutton1.Checked) and (edit1.text) then begin adoquery1.sql.clear; adoquery1.sql.add(insert into 操作用户表(用户名,密码,所在单位,权限一,权限二,权限三,权限四,操作员,最后修改时间)values(:username,:password,:units,:qx1,:qx2,:qx3,:qx4,:operator,:lastdate); adoquery1.Parameters.Clear; adoquery1.Parameters.AddParameter; adoquery1.P:=username; adoquery1.Parameters0.DataType:=ftstring; adoquery1.Parameters0.Direction:=pdinput; adoquery1.Parameters0.Value:=edit1.text; adoquery1.Parameters.AddParameter; adoquery1.P:=password; adoquery1.Parameters1.DataType:=ftstring; adoquery1.Parameters1.Direction:=pdinput; adoquery1.Parameters1.Value:=edit2.text; adoquery1.Parameters.AddParameter; adoquery1.P:=units; adoquery1.Parameters2.DataType:=ftstring; adoquery1.Parameters2.Direction:=pdinput; adoquery1.Parameters2.Value:=edit3.text; adoquery1.Parameters.AddParameter; adoquery1.P:=qx1; adoquery1.Parameters3.DataType:=ftboolean; adoquery1.Parameters3.Direction:=pdinput; adoquery1.Parameters3.Value:=checkbox1.checked; adoquery1.Parameters.AddParameter; adoquery1.P:=qx2; adoquery1.Parameters4.DataType:=ftboolean; adoquery1.Parameters4.Direction:=pdinput; adoquery1.Parameters4.Value:=checkbox2.checked; adoquery1.Parameters.AddParameter; adoquery1.P:=qx3; adoquery1.Parameters5.DataType:=ftboolean; adoquery1.Parameters5.Direction:=pdinput; adoquery1.Parameters5.Value:=checkbox3.checked; adoquery1.Parameters.AddParameter; adoquery1.P:=qx4; adoquery1.Parameters6.DataType:=ftboolean; adoquery1.Parameters6.Direction:=pdinput; adoquery1.Parameters6.Value:=checkbox4.checked; adoquery1.Parameters.AddParameter; adoquery1.P:=operator; adoquery1.Parameters7.DataType:=ftstring; adoquery1.Parameters7.Direction:=pdinput; adoquery1.Parameters7.Value:=edit4.text; adoquery1.Parameters.AddParameter; adoquery1.P:=lastdate; adoquery1.Parameters8.DataType:=ftdatetime; adoquery1.Parameters8.Direction:=pdinput; adoquery1.Parameters8.Value:=StrToDate(maskedit1.text); adoquery1.ExecSQL; end else begin adoquery1.sql.clear; adoquery1.sql.add(delete from 操作用户表 where 用户名=:username); adoquery1.Parameters.Clear; adoquery1.Parameters.AddParameter; adoquery1.P:=username; adoquery1.Parameters0.DataType:=ftstring; adoquery1.Parameters0.Direction:=pdinput; adoquery1.Parameters0.Value:=edit1.text; adoquery1.ExecSQL; initiate; end; adoquery1.Close; edit1.SetFocus;end;procedure TOperatorForm.initiate;begin CheckBox1.Checked:=false; CheckBox2.Checked:=false; CheckBox3.Checked:=false; CheckBox4.Checked:=false; Edit1.Text:=; Edit2.Text:=; Edit3.Text:=; edit4.text:=username; maskedit1.text:=datetostr(Date();end;end.(2)密码修改用到组件主要有:bitbtn1、bitbtn2、edit1、edit2、edit3、lable1、lable2、lable3、adoconection1。 图3-4密码修改界面图主要代码:procedure Tpasswordchangeform.BitBtn2Click(Sender: TObject);begin close;end;procedure Tpasswordchangeform.FormActivate(Sender: TObject);begin if qx1 then begin edit1.text:=; edit1.SetFocus; end else begin edit1.text:=username; edit1.readonly:=true; edit1.TabStop:=false; edit1.Enabled:=false; edit2.setfocus; end; edit2.text:=; edit3.text:=;end;procedure Tpasswordchangeform.Edit1Exit(Sender: TObject);var adodataset1:TAdoDataset;begin if edit1.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.P:=username; adodataset1.Parameters0.DataType:=ftstring; adodataset1.Parameters0.Direction:=pdinput; adodataset1.Parameters0.Value:=edit1.text; adodataset1.Active:=true; if adodataset1.Recordset.RecordCount=0 then begin Application.MessageBox(您输入的用户名错误,请检查!,提示信息,mb_ok); edit1.setfocus; end; adodataset1.Close; endend;procedure Tpasswordchangeform.BitBtn1Click(Sender: TObject);var adoquery1:TAdoQuery;begin if edit2.text=edit3.text then begin Adoquery1:=TAdoQuery.Create(self); Adoquery1.Connection:=adoconnection1; adoquery1.SQL.Clear; adoquery1.SQL.add(update 操作用户表 set 密码=:password where 用户名=:username); adoquery1.Parameters.Clear; adoquery1.Parameters.AddParameter; adoquery1.Parameters0.Name:=password; adoquery1.Parameters0.DataType:=ftstring; adoquery1.Parameters0.Direction:=pdinput; adoquery1.Parameters0.Value:=edit2.text; adoquery1.Parameters.AddParameter; adoquery1.Parameters1.Name:=username; adoquery1.Parameters1.DataType:=ftstring; adoquery1.Parameters1.Direction:=pdinput; adoquery1.Parameters1.Value:=edit1.text; adoquery1.ExecSQL; adoquery1.Close; end else begin Application.MessageBox(两次密码输入不一致,请检查!,提示信息,mb_ok); end; edit2.SetFocus; edit2.text:=; edit3.text:=;end;end.(3)班级管理班级管理包括新建、删除、修改班级信息等操作。在此界面中,要添加新的班级信息,先单击“新建”按钮,然后输入班级相关的各项信息后,单击“确定”按钮,即可。在上面的表格中,选中某个班级,然后单击“删除”按钮,将删除对应的班级记录。用到组件主要有:bitbtn1、bitbtn2、bitbtn3、bitbtn4、dbgrid1、groupbox2、adoconnection1等。 图3-5班级管理运行图主要功能代码如下:procedure TClassForm.BitBtn2Click(Sender: TObject);begin close;end;procedure TClassForm.FormActivate(Sender: TObject);begin dbgrid1.DataSource:=datasource1; datasource1.DataSet:=adotable1; adotable1.Connection:=adoconnection1; adotable1.tablename:=班级表; adotable1.active:=true; initiate; new_record:=false; if adotable1.Eof then bitbtn4.Enabled:=false else loadfromtable;end;procedure TClassForm.initiate;begin edit1.Text:=; edit2.Text:=; edit3.Text:=; edit4.Text:=; edit5.Text:=; edit6.Text:=; edit7.Text:=; edit8.text:=; maskedit1.text:=Datetostr(date(); edit1.SetFocus;end;procedure TClassForm.BitBtn3Click(Sender: TObject);begin initiate; new_record:=true;end;procedure TClassForm.Edit1Exit(Sender: TObject);var adodataset1:TAdoDataset;begin if edit1.text then begin adodataset1:=TAdoDataset.Create(self); adodataset1.Connection:=adoconnection1; adodataset1.Close; adodataset1.CommandType:=cmdText; adodataset1.CommandText:=select * from 班级表 where 班级名=:classname; adodataset1.Parameters.clear; adodataset1.Parameters.AddParameter; adodataset1.Parameters0.Name:=classname; adodataset1.Parameters0.DataType:=ftstring; adodataset1.Parameters0.Direction:=pdinput; adodataset1.Parameters0.Value:=edit1.text; adodataset1.active:=true; if new_record then begin if adodataset1.Recordset.RecordCount=1 then begin application.MessageBox(您输入班级名错误,请检查!,提示信息,mb_ok); edit1.SetFocus; end end; adodataset1.close; end;end;procedure TClassForm.BitBtn1Click(Sender: TObject);begin if new_record then begin adotable1.Append; adotable1.FieldByName(书费).AsCurrency:=0; new_record:=false; end; savetotable; if adotable1.Recordset.RecordCount0 then bitbtn4.Enabled:=true;end;procedure TClassForm.SaveToTable;begin adotable1.edit; adotable1.FieldByName(班级名).asstring:=edit1.text; adotable1.FieldByName(入学时间).asdatetim

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论