图书管理系统的设计
1. 系统功能
1.1 主要功能
图书管理系统主要实现以下5方面的功能: a.图书入库 b.查询 c.修改信息 d.图书借还 e.系统管理
1.2 功能描述
1.书籍管理功能:包括书籍类别管理和书籍信息管理两部分。 2.读者管理部分:这一部分包括对读者信息进行管理的功能。
3.借阅管理部分:这一部分包括借书信息管理和还书信息管理两部分。 4.系统管理:包括修改系统用户密码、增加新用户以及退出系统等。
1.3 系统数据流程分析
图书管理系统数据流程图如图1-3所示。
1
信息与计算科学系课程设计报告
读者基本信息录入录入 图书基本信息录入录入 读者信息管理 图书信息管理 读者信息库 图书信息库 借阅信息录入 图书借阅管理
图1-3 系统数据流程图
1.4功能模块图
本系统包括的模块主要有如下几个部分:图书管理模块、借阅管理模块、读者管理模块、系统管理模块、信息查询模块、用户管理模块
具体的功能描述如下:
图书管理:其功能是管理书库中图书的记录信息,对入库图书信息进行管理,并进行查询。
借阅管理:其功能是对读者借阅信息进行查询。 读者管理:其功能是对读者一般信息进行查询以及维护。
系统管理:其功能是为系统的使用者进行帐户和密码管理以及基础数据维护。 其子系统描述:
2
信息与计算科学系课程设计报告
1.图书管理包括图书入库功能,主要整理图书的数量、类别和各种相关的信息等。 2.图书借阅,进行借书操作(此操作由管理员完成);当用户要查询自己的借阅情况时,可进行借阅查询。
3.读者管理包括读者登记,读者信息管理,添加读者借书和还书信息。可以记录新加入的读者的信息,并且可以对已经存在于数据库中的读者的信息进行修改,同时可以进行读者借、还书的管理。
4.用户管理包括修改密码、新增用户、删除用户可执行的系统操作等。 5.信息查询包括图书查询、读者查询和用户查询等功能。通过这些功能,可以通过不同的关键字来对书库中的图书进行查询,同时也可以查询读者的借阅信息。
6.系统管理是用来完成本系统的基本操作,如修改密码、登录系统、退出登录,还有系统简介等功能。
其功能模块图如下所示
新书入库功能 图书类别功能 读者信息功能 读者查询功能 增密码修改 借书管理功能 还书管理功能 图书管理功能 读者管理功能 系统管理功能 借阅管理功能 图书管理系统 加 用 户
图1-4功能模块图
3
信息与计算科学系课程设计报告
2. 系统数据库设计
2.1 E-R图
E-R模型的“联系”用于刻画实体之间的关联。根据上面的设计可以规划出的实体有:读者实体、图书实体和借书信息实体。
2.2 读者实体
读者实体 学号 姓名 联系电话 借书证号 证号 性别 系别 图2-2读者实体
2.3 图书实体
出版日期 图书编 类别编 号
图书实体 出版日期出版日期图书名称 作者 图2-3图书实体
出版日期2.4 借书实体E-R图
4
信息与计算科学系课程设计报告
借书信息实体 图书编号 借书证号 借出日期 图2-4借书实体
借出状态 还书日期 2.5 系统实体E-R图
读者
借阅 图书 图2-5实体E-R图
2.6 数据库设计
由数据模型利用SQLsever2000进行数据库的详细设计,本系统设计的数据库名为shop,其基本表的设计如下:
2.6.1学生信息表
表2-6-1学生信息表 字段名称 学号 姓名 性别 系别 联系电话 借书证号 密码
数据类型 varchar varchar varchar varchar varchar varchar varchar 大小 50 20 4 5 50 50 15 5
信息与计算科学系课程设计报告
2.6.2图书明细表
表2-6-2图书明细表
字段名称 图书编号 图书名称 作者 出版社 出版日期 定价 类别编号 状态
2.6.3图书类别
数据类型 int varchar varchar varchar varchar varchar varchar char 大小 50 20 4 5 50 50 15 6 表2-6-3图书类别 字段名称 类别编号 图书类别
2.6.4用户
数据类型 大小 smallint 2 nvarchar 20 表2-6-4用户 字段名称 数据类型 姓名 varchar 性别 varchar 类型 varchar 联系电话 varchar 密码 varchar
2.6.5借出信息
表2-6-5借出信息
大小 20 4 50 15 50 字段名称 借出编号 图书编号 借书证号 借出日期 借出状态 数据类型 int int varchar smalldatetime bit 大小 4 4 50 4 4
6
信息与计算科学系课程设计报告
3. 系统实现
3.1 系统数据库模型需分析
图3-1关系图
3.2 系统主界面
程序运行程序以后,就可以看到的程序的主界面,从这个界面中用户可以根据不同的身份进行不同的操作。
3.3 管理员登录界面
主程序运行后,点击管理员登录,跳出管理员登录界面,输入用户名和密码即可进入系统管理的后台界面。
功能:本模块的主要功能是对操作用户身份的验证,只有系统的合法用户才能进入系统。在进行系统登录过程中,登录模块将调用数据库里的用户表,并对用户名和密码进行验证,只有输入了正确的用户名和密码后,系统登录才会成功。否则退出登录模块。并在输入了错误的或者是不存在的用户名和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或错误操作,以便用户进行正确的登录。
其窗体如图3-3所示:管理员登录窗体:
7
信息与计算科学系课程设计报告
图3-3 管理员登录界面
3.4 系统管理界面
管理员登录成功后会进入如图3-4的系统管理界面,本模块的主要功能是实现管理员对系统的维护作用,管理员对读者进行信息查询、修改和删除,对图书进行注销和借阅归还管理。管理员输入学号或姓名可以查询读者的信息,输入图书编号或作者
可以查询图书的信息。
图3-4 系统管理界面
8
信息与计算科学系课程设计报告
3.5 修改图书类型
在系统管理界面中点击修改图书类型可进入如图4-5的编辑图书类别的界面,本模块主要实现管理员对图书类别进行删除和添加的管理功能。
图3-5 修改图书类型界面
3.6 图书借阅和归还
本模块主要实现的功能是读者对图书的借阅和归还: 3.6.1 图书借阅模块
输入图书编号按回车图书信息会自动显示,再输入借书证号按回车会显示已借书数,如图3-6所示:
9
信息与计算科学系课程设计报告
图3-6 借阅图书界面
3.6.2 图书归还模块
输入图书编号按回车图书信息会自动显示,再输入借书证号按回车会显示已借出日期和还书日期以及是否超期的信息提示,如图3-7所示:
图3-7 图书归还界面
10
信息与计算科学系课程设计报告
3.7 新书入库
本模块主要实现的是管理员对新书的入库管理,打 * 号的是必填项目,置空会有信息提示该项不能为空,如图3-8所示:
图3-8新书入库界面
3.7 系统密码修改
本模块主要实现的功能是管理员进入系统管理界面后对管理员密码进行修改的操作,以保证系统的安全性,如图3-9所示:
图3-9 系统密码修改界面
3.9 读者服务
本功能实现的是读者对图书的查询、借阅及归还操作以及对密码的修改的操作,读者必须先登录以后才能进行后面的修改密码、图书查询等操作,如图4-12所示:
11
信息与计算科学系课程设计报告
图3-10 读者服务界面
4. 认识体会
1.认识体会:
通过系统的在校学习和对外界的认识,我对软件开发的大致过程有了一些基本的了解,有了一些体会:程序没有最好,只有更好,程序没有十全十美,只有更完美;在编程的过程中,会遇到各种各样的问题,优秀的编程大师正是在解决了遇到的这些问题而积累经验的成果,提升了编程能力和丰富了编程思维。深入的体会:编程总会深入内部,深究根源,一个程序只有不断地测试和修改才能减少错误,才能提高质量,才能做得更好,程序是在不断地壮大的。编程需要严谨的思维,程序是一个逻辑产品,它存储在磁盘等物理介质中,它看不见,摸不着,它运行时一环接一环,一丝扣一丝,一旦出错,有可能导致难以预料的严重后果。而严谨的思维能使程序逻辑出错的可能性大大降低,也使程序易于维护。而且,保持严谨的思维总是一个好的习惯。在学习的过程中,要学会应用网络上的知识,把它变为自己的知识,应用在实际中来解决问题。因为在网络上有各种各样的资源可以供你参考。编程需要良好的编程习惯。好的编程习惯能给编程人员省去很多不必要的麻烦,提高了代码的清晰度,从而提高了程序的质量。三人行必有我师:不管你的编程水平有多高,都有不懂的地方,所以时刻都要虚心向他人学习来提高自己。连孔子都可以拜小孩为师,我们还有什么面子放不下的呢?
3、总结:
12
信息与计算科学系课程设计报告
在一开始我通过编写设计初稿,对设计本系统有了比较深刻的认识,认真的考虑了每一步骤的执行,也发现编一个优秀的软件决不是一蹴而就的事情,需要长时间的积累和经验。然后,在老师的辅导和同学的帮助下,我更加深入的去考虑这个系统。并花了大量的心思和努力去完成这个系统。在做这个系统的这段时间里,我学到了我以前没有掌握牢的知识。更重要的是了解了作为一个开发人员开发一个系统软件的步骤和方法策略。如何去思考问题,又如何去解决问题……总之,通过这次的系统设计,我学会了很多,也了解了很多。在这,我真诚的感谢辅导过我的老师,还有帮助过我的同学们。谢谢!
参考文献:
[1] 刘斌,李文革.Delphi7数据库高级教程[M] .北京:清华大学出版社,2004
[2] 李军, 张桂英,徐波. Delphi7项目开发实践[M] .北京:中国铁道出版社,2003
[3] 刘国钧,陈绍业,王凤翥.图书馆目录[M].第1版.北京:高等教育出版社,1957.
5. 源代码
5.1系统主界面:
procedure TfrmMain.SpeedButton1Click(Sender: TObject);
begin
frmAdm.Show; end;
procedure TfrmMain.SpeedButton2Click(Sender: TObject); begin
frmReaderSer.Show; end;
procedure TfrmMain.SpeedButton3Click(Sender: TObject); begin
frmLookBook.Show; end;
procedure TfrmMain.SpeedButton4Click(Sender: TObject); var Str: string; begin
Str := '图书管理系统' + #13;
13
信息与计算科学系课程设计报告
Str := Str + '作者:丁少亭(L3)' + #13;
Str := Str + '这是我的第一次编程,请大家多多指教!'; ShowMessage(Str); end;
procedure TfrmMain.SpeedButton5Click(Sender: TObject); begin
if messagedlg('确定要退出本系统吗?', mtinformation, [mbyes, mbno], 0) = mryes then begin
ShowMessage('谢谢你的使用');
// form1.DestroyWnd; frmMain.Close; end; end;
procedure TfrmMain.Timer1Timer(Sender: TObject); begin
StatusBar1.Panels[2].Text := '日期:' + DateToStr(Date); StatusBar1.Panels[3].Text := '时间:' + TimeToStr(Time); end;
procedure TfrmMain.SkinData1FormSkin(Sender: TObject; aName: String; var DoSkin: Boolean); begin
skindata1.Active:=true; end; end.
5.2 登录按钮代码:
procedure TfrmAdm.Button1Click(Sender: TObject); begin
with DM.ADOQuery1 do begin Close; SQL.Clear;
SQL.Add('select * from 用户 where 姓名=:username and 密码=:pass and 类型=:GLY');
Parameters.ParamByName('username').Value := Edit1.Text; Parameters.ParamByName('pass').Value := Edit2.Text; Parameters.ParamByName('GLY').Value := '管理员'; Open;
if RecordCount < 1 then begin
ShowMessage('用户名、密码错误或您不是管理员,请重新输入!'); Edit2.Text := '';
14
信息与计算科学系课程设计报告
Exit; end else begin
frmAdmin.ShowModal; end; end; end;
5.3 系统管理:
procedure TfrmAdmin.BitBtn3Click(Sender: TObject); begin
frmAddReader.Show; end;
procedure TfrmAdmin.Button1Click(Sender: TObject); begin
frmModifyReaderInfo.Show; end;
procedure TfrmAdmin.Button2Click(Sender: TObject); begin
frmNewBook.Show; end;
procedure TfrmAdmin.Button4Click(Sender: TObject); begin
frmLendBook.Show; end;
procedure TfrmAdmin.Button5Click(Sender: TObject); begin
frmYy.Show; end;
procedure TfrmAdmin.Button6Click(Sender: TObject); begin
frmModifyPsw.Show; end;
procedure TfrmAdmin.Button7Click(Sender: TObject); begin
if messagedlg('确定要退出吗?', mtinformation, [mbyes, mbno], 0) = mryes then
Close; end;
procedure TfrmAdmin.Button9Click(Sender: TObject); begin
ADOTable1.Close;
15
信息与计算科学系课程设计报告
ADOTable1.Filtered := false; if ComboBox1.Text = '学号' then begin
ADOTable1.Filter := '学号=''' + Edit1.Text + ''''; ADOTable1.Filtered := true; ADOTable1.Open; end else begin
ADOTable1.Filter := '姓名=''' + Edit1.Text + ''''; ADOTable1.Filtered := true; ADOTable1.Open; end; end;
procedure TfrmAdmin.Button8Click(Sender: TObject); begin
frmReturnBook.Show; end;
procedure TfrmAdmin.Button10Click(Sender: TObject); begin begin
ADOTable2.Close;
ADOTable2.Filtered := false;
if combobox2.Text = '图书编号' then begin
ADOTable2.Filter := '图书编号=''' + Edit2.Text + ''''; ADOTable2.Filtered := true; ADOTable2.Open; end else begin
ADOTable2.Filter := '作者=''' + Edit2.Text + ''''; ADOTable2.Filtered := true; ADOTable2.Open; end; end; end;
procedure TfrmAdmin.BitBtn4Click(Sender: TObject); begin
if Application.MessageBox('确实要删除记录?该命令不可取消!', '删除记录', MB_OKCANCEL) = IDOK then
ADOTable1.Delete else
16
信息与计算科学系课程设计报告
abort; end;
procedure TfrmAdmin.Button3Click(Sender: TObject); var
strBookID: string; begin
//更新图书信息表注销标志
if combobox2.Text = '图书编号' then begin
strBookID := Trim(Edit2.Text); DM.QueryReader.Close; DM.QueryReader.SQL.Clear;
strSql := 'update 图书明细表 set 状态=''注销'' where 图书编号=' + strBookID;
DM.QueryReader.SQL.Text := strSql; DM.QueryReader.ExecSQL; DM.QueryReader.Close;
if DM.QueryReader.RowsAffected > 0 then ShowMessage('该书注销成功!') else
ShowMessage('该书注销失败!'); end; end;
procedure TfrmAdmin.Button11Click(Sender: TObject); begin
frmBookType.Show; end; end.
管理图书确定按钮代码:
procedure TfrmBookType.btnSureClick(Sender: TObject); begin
if edtTypeID.Text = '' then begin
ShowMessage('类别编号不能为空!'); edtTypeID.SetFocus; Exit; end;
if edtBookType.Text = '' then begin
ShowMessage('类别名称不能为空!'); edtBookType.SetFocus; Exit; end;
DM.QueryBookType.Close;
17
信息与计算科学系课程设计报告
DM.QueryBookType.SQL.Clear; DM.QueryBookType.SQL.Text := 'insert into 图书类别(类别编号,图书类别)' + 'values(:id,:name)';
DM.QueryBookType.Parameters.ParamByName('id').Value:=Trim(edtTypeID.Text);
DM.QueryBookType.Parameters.ParamByName('name').Value:=Trim(edtBookType.Text);
{dm.QueryBookType.SQL.Text:='update 图书类别 set (类别编号,图书类别)'+'values(:id,:name)';
dm.QueryBookType.Parameters.ParamByName('id').Value:=trim(edtTypeID.Text);
dm.QueryBookType.Parameters.ParamByName('name').Value:=trim(edtBookType.Text);}
DM.QueryBookType.ExecSQL; DM.QueryBookType.Close; DM.QueryBookType.SQL.Clear;
DM.QueryBookType.SQL.Text :='select * from 图书类别'; DM.QueryBookType.ExecSQL; DM.QueryBookType.Open; end;
删除按钮代码:
procedure TfrmBookType.btnDeleteClick(Sender: TObject); begin if Application.MessageBox('是否删除记录?', '确定', MB_OKCANCEL) = IDOK then
DM.DataSourceBookType.DataSet.Delete; end;
5.4 借阅代码:
procedure TfrmLendBook.Button1Click(Sender: TObject); var
strBookID: string; begin
if editreaderID.Text = '' then begin
ShowMessage('借书证号不能为空!'); editreaderID.SetFocus; Exit; end;
if editBookID.Text = '' then begin
ShowMessage('图书编号不能为空!'); editBookID.SetFocus;
18
信息与计算科学系课程设计报告
Exit; end;
if getBookCount(editBookID.Text) <> 0 then begin
ShowMessage('此书已经被借出!'); Exit; end else begin
strBookID := Trim(editBookID.Text); DM.QueryBorrow.Close; DM.QueryBorrow.SQL.Clear;
DM.QueryBorrow.SQL.Text := 'update 借出信息 set 借出状态=1 where 图书编号= '+ strBookID;
DM.QueryBorrow.Close; DM.QueryBorrow.SQL.Clear; DM.QueryBorrow.SQL.Text := 'insert into 借出信息(图书编号,借书证号,借出日期,借出状态)values(:BookID,' + ':readerID,:time,1)';
DM.QueryBorrow.Parameters.ParamByName('Bookid').Value:=trim(editBookID.Text);
DM.QueryBorrow.Parameters.ParamByName('readerid').Value:=trim(editreaderID.Text);
DM.QueryBorrow.Parameters.ParamByName('time').Value:=DateTimePicker1.Time;
DM.QueryBorrow.ExecSQL; DM.QueryBorrow.Close; //更新图书信息表在库标志 DM.QueryReader.Close; DM.QueryReader.SQL.Clear;
strSql := 'update 图书明细表 set 状态=''借出'' where 图书编号= ' + strBookID;
DM.QueryReader.SQL.Text := strSql; DM.QueryReader.ExecSQL; DM.QueryReader.Close; end;
if messagedlg('借阅成功,还有要借的书籍吗?', mtconfirmation, [mbyes, mbno], 0) = mryes then begin
editBookID.Text := ''; editreaderID.Text := ''; editmax.Text := ''; DBEdit3.Text := ''; DBEdit4.Text := ''; DBEdit5.Text := '';
19
信息与计算科学系课程设计报告
DBEdit6.Text := ''; DBEdit7.Text := ''; editBookID.SetFocus; end; end;
其他相关实现代码:
procedure TfrmLendBook.editBookIDKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
if ViewBook(editBookID.Text) = false then begin
ShowMessage('没有此书, 请重新选择!'); Exit; end;
DM.QueryBook.Filtered := false;
DM.QueryBook.Filter := '图书编号=''' + editBookID.Text + ''''; DM.QueryBook.Filtered := true; end; end;
function TfrmLendBook.ViewBook(BookID: string): boolean; var Query: TADOQuery; begin
Query := TADOQuery.Create(self);
Query.Connection := DM.ADOConnection1;
Query.SQL.Add('select * from 图书明细表 where 图书编号=:id'); Query.Parameters.ParamByName('ID').Value := BookID; Query.Open;
if Query.RecordCount = 0 then begin
Result := false; ; Exit; end else
Result := true; end;
function TfrmLendBook.viewUser(user: string): boolean; var Query1: TADOQuery; begin
Query1 := TADOQuery.Create(self);
Query1.Connection := DM.ADOConnection1;
Query1.SQL.Add('select * from 学生信息表 where 借书证号=:id'); Query1.Parameters.ParamByName('ID').Value := user; Query1.Open;
20
信息与计算科学系课程设计报告
if Query1.RecordCount = 0 then begin
Result := false; Exit; end else
Result := true; end;
procedure TfrmLendBook.editreaderIDKeyPress(Sender: TObject; var Key: Char); begin
if Key = #13 then begin
editmax.Text := IntToStr(getOwnCount(editreaderID.Text)); if viewUser(editreaderID.Text) = false then begin
ShowMessage('没有此用户, 请重新选择!'); Exit; end; end; end;
function TfrmLendBook.getOwnCount(userID: string): integer; var Query2: TADOQuery; begin try
Query2 := TADOQuery.Create(self);
Query2.Connection := DM.ADOConnection1;
Query2.SQL.Add('select count(借书证号) from 借出信息 where 借书证号=:id ');
Query2.Parameters.ParamByName('ID').Value := userID; Query2.Open;
Result := Query2.Fields[0].Value; Query2.Close; Query2.Free; except
Result := 0; end; end;
function TfrmLendBook.getBookCount(BookID: string): integer; var Query2: TADOQuery; begin try
Query2 := TADOQuery.Create(self);
Query2.Connection := DM.ADOConnection1;
Query2.SQL.Add('select count(图书编号) from 借出信息 where 图书编号
21
信息与计算科学系课程设计报告
=:id and 借出状态=1');
Query2.Parameters.ParamByName('ID').Value := BookID; Query2.Open;
Result := Query2.Fields[0].Value; Query2.Close; Query2.Free; except
Result := 0; end; end;
5.5 归还按钮代码 :
procedure TfrmReturnBook.Button2Click(Sender: TObject); var BorrowBookID: string; BookID: string; strSql: string; strBookID: string; strDate:string; begin
strDate:=trim(edtToday.Text); if editreaderID.Text = '' then begin
ShowMessage('借书证号不能为空!'); editreaderID.SetFocus; Exit; end;
if editBookID.Text = '' then begin
ShowMessage('图书编号不能为空!'); editBookID.SetFocus; Exit; end;
BorrowBookID := Trim(editreaderID.Text); BookID := Trim(editBookID.Text);
if (BorrowBookID <> '') and (BookID <> '') then begin
QueryDelete.Close; QueryDelete.SQL.Clear;
strSql := 'update 借出信息 set 借出状态=0 ,还书日期=''' + strdate + ''' where 图书编号 =' + BookID + ' and 借书证号=''' + BorrowBookID + ''' and 借出状态=1 ';
QueryDelete.SQL.Add(strSql); QueryDelete.ExecSQL;
if QueryDelete.RowsAffected > 0 then
22
信息与计算科学系课程设计报告
begin
ShowMessage('还书成功!'); //更新图书信息表在库标志
strBookID := Trim(editBookID.Text); DM.QueryReader.Close; DM.QueryReader.SQL.Clear; strSql := 'update 图书明细表 set 状态=''在库'' where 图书编号=' +
strBookID;
DM.QueryReader.SQL.Text := strSql; DM.QueryReader.ExecSQL; DM.QueryReader.Close; end else
ShowMessage('此书已还过!'); end; end;
其它相关实现代码:
procedure TfrmReturnBook.editBookIDKeyPress(Sender: TObject; var Key: Char); begin
if Key = #13 then begin
if ViewBook(editBookID.Text) = false then begin
ShowMessage('没有此书, 请重新选择!'); Exit; end;
DM.QueryBook.Filtered := false;
DM.QueryBook.Filter := '图书编号=''' + editBookID.Text + ''''; DM.QueryBook.Filtered := true; edtToday.Text:=datetostr(date); end; end;
procedure TfrmReturnBook.editreaderIDKeyPress(Sender: TObject; var Key: Char); begin
if Key = #13 then begin
ADOQueryReturn.Close; ADOQueryReturn.SQL.Clear;
ADOQueryReturn.SQL.Add(' select 借出日期 from 借出信息 where 借书证号=''' + editreaderID.Text + ''''); ADOQueryReturn.ExecSQL;
ADOQueryReturn.Active := true;
23
信息与计算科学系课程设计报告
if ADOQueryReturn.RecordCount > 0 then
DBEdit1.Text := ADOQueryReturn.fieldbyname('借出日期').AsString; edtOwnDays.Text:= inttostr(Daysbetween(date,strtoDate(dbedit1.Text))); if daysbetween(date,strtoDate(dbedit1.Text)) >30 then edtOwnDays.Font.Color :=clRed;
label12.Caption:='您超期了,请下次及时归还!'; end; end;
function TfrmReturnBook.ViewBook(BookID: string): boolean; var Query: TADOQuery; begin
Query := TADOQuery.Create(self);
Query.Connection := DM.ADOConnection1;
Query.SQL.Add('select * from 图书明细表 where 图书编号=:id'); Query.Parameters.ParamByName('ID').Value := BookID; Query.Open;
if Query.RecordCount = 0 then begin
Result := false; ; Exit; end else
Result := true; end;
5.6 新书入库代码:
procedure TfrmNewBook.Button1Click(Sender: TObject); begin
if Edit2.Text = '' then begin
ShowMessage('图书名不能为空!'); Edit2.SetFocus; Exit; end;
if Edit1.Text = '' then begin
ShowMessage('图书编号不能为空!'); Edit1.SetFocus; Exit; end;
if Edit2.Text = '' then begin
ShowMessage('图书名不能为空!'); Edit2.SetFocus;
24
信息与计算科学系课程设计报告
Exit; end;
if Edit3.Text = '' then begin
ShowMessage('作者不能为空!'); Edit3.SetFocus; Exit; end;
if Edit5.Text = '' then begin
ShowMessage('出版社不能为空!'); Edit5.SetFocus; Exit; end;
if Edit4.Text = '' then begin
ShowMessage('售价不能为空!'); Edit4.SetFocus; Exit; end;
if Edit7.Text = '' then begin
ShowMessage('出版日期不能为空!'); Edit7.SetFocus; Exit; end;
ADOQuery1.Close; ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 图书明细表 where 图书编号=:A '); ADOQuery1.Parameters.ParamByName('A').Value := Edit1.Text; ADOQuery1.Open;
if ADOQuery1.RecordCount > 0 then begin
ShowMessage('该书已存在!'); Edit2.Text := ''; Edit1.Text := ''; Edit3.Text := ''; Edit4.Text := ''; Edit5.Text := ''; Edit6.Text := ''; Edit7.Text := ''; Edit2.Text := ''; Exit; end;
25
信息与计算科学系课程设计报告
if Edit6.Text = '' then begin
ShowMessage('图书类型名不能为空!'); Edit6.SetFocus; Exit; end;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'insert into 图书明细表(图书编号,类别编号,' + '图书名称,作者,出版社,出版日期,定价)' +
'values(:id,:type,:name,:author,:publish,:time,:price)';
ADOQuery1.Parameters.ParamByName('id').Value := Trim(Edit1.Text); ADOQuery1.Parameters.ParamByName('name').Value := Trim(Edit2.Text); ADOQuery1.Parameters.ParamByName('type').Value := trim(edit6.Text); ADOQuery1.Parameters.ParamByName('author').Value := Trim(Edit3.Text); ADOQuery1.Parameters.ParamByName('publish').Value := Trim(Edit5.Text);
ADOQuery1.Parameters.ParamByName('time').Value := StrToDate(Trim(Edit7.Text));
ADOQuery1.Parameters.ParamByName('price').Value := StrToFloat(Trim(Edit4.Text));
ADOQuery1.ExecSQL; ADOQuery1.Close; if messagedlg('入库完毕,还有要入库的书籍吗?', mtconfirmation, [mbyes, mbno], 0) = mryes then
begin
Edit2.Text := ''; Edit1.Text := ''; Edit3.Text := ''; Edit4.Text := ''; Edit5.Text := ''; Edit6.Text := ''; Edit7.Text := ''; Edit2.SetFocus; end; end;
5.7 密码修改代码:
procedure TfrmModifyPsw.Button1Click(Sender: TObject); begin try
with DM.ADOQuery1 do begin
if yhmedit.Text = '' then begin
26
信息与计算科学系课程设计报告
ShowMessage('用户名不能为空!'); yhmedit.SetFocus; Exit; end;
if jmmedit.Text = '' then begin
ShowMessage('请输入旧密码!'); jmmedit.SetFocus; Exit; end;
if xmmedit.Text = '' then begin
ShowMessage('请输入新密码!'); xmmedit.SetFocus; Exit; end;
if qrmmedit.Text = '' then begin
ShowMessage('请确认密码!'); qrmmedit.SetFocus; Exit; end; Close;
SQL.Clear;
SQL.Add('select * from 用户 where 姓名=:xm and 密码=:mm'); Parameters.ParamByName('xm').Value := Trim(yhmedit.Text); Parameters.ParamByName('mm').Value := Trim(jmmedit.Text); Open;
if RecordCount < 1 then begin
ShowMessage('旧密码不正确!'); Exit; end;
if xmmedit.Text <> qrmmedit.Text then begin
ShowMessage('新密码和旧密码不一致!'); Exit; end; end;
with DM.ADOQuery1 do begin Close;
SQL.Clear;
SQL.Add('update 用户 set 密码=:mm where 姓名=:xm');
27
信息与计算科学系课程设计报告
Parameters.ParamByName('xm').Value := Trim(yhmedit.Text); Parameters.ParamByName('mm').Value := Trim(xmmedit.Text); ExecSQL;
ShowMessage('密码修改成功!'); end; except
ShowMessage('密码修改失败!'); end;
jmmedit.Clear; xmmedit.Clear; qrmmedit.Clear; end;
5.7 读者服务代码:
(1)登陆代码
procedure TfrmReaderSer.Button1Click(Sender: TObject); begin
with DM.ADOQuery1 do begin Close; SQL.Clear;
SQL.Add('select * from 学生信息表 where 学号=:username and 密码=:pass ');
Parameters.ParamByName('username').Value := Edit1.Text; Parameters.ParamByName('pass').Value := Edit2.Text; Open;
Button4.Enabled := true; Button6.Enabled := true; Button5.Enabled := true;
ShowMessage('欢迎继续使用!'); if RecordCount < 1 then begin
ShowMessage('用户名或密码错误,请重新输入!'); Edit2.Text := ''; Exit; end else begin end; end; end;
(2)修改按钮代码:
procedure TfrmReaderSer.Button4Click(Sender: TObject);
28
信息与计算科学系课程设计报告
begin try
with DM.ADOQuery1 do begin Close; SQL.Clear;
SQL.Add('select * from 学生信息表 where 姓名=:xm and 密码=:mm'); Parameters.ParamByName('xm').Value := Trim(yhmedit.Text); Parameters.ParamByName('mm').Value := Trim(jmmedit.Text); Open;
if RecordCount < 1 then begin
ShowMessage('旧密码不正确!'); Exit; end;
if xmmedit.Text <> qrmmedit.Text then begin
ShowMessage('新密码和旧密码不一致!'); Exit; end; end;
with DM.ADOQuery1 do begin Close; SQL.Clear;
SQL.Add('update 学生信息表 set 密码=:mm where 姓名=:xm'); Parameters.ParamByName('xm').Value := Trim(yhmedit.Text); Parameters.ParamByName('mm').Value := Trim(xmmedit.Text); ExecSQL;
ShowMessage('密码修改成功!'); end; except
ShowMessage('密码修改失败!'); end;
jmmedit.Clear; xmmedit.Clear; qrmmedit.Clear; end;
29
因篇幅问题不能全部显示,请点此查看更多更全内容