信息工程系教材管理数据库实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库实验报告
教学部工学一部
专业计算机科学与技术
信息工程系教材管理
目录
目录 (II)
1开发要求 (2)
2需求分析 (2)
2.1功能需求 (2)
2.2数据需求 (2)
2.3 数据流图 (3)
2.4 E-R图 (3)
2.4.1 实体图 (3)
2.4.2 E-R图 (4)
3总体设计 (5)
3.1功能模块设计 (5)
3.2系统设计方案 (5)
3.3 数据库设计 (5)
3.3.1 关系模式设计 (6)
3.3.2 数据库表设计 (7)
4详细设计 (8)
4.1数据库连接 (8)
4.2 功能模块设计与实现 (8)
5调试与测试 (13)
5.1 调试 (13)
5.2 测试 (14)
6 结论 (14)
附录1—用户手册 (16)
附录2—源程序 .................................................................................. 错误!未定义书签。
摘要
教材管理是教学管理中的组成部分,一般学校的教材管理模式是在学年制基础上以班级为单位进行处理的。
院校的教材管理随着学生规模的日益增大、教材日益多样化、学生个人之间教材差异越来越大的现实面前已呈现出无法应对的局面。
因此,建立一套与选课相配套的教材管理模式和教师选课管理系统具有十分重要的意义和实际应用的迫切性,而且现有的条件、管理理念和技术水平已使之成为可能。
开发该教材管理系统是为了更好地管理学校的各类教材,便于老师和学生对教材管理如订书、领书、查询教材资料及其库存情况。
使教材信息管理工作系统化、规范化、自动化,从而达到提高教材管理效率的目的。
关键词:教材管理;信息系统;数据库;Visual Basic 6.0
1开发要求
本系统主要为信息工程系教材管理的服务,能够实现教材的录入、修改、删除等情况查询等功能。
本系统所要具体实现的功能如下:
1、教材管理:能过完成教材信息的管理(录入、修改、删除等);
2、班级管理:能够管理和维护在校学生班级信息;
3、课程管理:能够管理本专业所有课程,并且每门课程可以选用的多种教材;
4、教师管理:能够对各课任教师及其所选课程,使用教材情况进行管理;
5、用户管理:用户管理员可以新建用户信息、删除用户、修改用户信息;
2需求分析
2.1功能需求
现在高校需要管理各种教材信息,希望实现办公的信息化,通过建立系教材管理系统来管理教材情况。
该系统功能分析是在系统开发的总体任务的基础上完成。
教材管理系统需要完成功能主要有:
(1)班级学生和老师的性质、单位的输入,包括种班级号、学生号、备注等。
(2)能够对各课任教师及其所选课程,使用教材情况进行管理。
(3)教材信息的录入、修改、删除等,包括教材编号、教材名称、教材名称、教材类别、作者姓名、出版社名称、出版日期、教材页书、关键词、登记日期、备注信息等。
2.2数据需求
本系统数据的需求用Access来完成的,经过对于信息工程系教材管理系统的分析后,系统所涉及到的数据包括:
班级(班级名,入学时间,专业,人数)
教师(教师名,年龄,性别,电话)
教材(ISBN编号,作者,出版社,出版时间,教材单价)
操作用户(用户名,密码,管理权限)
2.3 数据流图
图1. 数据流程图
2.4 E-R图
信息工程系教材管理的分析,设计规划出的实体有:班级实体,教师实体,课程实体,教材实体等。
各个实体具体的描述和实体之间关系如下介绍。
2.4.1 实体图
(1)班级资料实体
包含字段:班级名,入学时间,专业,人数。
班级资料实体图如图2。
图2.班级资料实体模块
(2)教师资料实体
包含字段:ISBN编号,作者,出版社,出版时间,教材单价。
教师资料实体图如图3。
图3.教师资料实体模块
(3)教材资料实体
包含字段:ISBN编号,作者,出版社,出版时间,教材单价。
教材资料实体图如图4。
图4.教材资料实体模块
2.4.2 E-R图
通过对各个实体之间的联系进行分析,得出系统的ER图如下图所示。
图5 .系统ER图
3总体设计
3.1功能模块设计
经过对于本系统的分析主要划分为7个功能模块,分别执行要求中的各个功能。
数据管理中实现对信息工程系教材管理。
功能模块图如图7所示。
图6 信息工程系教材管理主要功能模块
3.2系统设计方案
ADOConn类:用于实现数据库与MFC的连接;
BaseDlg类:便于管理员选择各个表的维护以及实现删除和查询功能;
Uconsumer类:用于实现用户表的操作;
UconsumerUpdate类:用于实现用户表的修改;
UserAdd类:用于实现用户表的添加;
3.3 数据库设计
3.3.1 关系模式设计
经过详细的用户调查,在现行业务流图和数据分析的基础上,基本可以确定系统设计必须达到的目的了。
用户信息的修改:用户可以根据需要修改个人信息。
用户信息的管理:管理员可以增删改用户。
教材预定设置:设置可以查看到要预定书目的名称、年级、出版社、编印作者等等信息。
教材入库管理:教材入库有教材入库表格形式和教材入库两个模块,教材入库表格界面是向客户展示出入库情况的一种表格界面,直观、清晰、简捷易读。
教材入库则具体操作有哪些书可以并且已经入了库,同时也统计出了现库存的数量,以及库存书目的名称、出版社、编作者、版本册号、年级、专业等等入库书目的详细信息。
教材管理:教材管理主要有短线教材和超储教材两个模块。
短线教材根据教材采购情况系统将库存中近年来短缺的书目的情况自动列在显示栏中,这样可以及时发现有哪些书是现阶段缺少的书,缺少的数量及册数,避免了因缺少应用的书目而耽误了日常教学,及时做出处理;超储教材则是恰恰相反,它能够统计出库存书目中,有哪些书是近多年来用不到或很少使的过时不符合现代教学要求跟随不上现代发展的书目,从而做出相应的措施,可以处理掉一些以便空出空间给有用的书。
教材出库:教材出库有教材出库汇总和教材出库两个模块。
教材出库汇总根据教材预定情况系统将待发单位、待发行教材情况自动列在预发行管理的显示栏中,最后由操作员自己根据实际情况调整完成发行单,并引入了客户信誉控制系统(按征订期、按预缴款规定比例发行,不符合规定的不予发行);日常发行是操作员日常发行的操作;发行退货由操作员自己根据客户退货情况完成退货单;教材出库汇总有设置时间段、本时间段出库情况表两面个子模块;教材出库有表格界面、教材出库、教材出库一览表三个模块组成。
教材查询:教材查询主要有按教材编码、按教材名称、按编作者、按出版社、按预定数量五个模块。
除了实现上述功能以外,教材管理系统还应该具有友好、简洁的界面,安全性要高,
稳定性要强,能够满足不同人的需要。
3.3.2 数据库表设计
对本系统研究后,数据库管理系统采用MS SQL Server 2000实现。
(1)班级表
班级表如表7
(2)教师表
教师表如表8
教材表如表9
操作用户表如表10
4详细设计
4.1数据库连接
为了建立与数据库的连接,需要使用ADO控件和ADO的对象模型。
在系统中定义了一个ADOConn类。
4.2 功能模块设计与实现
显示教材信息列表:
通过ADO控件连接数据库后,在窗体中显示教材相关信息供管理人员浏览选择。
Option Explicit
Public txtSQL As String
Dim mrc As ADODB.Recordset
Dim MsgText As String
Private Sub Form_Load()
ShowTitle
ShowData
flagBedit = True
End Sub
对窗体的显示效果,控件位置通过指令进行适度设置。
8
Exit Sub
End If
If Me.ScaleWidth < lblTitle.Width + lblTitle.Width / 2 Then
Exit Sub
End If '控制控件的位置
lblTitle.Top = lblTitle.Height
lblTitle.Left = (Me.Width - lblTitle.Width) / 2
msgList.Top = lblTitle.Top + lblTitle.Height + lblTitle.Height / 2
msgList.Width = Me.ScaleWidth - 200
msgList.Left = Me.ScaleLeft + 100
msgList.Height = Me.ScaleHeight - msgList.Top - 200
End If
End Sub
显示Grid表头,在表格控件中以列表形式展开教材记录信息。
Private Sub ShowTitle()
Dim i As Integer
With msgList
.Cols = 12
.TextMatrix(0, 1) = ""
.TextMatrix(0, 2) = "书籍名称"
.TextMatrix(0, 3) = "书籍类别"
.TextMatrix(0, 4) = "作者姓名"
.TextMatrix(0, 5) = "出版社名称"
.TextMatrix(0, 6) = "出版日期"
.TextMatrix(0, 7) = "书籍页码"
.TextMatrix(0, 8) = "关键词"
.TextMatrix(0, 9) = "登记日期"
.TextMatrix(0, 10) = "是否被借"
.TextMatrix(0, 11) = "备注信息"
'固定表头
.FixedRows = 1
'设置各列的对齐方式
For i = 0 To 11
.ColAlignment(i) = 0
Next i
Private Sub msgList_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) '右键弹出
If Button = 2 And Shift = 0 Then
PopupMenu fMainForm.menuBooks
End If
End Sub
2、教材入库信息处理:
首先对已有教材记录进行检查,确认已登记的教材记录情况以决定新入库的相应处理。
Option Explicit'是否改动过记录,ture为改过
Dim mblChange As Boolean
Dim mrc As ADODB.Recordset
Public txtSQL As String
Private Sub cboItem_Change(Index As Integer) '有变化设置gblchange
mblChange = True
End Sub
若操作者对现在记录进行编辑,则确认记录该修改。
Private Sub cmdExit_Click()
If mblChange And cmdSave.Enabled Then
If MsgBox("保存当前记录的变化吗?", vbOKCancel + vbExclamation, "警告") = vbOK Then '保存
Call cmdSave_Click
End If
End If
End Sub
根据列表框控件中使用者的选择进行相应字段的修改并写入数据库的表。
设置输入掩码,规范表中数据的类型、大小。
For intCount = 0 To 6
If Trim(txtItem(intCount) & " ") = "" Then
Select Case intCount
Case 0
sMeg = "书籍名称"
Case 1
sMeg = "作者姓名"
Case 2
sMeg = "出版社名称"
Case 3
sMeg = "出版日期"
Case 4
sMeg = "书籍页码"
Case 5
sMeg = "关键词"
Case 6
sMeg = "登记日期"
End Select
sMeg = sMeg & "不能为空!"
MsgBox sMeg, vbOKOnly + vbExclamation, "警告"
txtItem(intCount).SetFocus
Exit Sub
End If
Next intCount
若新加入教材,则先检测系统数据库中是否已有该记录,若有则显示相关信息,
'再加入新记录
txtSQL = "select * from books"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.AddNew
mrc.Fields(0) = Trim(txtNo)
mrc.Fields(1) = Trim(txtItem(0))
mrc.Fields(2) = Trim(cboItem(0))
3、教材申领管理:
通过执行SQL查询语句,对用户的申领请求进行检查,为提高检索速度,首先要求选择教材种类。
txtSQL = "select distinct bookname from books where booktype = '" & Trim(cboItem(1)) & "'"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
If Not mrcc.EOF Then
Do While Not mrcc.EOF
cboItem(0).AddItem mrcc.Fields(0)
mrcc.MoveNext
Loop
ElseIf Index = 0 Then
If Trim(cboItem(0)) = "" Then
MsgBox "请首先选择书籍种类!", vbOKOnly + vbExclamation, "警告"
也可通过教材的教材名称、作者、出版社等信息进行查询。
仍然需要先与数据库连接,
Case 0
sMeg = "书籍名称"
Case 5
sMeg = "领书人姓名"
End Select
sMeg = sMeg & "不能为空!"
If Trim(txtItem(0)) = "" Then
MsgBox "领书日期不能为空!", vbOKOnly + vbExclamation, "警告"
txtItem(0).SetFocus
Exit Sub
对教材出库的限制包括该对象是否有资格领书,是否已领过,可以领书的数量等。
If bookNUM <= 0 Then
MsgBox "领书数量已超过现有库存,不能再领!", vbOKOnly + vbExclamation, "警告"
txtSQL = "select * from books where bookid = '" & Trim(Text1) & "' and putup <> 'y'"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
If mrcc.EOF Then
MsgBox "这本书已经领出!", vbOKOnly + vbExclamation, "警告"
txtSQL = "select * from borrowinfo"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
5调试与测试
5.1 调试
编好程序后,用各种手段进行查错和排错的过程。
作为程序的正确性不仅仅表现在正常功能的完成上,更重要的是对意外情况的正确处理。
注意,调试的指导思想是尽量证明该程序是有错的,而不是证明它是正确的。
如何能在浩如烟海的程序元素中找到有错误的那个元素,这是调试过程中最关键的技术问题。
1、本系统是基于Microsoft Visual Basic 6.0环境开发的,后台数据库为Microsoft
Access 2000 ,如果无法正常使用该系统,必须安装VB 6.0和Access 2000,操作系统为:windows xp或windows 2003
2、系统登录用户名与密码不符合,打不开页面。
用户名:admin 密码:admin 管理权限:管理员
用户名:user 密码:user 管理权限:一般用户
3、用户管理员可以为该系统添加若干个管理员和普通用户,可以为管理员添加需要采
购的教材信息,注意所输入的教材信息必须完整,否则将会引起错误;
5.2 测试
软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。
它是软件生命周期中一项非常重要且非常复杂的工作,对软件可靠性保证具有极其重要的意义。
在目前形式化方法和程序正确性证明技术还无望成为实用性方法的情况下,软件测试在将来相当一段时间内仍然是软件可靠性保证的有效方法。
软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成软件开发项目。
不足的测试势必使软件带着一些未揭露的隐藏错误投入运行,这将意味着更大的危险让用户承担。
过度测试则会浪费许多宝贵的资源。
到测试后期,即使找到了错误,然而付出了过高的代价。
6 结论
经过近一个月的学习,设计和编程,基本完成课题设计的任务,本次课题设计任务是开发教材管理系统,结合传统教材管理的模式,初步实现了教材的订购、查询、数据库管理等一些基本的管理系统功能,这些功能能够满足一般教材的管理需求。
我对开发环境Visual Basic 6.0并不是很熟悉,在以前的学习中也只是涉及到简单的程序设计,一开始做的还是有点力不从心,但在导师的耐心指导下,通过自己的努力学习和探索,我已经使自己可以使用Visual Basic 6.0以及SQL查询语言和ACCESS开发数据库应用程序。
通过开发这个系统,我掌握了教材管理系统开发的基本过程,了解了教材管理的基本知识,掌握了SQL查询语言,巩固了我对Visual Basic 6.0学习,而在这次毕业设计的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学间相互帮助精神。
但是,由于实际条件和时间限制,还有自己平时的学习不够,系统在功能方面还不完善,有的仅仅是最简单最基本的功能实现,而且由于我们知识面的局限性,对于具体的MIS 管理系统方面的知识还有很大的欠缺,可能在设计数据库存在着不合理的地方,以至于影响到整个系统的功能以及性能。
通过这次课程设计,加深了对数据库知识的学习,对以后的数据库开发起到了一定的作用。
通过这个系统的开发,让我本人初步的了解到了做一个小项目的全过程。
让我们经历了从系统规划、分析、设计到后台数据库的搭建和前台开发的一个相对较为完整的过程。
在此过程中我们遇到了许多实际的问题在课堂讲的教材上是找不到的。
为了解决这些在此,还要说明的是,因为本系统是用Microsoft Visual 6.0实现的,所以还存在一些技术上的问题;由于时间问题尚未得到解决,主要问题如下:
1、在所有的申请模块中,虽然在数据库中要求是唯一的值,但是用户在真正申请的时候并没有对其进行验证是不是已经存在了,所以系统存在了未知的错误,即如果存在两个相同的用户名会出错;
2、在普通用户选择教材的时候,如果成功提交了可以给出正确的提示信息,
但是普通用户并不知道各个班级的整体教材领取情况,即没有查询功能;
3、在用户管理模块中,用户管理员并不可以修改自己的密码信息,而其他的用户可以修改自己的信息;
附录1—用户手册
主界面:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, Buttons, ToolWin, ComCtrls, ExtCtrls, StdCtrls,DB,ADODB, jpeg,kcxc;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N21: TMenuItem;
ToolBar1: TToolBar;
Image1: TImage;
TreeView1: TTreeView;
H1: TMenuItem;
N20: TMenuItem;
Image_jcrk: TImage;
Image_czygl: TImage;
Image_lscx: TImage;
Image_kccx: TImage;
Image_thsf: TImage;
Image_xygl: TImage;
Image_mmxg: TImage;
Image_jnsf: TImage;
Image_bjgl: TImage;
Image_jsls: TImage;
Image_xsls: TImage;
Image_tc: TImage;
N4: TMenuItem;
N8: TMenuItem;
N19: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
procedure N7Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N21Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure N13Click(Sender: TObject); procedure N14Click(Sender: TObject); procedure N15Click(Sender: TObject); procedure SpeedButton14Click(Sender: TObject); //procedure N4Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure N20Click(Sender: TObject);
procedure Image_czyglClick(Sender: TObject);
procedure Image_mmxgClick(Sender: TObject);
procedure Image_bjglClick(Sender: TObject);
procedure Image_xyglClick(Sender: TObject);
procedure Image_sfcxClick(Sender: TObject);
procedure Image_kccxClick(Sender: TObject);
procedure Image_lscxClick(Sender: TObject);
procedure Image_jcrkClick(Sender: TObject);
procedure Image_thsfClick(Sender: TObject);
procedure Image_jnsfClick(Sender: TObject);
procedure Image_jslsClick(Sender: TObject);
procedure Image_xslsClick(Sender: TObject);
procedure Image_tcClick(Sender: TObject);
procedure N23Click(Sender: TObject);
//procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
username:string; //用户名
qx:array[1..4] of boolean; //四个权限
implementation
uses
checkuser,operator,passwordchange,classmanage,units,bookfee,returnfee,bookin,studentbo
ok,unitbook,classbookbrower,lingshuchaxun,about,
kcfind;
{$R *.dfm}
procedure TMainForm.N7Click(Sender: TObject);
begin
if messagedlg('确认退出?',mtconfirmation,[mbyes,mbno],0)=mryes then Close
else
end;
procedure TMainForm.FormActivate(Sender: TObject);
begin
CheckUserForm.ShowModal();
if username<>'' then
begin
if qx[1] then
begin
N2.Enabled:=true;
N6.Enabled:=true;
N21.Enabled:=true;
Image_czygl.Enabled:=true;
Image_mmxg.Enabled:=true;
Image_bjgl.Enabled:=true;
Image_xygl.Enabled:=true;
end
else
begin
N2.Enabled:=false;
N6.Enabled:=false;
N21.Enabled:=false;
Image_czygl.Enabled:=false;
Image_mmxg.Enabled:=false;
Image_bjgl.Enabled:=false;
Image_xygl.Enabled:=false; end;
if qx[2] then
begin
N10.Enabled:=true;
N11.Enabled:=true;
Image_jnsf.Enabled:=true; Image_thsf.Enabled:=true; end
else
begin
N10.Enabled:=false;
N11.Enabled:=false; Image_jnsf.Enabled:=false; Image_thsf.Enabled:=false; end;
if qx[3] then
begin
N13.Enabled:=true;
N14.Enabled:=true;
N15.Enabled:=true; Image_jcrk.Enabled:=true; Image_xsls.Enabled:=true; Image_jsls.Enabled:=true; end
else
begin
N13.Enabled:=false;
N14.Enabled:=false;
N15.Enabled:=false; Image_jcrk.Enabled:=false; Image_xsls.Enabled:=false;
Image_jsls.Enabled:=false;
end;
if qx[4] then
begin
N17.Enabled:=true;
N18.Enabled:=true;
//N19.Enabled:=true;
//Image_sfcx.Enabled:=true;
Image_kccx.Enabled:=true;
Image_lscx.Enabled:=true;
Image_tc.Enabled:=true;
end
else
begin
N17.Enabled:=false;
N18.Enabled:=false;
//N19.Enabled:=false;
//Image_sfcx.Enabled:=false;
Image_kccx.Enabled:=false;
Image_lscx.Enabled:=false;
Image_tc.Enabled:=false;
end;
end
else
close;
end;
procedure TMainForm.N2Click(Sender: TObject); begin
passwordchangeform.ShowModal();
end;
procedure TMainForm.N3Click(Sender: TObject); begin
OperatorForm.ShowModal();
end;
procedure TMainForm.N6Click(Sender: TObject);
begin
classform.ShowModal();
end;
procedure TMainForm.N21Click(Sender: TObject);
begin
UnitForm.ShowModal();
end;
procedure TMainForm.N10Click(Sender: TObject);
begin
bookfeeform.ShowModal();
end;
procedure TMainForm.N11Click(Sender: TObject);
begin
ReturnFeeForm.ShowModal();
end;
procedure TMainForm.N13Click(Sender: TObject);
begin
bookinForm.ShowModal();
end;
procedure TMainForm.N14Click(Sender: TObject);
begin
studentbookform.ShowModal();
end;
procedure TMainForm.N15Click(Sender: TObject);
begin
unitbookForm.ShowModal();
end;
procedure TMainForm.SpeedButton14Click(Sender: TObject); begin
cLOSE;
end;
procedure TMainForm.N17Click(Sender: TObject);
begin
ClassBookBrowerForm.ShowModal();
end;
procedure TMainForm.N18Click(Sender: TObject);
begin
kcfindform.ShowModal();
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[2].Text :='系统时间:' + dateTimetoStr(Now);
end;
procedure TMainForm.TreeView1Change(Sender: TObject; Node: TTreeNode); begin
Node.ImageIndex:=0;
Node.SelectedIndex:=1;
if TreeView1.Selected.Text='操作员管理' then
OperatorForm.ShowModal();
if TreeView1.Selected.Text='密码修改' then
passwordchangeform.ShowModal();
if TreeView1.Selected.Text='班级管理' then
classform.ShowModal();
if TreeView1.Selected.Text='学院管理' then
UnitForm.ShowModal();
if TreeView1.Selected.Text='缴纳书费' then
bookfeeform.ShowModal();
if TreeView1.Selected.Text='退回书费' then
ReturnFeeForm.ShowModal();
if TreeView1.Selected.Text='教材入库' then
bookinForm.ShowModal();
if TreeView1.Selected.Text='学生领书' then
studentbookform.ShowModal();
if TreeView1.Selected.Text='教师领书' then
unitbookForm.ShowModal();
if TreeView1.Selected.Text='书费查询' then
ClassBookBrowerForm.ShowModal();
if TreeView1.Selected.Text='库存查询' then
kcfindform.ShowModal();
if TreeView1.Selected.Text='领书查询' then
lingshuchaxunform.ShowModal();
end;
procedure TMainForm.N20Click(Sender: TObject);
begin
info.ShowModal();
end;
procedure TMainForm.Image_czyglClick(Sender: TObject); begin
OperatorForm.ShowModal();
end;
procedure TMainForm.Image_mmxgClick(Sender: TObject); begin
passwordchangeform.ShowModal();
end;
procedure TMainForm.Image_bjglClick(Sender: TObject); begin
classform.ShowModal();
end;
procedure TMainForm.Image_xyglClick(Sender: TObject); begin
UnitForm.ShowModal();
end;
procedure TMainForm.Image_sfcxClick(Sender: TObject); begin
ClassBookBrowerForm.ShowModal();
end;
procedure TMainForm.Image_kccxClick(Sender: TObject); begin
kcfindform.ShowModal();
end;
procedure TMainForm.Image_lscxClick(Sender: TObject); begin
ClassBookBrowerForm.ShowModal();
end;
procedure TMainForm.Image_jcrkClick(Sender: TObject); begin
bookinForm.ShowModal();
end;
procedure TMainForm.Image_thsfClick(Sender: TObject); begin
ReturnFeeForm.ShowModal();
end;
procedure TMainForm.Image_jnsfClick(Sender: TObject); begin
bookfeeform.ShowModal();
end;
procedure TMainForm.Image_jslsClick(Sender: TObject); begin
unitbookForm.ShowModal();
end;
procedure TMainForm.Image_xslsClick(Sender: TObject); begin
studentbookform.ShowModal();
end;
procedure TMainForm.Image_tcClick(Sender: TObject);
begin
if messagedlg('确认退出?',mtconfirmation,[mbyes,mbno],0)=mryes
then Close
else ;
end;
procedure TMainForm.N23Click(Sender: TObject);
begin
if messagedlg('确认退出?',mtconfirmation,[mbyes,mbno],0)=mryes
then Close
else
end;
end.
学生缴纳书费
unit bookfee;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DB, ADODB;
type
TBookFeeForm = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
ComboBox1: TComboBox;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
Edit4: TEdit;
Label6: TLabel;
Edit5: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ADOConnection1: TADOConnection;
Edit6: TEdit;
Label7: TLabel;
procedure BitBtn2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure initiate;
end;
var
BookFeeForm: TBookFeeForm;
implementation
uses main;
{$R *.dfm}
procedure TBookFeeForm.BitBtn2Click(Sender: TObject); begin
close;
end;
procedure TBookFeeForm.initiate;
begin
edit2.text:='0';
edit1.text:='0';
edit1.ReadOnly:=true;
edit1.TabStop:=false;
edit1.Enabled:=false;
edit3.text:='0';
edit3.ReadOnly:=true;
edit3.TabStop:=false;
edit3.Enabled:=false;
edit4.text:='';
edit5.text:='缴纳费用0元';
edit5.ReadOnly:=true;
edit5.TabStop:=false;
edit5.Enabled:=false;
edit6.text:='0';
edit6.ReadOnly:=true;
edit6.TabStop:=false;
edit6.Enabled:=false;
combobox1.text:='';
end;
procedure TBookFeeForm.FormActivate(Sender: TObject);
var
adotable1:TAdoTable;
begin
AdoTable1:=TAdoTable.Create(self);
AdoTable1.Connection:=adoconnection1;
adotable1.tablename:='班级表';
adotable1.Active:=true;
edit1.Text:=floattostr(adotable1.fieldbyname('书费').ascurrency);
initiate;
ComboBox1.Items.Clear;
while not adotable1.Eof do
begin
ComboBox1.Items.add(adotable1.fieldbyname('班级名').asstring);
adotable1.next;
end;
combobox1.text:='';
adotable1.Close;
end;
procedure boBox1Click(Sender: TObject);
var
adodataset1:TAdoDataset;
begin
adodataset1:=TAdoDataset.Create(self);
Adodataset1.Connection:=adoconnection1;
mandType:=cmdtext;
mandText:='select * from 班级表where 班级名=:classname';
adodataset1.Parameters.Clear;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[0].name:='classname';
adodataset1.Parameters[0].DataType:=ftstring;
adodataset1.Parameters[0].direction:=pdinput;
adodataset1.Parameters[0].Value:=combobox1.text;
adodataset1.Active:=true;
edit1.text:=floattostr(adodataset1.fieldbyname('书费').ascurrency);
edit6.text:=IntToStr(AdoDataset1.FieldByName('班级人数').asinteger);
adodataset1.close;
end;
procedure TBookFeeForm.Edit2Exit(Sender: TObject);
begin
edit3.text:=floattostr(strtofloat(edit1.text)+strtofloat(Edit2.text)*StrToInt(Edit6.text));
edit5.text:='缴纳书费'+edit2.text+'*'+edit6.text+'元';
end;
procedure TBookFeeForm.BitBtn1Click(Sender: TObject);
var
adotable1:TAdoTable;
adoquery1:TAdoQuery;
begin
adoquery1:=TAdoQuery.Create(self);
adoquery1.Connection:=adoconnection1;
adoquery1.close;
adoquery1.SQL.clear;
adoquery1.sql.add('update 班级表set 书费=:fee where 班级名=:classname');
adoquery1.Parameters.Clear;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[0].name:='fee';
adoquery1.Parameters[0].DataType:=ftcurrency;
adoquery1.Parameters[0].Direction:=pdinput;
adoquery1.Parameters[0].Value:=strtofloat(edit2.text)*strtoint(Edit6.text);
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[1].name:='classname';
adoquery1.Parameters[1].DataType:=ftstring;
adoquery1.Parameters[1].Direction:=pdinput;
adoquery1.Parameters[1].Value:=combobox1.text;
adoquery1.Prepared;
adoquery1.ExecSQL;
adoquery1.Close;
AdoTable1:=TAdoTable.Create(self);
AdoTable1.Connection:=AdoConnection1;
AdoTable1.TableName:='学生书费历史库';
adotable1.Active:=true;
adotable1.Append;
adotable1.edit;
adotable1.FieldByName('班级名').asstring:=ComboBox1.text;
adotable1.FieldByName('班级人数').asinteger:=StrtoInt(edit6.text);
adotable1.fieldByName('上期费用').AsCurrency:=strtofloat(edit1.text);
adotable1.fieldByName('本次费用
').AsCurrency:=strtofloat(edit2.text)*StrToInt(Edit6.text);
adotable1.fieldByName('本期费用').AsCurrency:=strtofloat(edit3.text);
adotable1.fieldByName('经办人').Asstring:=edit4.text;
adotable1.fieldByName('操作员').Asstring:=username;
adotable1.fieldByName('最后修改时间').AsDateTime:=Date();
adotable1.fieldByName('说明').Asstring:=edit5.text;
adotable1.post;
adotable1.close;
initiate;
combobox1.SetFocus;
end;
教材入库:
unit bookin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Mask, DB, ADODB;
type
TbookinForm = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
MaskEdit1: TMaskEdit;
Label6: TLabel;
ComboBox1: TComboBox;
Label7: TLabel;
Edit5: TEdit;
Label8: TLabel;
Edit6: TEdit;
Label9: TLabel;
Edit7: TEdit;
Label10: TLabel;
Edit8: TEdit;
Label11: TLabel;
Edit9: TEdit;
Label12: TLabel;
Edit10: TEdit;
Label13: TLabel;
MaskEdit2: TMaskEdit;
Label14: TLabel;
Edit11: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ADOConnection1: TADOConnection;
Label15: TLabel;
MaskEdit3: TMaskEdit;
procedure FormActivate(Sender: TObject);
procedure Edit4Exit(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Edit7Exit(Sender: TObject);
procedure BitBtn2Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
procedure initiate;
end;
var
bookinForm: TbookinForm;
new:boolean;
implementation
uses main;
{$R *.dfm}
procedure TBookinForm.initiate;
begin
maskedit3.text:='';
Edit1.text:='';
Edit2.Text:='出版社';
Edit3.text:='';
Edit4.Text:='0';
Edit5.text:=username;
Edit6.Text:='0';
edit6.ReadOnly:=true;
edit6.TabStop:=false;
edit6.Enabled:=false;
Edit7.text:='0';
Edit8.Text:='0';
edit8.ReadOnly:=true;
edit8.TabStop:=false;
edit8.Enabled:=false;
Edit9.Text:='无';
Edit10.text:='无';
Edit11.Text:='无';
combobox1.text:='';
maskedit1.text:='';
maskedit2.text:=DateToStr(Date());
maskedit2.ReadOnly:=true;
maskedit2.TabStop:=false;
maskedit2.Enabled:=false;
edit1.SetFocus;
end;
procedure TbookinForm.FormActivate(Sender: TObject);
var
AdoTable1:TAdoTable;
begin
initiate;
adotable1:=TAdoTable.Create(self);
adotable1.Connection:=adoconnection1;
adotable1.TableName:='单位信息表';
adotable1.Open;
combobox1.Items.Clear;
while not adotable1.Eof do
begin
combobox1.Items.Add(adotable1.fieldbyname('单位名').asstring);
adotable1.Next;
end;
adotable1.Open;
new:=false;
end;
procedure TbookinForm.Edit4Exit(Sender: TObject);
var
adodataset1:TAdodataset;
begin
adodataset1:=TAdoDataset.Create(self);
adodataset1.Connection:=adoconnection1;
mandType:=cmdtext;
mandText:='select * from 教材表where 教材名=:s0 and 出版社=:s1 and 作者=:s2 and 教材单价=:s3';
adodataset1.Parameters.clear;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[0].name:='s0';
adodataset1.Parameters[0].DataType:=ftstring;
adodataset1.Parameters[0].Direction:=pdinput;
adodataset1.Parameters[0].Value:=edit1.text;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[1].name:='s1';
adodataset1.Parameters[1].DataType:=ftstring;
adodataset1.Parameters[1].Direction:=pdinput;
adodataset1.Parameters[1].Value:=edit2.text;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[2].name:='s2';
adodataset1.Parameters[2].DataType:=ftstring;
adodataset1.Parameters[2].Direction:=pdinput;
adodataset1.Parameters[2].Value:=edit3.text;
adodataset1.Parameters.AddParameter;
adodataset1.Parameters[3].name:='s3';
adodataset1.Parameters[3].DataType:=ftcurrency;
adodataset1.Parameters[3].Direction:=pdinput;
adodataset1.Parameters[3].Value:=StrToFloat(edit4.text);
adodataset1.Active:=true;
if adodataset1.Recordset.RecordCount=0 then
new:=true
else
begin
maskedit1.text:=DateToStr(AdoDataset1.fieldbyname('出版年月').AsDateTime);
combobox1.text:=AdoDataset1.fieldbyname('订书单位').AsString;
edit5.text:=AdoDataset1.fieldbyname('经办人').AsString;
edit6.text:=IntToStr(AdoDataset1.fieldbyname('教材数量').AsInteger);
edit9.text:=AdoDataset1.fieldbyname('获奖情况').AsString;
edit10.text:=AdoDataset1.fieldbyname('使用说明').AsString;
edit11.text:=AdoDataset1.fieldbyname('说明').AsString;
end;
end;
procedure TbookinForm.BitBtn1Click(Sender: TObject); var
AdoQuery1:TAdoquery;
adotable1:Tadotable;
begin
if maskedit3.Text=' - - - ' then
showmessage('ISBN编号不能为空')
else if edit1.Text='' then
showmessage('请输入教材名')
else if edit4.Text='' then
showmessage('请输入教材单价')
else if edit3.Text='' then
showmessage('请输入作者')
else if edit2.Text='' then
showmessage('请输入出版社名称')
else if edit7.Text='' then
showmessage('请输入本期数量')
else if MaskEdit1.Text=' - - ' then
showmessage('请输入出版年月')
else
begin
adoquery1:=TAdoquery.Create(self);
adoquery1.Connection:=adoconnection1;
adotable1:=TAdotable.Create(self);
adotable1.Connection:=adoconnection1;
adotable1.close;
adoquery1.close;
adoquery1.SQL.clear;
if new then
begin。