图书馆管理系统-大作业.doc_第1页
图书馆管理系统-大作业.doc_第2页
图书馆管理系统-大作业.doc_第3页
图书馆管理系统-大作业.doc_第4页
图书馆管理系统-大作业.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

信息与计算科学系课程设计报告图书管理系统的设计1 系统功能11 主要功能图书管理系统主要实现以下5方面的功能:a.图书入库 b.查询 c.修改信息 d.图书借还e.系统管理12 功能描述1书籍管理功能:包括书籍类别管理和书籍信息管理两部分。2读者管理部分:这一部分包括对读者信息进行管理的功能。3借阅管理部分:这一部分包括借书信息管理和还书信息管理两部分。4系统管理:包括修改系统用户密码、增加新用户以及退出系统等。13 系统数据流程分析图书管理系统数据流程图如图1-3所示。读者基本信息录入录入图书基本信息录入录入读者信息管理图书信息管理借阅信息录入图书借阅管理读者信息库图书信息库图1-3 系统数据流程图14功能模块图本系统包括的模块主要有如下几个部分:图书管理模块、借阅管理模块、读者管理模块、系统管理模块、信息查询模块、用户管理模块 具体的功能描述如下: 图书管理:其功能是管理书库中图书的记录信息,对入库图书信息进行管理,并进行查询。借阅管理:其功能是对读者借阅信息进行查询。读者管理:其功能是对读者一般信息进行查询以及维护。系统管理:其功能是为系统的使用者进行帐户和密码管理以及基础数据维护。其子系统描述:1.图书管理包括图书入库功能,主要整理图书的数量、类别和各种相关的信息等。2.图书借阅,进行借书操作(此操作由管理员完成);当用户要查询自己的借阅情况时,可进行借阅查询。3.读者管理包括读者登记,读者信息管理,添加读者借书和还书信息。可以记录新加入的读者的信息,并且可以对已经存在于数据库中的读者的信息进行修改,同时可以进行读者借、还书的管理。4.用户管理包括修改密码、新增用户、删除用户可执行的系统操作等。5.信息查询包括图书查询、读者查询和用户查询等功能。通过这些功能,可以通过不同的关键字来对书库中的图书进行查询,同时也可以查询读者的借阅信息。6.系统管理是用来完成本系统的基本操作,如修改密码、登录系统、退出登录,还有系统简介等功能。 其功能模块图如下所示图书管理系统读者管理功能系统管理功能图书管理功能借阅管理功能新书入库功能图书类别功能读者信息功能读者查询功能增加用户密码修改借书管理功能还书管理功能图1-4功能模块图2 系统数据库设计21 E-R图E-R模型的“联系”用于刻画实体之间的关联。根据上面的设计可以规划出的实体有:读者实体、图书实体和借书信息实体。22 读者实体读者实体学号姓名系别借书证号证号性别联系电话图2-2读者实体23 图书实体图书实体出版日期数据库配置文件已经安装到 D:oracleproduct10.2.0,同时其他选定的安装组件也已经安装到 D:oracleproduct10.2.0db_1。iSQL*Plus URL 为:47:5560/isqlplusiSQL*Plus DBA URL 为:47:5560/isqlplus/dba证号出版日期数据库配置文件已经安装到 D:oracleproduct10.2.0,同时其他选定的安装组件也已经安装到 D:oracleproduct10.2.0db_1。iSQL*Plus URL 为:47:5560/isqlplusiSQL*Plus DBA URL 为:47:5560/isqlplus/dba证号图书编号出版日期数据库配置文件已经安装到 D:oracleproduct10.2.0,同时其他选定的安装组件也已经安装到 D:oracleproduct10.2.0db_1。iSQL*Plus URL 为:47:5560/isqlplusiSQL*Plus DBA URL 为:47:5560/isqlplus/dba证号出版日期数据库配置文件已经安装到 D:oracleproduct10.2.0,同时其他选定的安装组件也已经安装到 D:oracleproduct10.2.0db_1。iSQL*Plus URL 为:47:5560/isqlplusiSQL*Plus DBA URL 为:47:5560/isqlplus/dba证号作者图书名称类别编号图2-3图书实体24 借书实体E-R图借书信息实体图书编号借书证号借出日期还书日期借出状态图2-4借书实体25 系统实体E-R图读者图书借阅图2-5实体E-R图26 数据库设计由数据模型利用SQLsever2000进行数据库的详细设计,本系统设计的数据库名为shop,其基本表的设计如下:261学生信息表表2-6-1学生信息表字段名称数据类型大小学号varchar50姓名varchar20性别varchar4系别varchar5联系电话varchar50借书证号varchar50密码varchar15262图书明细表 表2-6-2图书明细表字段名称数据类型大小图书编号int50图书名称varchar20作者varchar4出版社varchar5出版日期varchar50定价varchar50类别编号varchar15状态char6263图书类别表2-6-3图书类别字段名称数据类型大小类别编号smallint2图书类别nvarchar20264用户表2-6-4用户字段名称数据类型大小姓名varchar20性别varchar4类型varchar50联系电话varchar15密码varchar50265借出信息表2-6-5借出信息字段名称数据类型大小借出编号int4图书编号int 4借书证号varchar50借出日期smalldatetime4借出状态bit43 系统实现3.1 系统数据库模型需分析 图3-1关系图3.2 系统主界面程序运行程序以后,就可以看到的程序的主界面,从这个界面中用户可以根据不同的身份进行不同的操作。3.3 管理员登录界面主程序运行后,点击管理员登录,跳出管理员登录界面,输入用户名和密码即可进入系统管理的后台界面。功能:本模块的主要功能是对操作用户身份的验证,只有系统的合法用户才能进入系统。在进行系统登录过程中,登录模块将调用数据库里的用户表,并对用户名和密码进行验证,只有输入了正确的用户名和密码后,系统登录才会成功。否则退出登录模块。并在输入了错误的或者是不存在的用户名和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或错误操作,以便用户进行正确的登录。其窗体如图3-3所示:管理员登录窗体:图3-3 管理员登录界面3.4 系统管理界面管理员登录成功后会进入如图3-4的系统管理界面,本模块的主要功能是实现管理员对系统的维护作用,管理员对读者进行信息查询、修改和删除,对图书进行注销和借阅归还管理。管理员输入学号或姓名可以查询读者的信息,输入图书编号或作者可以查询图书的信息。图3-4 系统管理界面3.5 修改图书类型在系统管理界面中点击修改图书类型可进入如图4-5的编辑图书类别的界面,本模块主要实现管理员对图书类别进行删除和添加的管理功能。图3-5 修改图书类型界面3.6 图书借阅和归还本模块主要实现的功能是读者对图书的借阅和归还:3.6.1 图书借阅模块 输入图书编号按回车图书信息会自动显示,再输入借书证号按回车会显示已借书数,如图3-6所示:图3-6 借阅图书界面 3.6.2 图书归还模块输入图书编号按回车图书信息会自动显示,再输入借书证号按回车会显示已借出日期和还书日期以及是否超期的信息提示,如图3-7所示:图3-7 图书归还界面3.7 新书入库本模块主要实现的是管理员对新书的入库管理,打 * 号的是必填项目,置空会有信息提示该项不能为空,如图3-8所示:图3-8新书入库界面3.7 系统密码修改本模块主要实现的功能是管理员进入系统管理界面后对管理员密码进行修改的操作,以保证系统的安全性,如图3-9所示:图3-9 系统密码修改界面3.9 读者服务本功能实现的是读者对图书的查询、借阅及归还操作以及对密码的修改的操作,读者必须先登录以后才能进行后面的修改密码、图书查询等操作,如图4-12所示:图3-10 读者服务界面4. 认识体会1认识体会:通过系统的在校学习和对外界的认识,我对软件开发的大致过程有了一些基本的了解,有了一些体会:程序没有最好,只有更好,程序没有十全十美,只有更完美;在编程的过程中,会遇到各种各样的问题,优秀的编程大师正是在解决了遇到的这些问题而积累经验的成果,提升了编程能力和丰富了编程思维。深入的体会:编程总会深入内部,深究根源,一个程序只有不断地测试和修改才能减少错误,才能提高质量,才能做得更好,程序是在不断地壮大的。编程需要严谨的思维,程序是一个逻辑产品,它存储在磁盘等物理介质中,它看不见,摸不着,它运行时一环接一环,一丝扣一丝,一旦出错,有可能导致难以预料的严重后果。而严谨的思维能使程序逻辑出错的可能性大大降低,也使程序易于维护。而且,保持严谨的思维总是一个好的习惯。在学习的过程中,要学会应用网络上的知识,把它变为自己的知识,应用在实际中来解决问题。因为在网络上有各种各样的资源可以供你参考。编程需要良好的编程习惯。好的编程习惯能给编程人员省去很多不必要的麻烦,提高了代码的清晰度,从而提高了程序的质量。三人行必有我师:不管你的编程水平有多高,都有不懂的地方,所以时刻都要虚心向他人学习来提高自己。连孔子都可以拜小孩为师,我们还有什么面子放不下的呢?3、总结:在一开始我通过编写设计初稿,对设计本系统有了比较深刻的认识,认真的考虑了每一步骤的执行,也发现编一个优秀的软件决不是一蹴而就的事情,需要长时间的积累和经验。然后,在老师的辅导和同学的帮助下,我更加深入的去考虑这个系统。并花了大量的心思和努力去完成这个系统。在做这个系统的这段时间里,我学到了我以前没有掌握牢的知识。更重要的是了解了作为一个开发人员开发一个系统软件的步骤和方法策略。如何去思考问题,又如何去解决问题总之,通过这次的系统设计,我学会了很多,也了解了很多。在这,我真诚的感谢辅导过我的老师,还有帮助过我的同学们。谢谢! 参考文献:1 刘斌,李文革Delphi7数据库高级教程M 北京:清华大学出版社,20042 李军, 张桂英,徐波 Delphi7项目开发实践M 北京:中国铁道出版社,20033 刘国钧,陈绍业,王凤翥.图书馆目录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; 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.Panels2.Text := 日期: + DateToStr(Date); StatusBar1.Panels3.Text := 时间: + TimeToStr(Time);end;procedure TfrmMain.SkinData1FormSkin(Sender: TObject; aName: String; var DoSkin: Boolean);beginskindata1.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 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; 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; 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 := ; 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; 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.Fields0.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 图书编号=:id and 借出状态=1); Query2.Parameters.ParamByName(ID).Value := BookID; Query2.Open; Result := Query2.Fields0.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 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; 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; Exit; end; if Edit3.Text = then begin ShowMessage(作者不能为空!); Edit3.SetFocus; Exit; end; if Edit5.Text = then begin ShowMessage(出版社不能为空!); Edit5.SetFocus; Exit; end; if Edit4.Te

温馨提示

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

评论

0/150

提交评论