图书管理系统课程设计报告1_第1页
图书管理系统课程设计报告1_第2页
图书管理系统课程设计报告1_第3页
图书管理系统课程设计报告1_第4页
图书管理系统课程设计报告1_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、 南京信息工程大学 课程设计报告 课程名称 数据库系统基础 设计题目 图书管理系统 姓名 学号 专业班级 2011 级计科 2 班 2013 年 12 月 26 号 1 引引 言言 1.1 问题的提出问题的提出 图书管理系统是一个学校不可缺少的部分,它的内容对于学校的管理者和 读者来说都至关重要,直接关系到图书的借用率,所以开发图书管理系统能够为 管理员和读者提供充足的信息和快捷的查询手段。 编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图 书、还书;增加借书证、查询借书证、删除借书证、借书信息、借书限制等智 能化管理过程。图书管理者只需略懂电脑知识就可以简易的操作该图书管理系

2、 统。 1.2 任务与分析任务与分析 本课题主要的目的是: 1强化和巩固理论基础,掌握数据库编程的基本技巧; 2要求用 c#语言或其它语言及相应开发环境,实现一个小型完整程序的 设计与开发; 系统概述: 1.图书管理: 每种图书都有书名、书号(isbn) 、一名或多名作者(译者) 、出版社、定价和内容简介。图书信息登入、查询和维护。 2.读者管理,包括增加读者、修改读者信息,查询借书证持有人,删除读 者信息等功能 4.借还图书、资料的登记、超期处理等。 5.图书、资料查询,借、还图书和资料情况查询。 6.图书、资料借阅情况的统计分析,以此作为图书馆图书、资料订够的依 据之一。 设计要求: 1.

3、进行需求分析,编写数据字典。 2.设计 e-r 图。 3.实现新进图书的数据录入。 4.实现对所有购进图书的分类查询和分类统计。 5.能够按图书编号、图书名等分类查询现有图书的数量。 6.记录借阅者的个人资料和所借图书的书名、书号数据等。 2 2 程序的主要功能程序的主要功能 2.1 添加功能添加功能 添加一本图书的基本信息,包括书名、书号、名作者(译者) 、出版社和 图书简介。 添加读者的相关信息 添加图书借阅的基本信息,包括书号,借书证号,借书日期,应还书日期。 2.2 删除功能删除功能 删除一本图书的基本信息,删除读者的基本信息,删除图书借阅基本信息。 删除读者相关信息 2.3 显示功能

4、显示功能 显示所有图书信息,包括图书代码,图书名称,作者,出版社和简介。 显示所有借阅信息,包括读者号,图书号,借书日期,应还书日期。 2.4 查找功能查找功能 图书信息查找,可以更具图书代码,图书名称,作者,出版日期和出版社 进行查找。 读者信息查找,可更具读者姓名,读者编号,年龄,性别和所在系进行查 找。 借阅信息查询,可更具图书编号和读者编号进行查询。 2.5 修改功能修改功能 对图书和读者的信息进行修改。 2.62.6 备份和还原功能备份和还原功能 对数据库数据进行备份和还原,保护数据库的安全 3 3 系统的总体结构系统的总体结构 3.13.1 模块描述模块描述 图书馆信息管理系统可以

5、分为四个模块, “综合查询模块” , “读 者登陆模块” , “借还图书模块” ,和“系统维护模块 。 为了区分不同的用户,我们设置管理员和普通用户的登录,分 别对管理员和普通用户进行不同的用户权限设置,对他们的所能进 行的操作进行不同的限制 图书馆信息管理系统的功能模块如下图(2-1)所示 图2-1 2.2 系统总体流程图系统总体流程图 图书管理系统 综合查询 借还管理 读者登录 系统维护 图 书 信 息 查 询 多 条 件 查 询 借 书 管 理 还 书 管 理 密 码 修 改 管 理 员 登 录 修 改 密 码 借 阅 查 询 读 者 信 息 维 护 图 书 信 息 维 护 管 理 员

6、信 息 维 护 备 份 与 还 原 用户进入图书馆管理系统,成功登陆后,首先进行权限验证,对于普通管理员可以进行借 书处理,还书处理,逾期处理, 。读者可以进行图书信息查询,修改自己的密码,查阅自己 的借阅记录,图书续借,罚金信息查询。系统管理员可以进行图书,读者信息维护,系统 维护等操作 开始 登录 判断 普通用户登录 管理员登录 图 书 查 询 借 阅 查 询 密 码 修 改 图 书 信 息 管 理 用 户 信 息 管 理 密 码 修 改 管 理 员 信 息 安 全 管 理 退出 第第 3 章章 数据库设计数据库设计 3.1 数据库需求分析数据库需求分析 用户的需求具体体现在各种信息的提供

7、、保存、更新和查询,这就要求数据库结构能 充分满足各种信息的输出和输入,收集基本数据、数据结构以及数据处理的流程,组成一 份详尽的数据字典,为后而后具体设计打下基础。根据分析,可以列出以下数据项和数据 结构: 图书信息,包括的数据项有:isbn 号,索书号,书名,作者,价格,出版日期,出版社, 管理员信息:管理员号,姓名,电话,身份证号,密码,权限。 借阅信息:,读者账号,借出时间,应还时间。 罚金信息:读者账号,金额。 读者信息:读者账号,姓名,性别,身份证号,系别,密码。 3.2 数据库物理结构设计数据库物理结构设计 得到上面的数据项和数据结构后,就可以设计出能够满足用户需求的各种实体,以

8、及 它们之间的关系,为后面的逻辑结构设计打下基础。 以下分别是读者 e-r 图,图书 e-r 图,借阅信息 e-r 图,出版社 e-r 图,书库 e-r 图 读者 e-r 图 读者 性别 读者证 号 姓名 押金 身份证 号 出生日 期 登录密 码 身份 图书 e-r 图 图书 价格 isbn 编 号 图书类 型 书名 作者 出版时 间 图书译 者 出版社 借阅信息 e-r 图 借阅信息 读者证 号 借出时 间 归还时 间 借阅状 态 图书条 形码 读者 姓 名 性 别 押 金 身 份 证 号 职 业 出 生 日 期 密 码 编 号 图书借阅 读 者 证 号 借 出 时 间 归 还 时 间 借

9、阅 状 态 图 书 i s b n 借阅 管理员 类 别 密 码 身 份 证 生 日 性 别 姓 名 编 号 图书 i s b n 图 书 名 作 者 出 版 社 价 格 出 版 日 期 类 别 译 者 管理 管理 3.3 数据库逻辑结构设计数据库逻辑结构设计 在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的 关系。图书管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示 在数据库中的一个表。 表(3-2)图书数据表 字段名类型长度是否为空主键外键说明 isbnvarchar20否是否isbn 号 datevarchar20否否否 booknameva

10、rchar40否否否书名 writervarchar20否否否作者 pricenumeric否否否单价 publishervarchar40是否是(出版社)出版社 publishdatedatetime4是否否出版日期 表(3-6)读者数据表 字段名类型长度是否为空主键外键说明 isbnvarchar20否是否读者账号 namevarchar8否否否姓名 sexchar2否否否性别 identitycardchar18否否否身份证号 telvarchar20是否否电话 keepmoneymoney10是否否押金 zyvarchar20是否否职业 datevarchar20是否否出生日期 表(3

11、-3)图书借阅数据表 字段名类型长度是否为空主键外键说明 bookisbnchar20否是否图书编号 readerisbnchar20否否示(读者) 读者账号 borrowdatedatetime否是否借出时间 shouldbackdatedatetime否否否应还时间 bookpricemoney4否否否价格 booknamevatchar20否否否书名 表(3-8)用户数据表 字段名类型长度是否为空主键外键说明 idchar4否是否管理员编号 namevarchar8否否否姓名 telvarchar11否否否电话 adminchar1否否否用户类别 passwordvarchar20否否否

12、密码 sexchar2否否否性别 identitycardchar18否否否身份证号 ageint2否否否年龄 第第 4 章章 详细设计详细设计 4.1 用户界面设计用户界面设计 当今软件界的所有软件无不是可视化的用户界面,它的好处不外乎它有美观、直接、 操作者易懂和操作方便等好处。本系统设计思想:“为用户设计,而不是设计者”本系统 设计原则:界面美观、操作方便并能高效率地完成工作。界面根据用户需求设计。界面能 引导用户操作的功能,并能提供一些帮助功能。 .1 登录界面登录界面 系统登录界面截图如下: 在用户登录界面,我们设置一个用户类别的选项,来判断登录系统的用户身份,不同的

13、身 份具有不同的权限,以此来保障系统的安全 代码如下: string str = server=lenovo-y470;uid=sa;pwd=123;database=db_library; sqlconnection con=new sqlconnection(str); string sql=select name,password,admin from tb_users where name=+textbox1.text+and password=+textbox2.text+and admin=+combobox1.text+; sqlcommand cmd = new sqlcomm

14、and();/打开数据库连接 cmd.commandtext = sql; cmd.connection = con; con.open(); sqldatareader rd = cmd.executereader(); if (rd.read() if(combobox1.text=1) /messagebox.show(正在登陆); a = textbox2.text; mainform mform = new mainform(); mform.show();/显示管理员登录界面 con.close(); this.visible = false; / if (radiobutton1

15、.text = 0) else a = textbox2.text; vicemainform mform = new vicemainform(); mform.show();/显示普通用户的登录界面 con.close(); this.visible = false; else messagebox.show(请输入正确的账户和密码); private void button2_click(object sender, eventargs e) this.close();/关闭窗口 .2 主界面显示主界面显示 管理员主界面截图如下 代码如下 namespace window

16、sformsapplication1 public partial class mainform : form public mainform() initializecomponent(); private void 图书数据维护toolstripmenuitem_click(object sender, eventargs e) fmdatats ts = new fmdatats(); ts.show(); private void 读者数据维护toolstripmenuitem_click(object sender, eventargs e) fmdatadz dz = new fm

17、datadz(); dz.show(); private void 用户数据维护toolstripmenuitem_click(object sender, eventargs e) fmdatayh yh = new fmdatayh(); yh.show(); private void 用户密码修改toolstripmenuitem_click(object sender, eventargs e) fmdatamm mm = new fmdatamm(); mm.show(); private void 图书借阅toolstripmenuitem_click(object sender,

18、 eventargs e) fmjy jy=new fmjy(); jy.show(); private void 图书搜索toolstripmenuitem_click(object sender, eventargs e) fmcx cx = new fmcx(); cx.show(); private void 图书归还toolstripmenuitem_click(object sender, eventargs e) fmgh gh = new fmgh(); gh.show(); private void 数据库还原toolstripmenuitem_click(object se

19、nder, eventargs e) ; sqlconnection conn = new sqlconnection( server=lenovo- y470;database=master;uid=sa;pwd=123;); sqlconnection c = new sqlconnection(server=lenovo- y470.;database=master;uid=sa;pwd=123;trusted_connection=false); c.open(); /c.close(); sqlcommand cmdrt=new sqlcommand(); cmdrt.command

20、type=commandtype.text; cmdrt.connection=c; cmdrt.commandtext=use master restore database tb_library from disk=c:/ba.bak with replace; try cmdrt.executenonquery(); messagebox.show(restore successed.); catch (exception ex) messagebox.show(ex.message); finally c.close(); private void 数据库备份oolstripmenui

21、tem_click(object sender, eventargs e) sqlconnection conn = new sqlconnection( server=lenovo- y470;database=master;uid=sa;pwd=123;); sqlcommand cmdbk = new sqlcommand(); cmdbk.commandtype = commandtype.text; cmdbk.connection = conn; cmdbk.commandtext = backup database db_library to disk=c:/ba.bak wit

22、h init; try conn.open(); cmdbk.executenonquery(); messagebox.show(backup successed.); messagebox.show(已备份于c盘根目录下.); conn.close(); catch (exception ex) messagebox.show(ex.message); finally conn.close(); conn.dispose(); private void 退出toolstripmenuitem1_click(object sender, eventargs e) this.close();

23、4.1.3 图书数据维护模块界面如下 代码如下: namespace windowsformsapplication1 public partial class fmdatats : form public fmdatats() initializecomponent(); private void groupbox1_enter(object sender, eventargs e) private void txttsbh_textchanged(object sender, eventargs e) private void formdatats_load(object sender,

24、eventargs e) try sqlconnection con = dbconnect.con(); string sql = select *from tb_bookinfo; sqldataadapter adpt = new sqldataadapter(sql, con); dataset ds = new dataset(); adpt.fill(ds, tb_bookinfo); datagridview1.datasource = ds.tables0.defaultview; con.close(); catch (exception cw) messagebox.sho

25、w(cw.message); public void binding() try txttsbh.text = datagridview1.selectedcells0.value.tostring(); txttslb.text = datagridview1.selectedcells1.value.tostring(); txttsmc.text = datagridview1.selectedcells2.value.tostring(); txttszz.text = datagridview1.selectedcells3.value.tostring(); /txttsyz.te

26、xt = datagridview1.selectedcells4.value.tostring(); txttscbs.text = datagridview1.selectedcells4.value.tostring(); txtcbrq.text = datagridview1.selectedcells5.value.tostring(); txttsjg.text = datagridview1.selectedcells6.value.tostring(); catch (exception cw) messagebox.show(cw.message); private voi

27、d datagridview1_cellcontentclick(object sender, datagridviewcelleventargs e) binding(); private boolean check(string tsid) sqlconnection con = dbconnect.con(); con.open(); string sql = select *from tb_bookinfo where isbn= + tsid + ; sqlcommand cmd = new sqlcommand(sql, con); sqldatareader rd; rd = c

28、md.executereader(); int x = 0; while (rd.read() x+; con.close(); if (x 0) return true; else return false; private void btnadd_click(object sender, eventargs e) if (txttsbh.text != ) if (!check(txttsbh.text) sqlconnection con = dbconnect.con(); con.open(); sqlcommand cmd = new sqlcommand(); cmd.comma

29、ndtext = insert into tb_bookinfo values( + txttsbh.text + , + txttslb.text + , + txttsmc.text + , + txttszz.text + , + txttscbs.text + , + txtcbrq.text + , + txttsjg.text + ); cmd.connection = con; cmd.executenonquery(); messagebox.show(输入数据成功!); string sql = select *from tb_bookinfo; sqldataadapter

30、 adpt = new sqldataadapter(sql, con); dataset ds = new dataset(); adpt.fill(ds, tb_bookinfo); datagridview1.datasource = ds.tables0.defaultview; con.close(); else messagebox.show(图书编号不能重复); else messagebox.show(图书编号不能为空); private void btnupdate_click(object sender, eventargs e) if (messagebox.show(你

31、确定要修改图书数据吗!, 消息框, messageboxbuttons.okcancel, messageboxicon.information) = dialogresult.ok) if (txttsbh.text != ) if (check(txttsbh.text) try sqlconnection con = dbconnect.con(); con.open(); sqlcommand cmd = new sqlcommand(); cmd.commandtext = update tb_bookinfo set typeid= + txttslb.text + ,bookna

32、me= + txttsmc.text + ,writer= + txttszz.text + ,publisher= + txttscbs.text + ,date= + txtcbrq.text+ ,price= + txttsjg.text + where isbn=+txttsbh.text+; cmd.connection = con; cmd.executenonquery(); messagebox.show(修改数据成功!); string sql = select *from tb_bookinfo; sqldataadapter adpt = new sqldataadapt

33、er(sql, con); dataset ds = new dataset(); adpt.fill(ds, tb_bookinfo); datagridview1.datasource = ds.tables0.defaultview; con.close(); catch (exception cw) messagebox.show(cw.message); else messagebox.show(图书编号不存在); else messagebox.show(图书编号不能为空); private void btndelete_click(object sender, eventargs

34、 e) if (messagebox.show(你确定要删除图书数据吗!, 消息框, messageboxbuttons.okcancel, messageboxicon.information) = dialogresult.ok) if (txttsbh.text != ) if (check(txttsbh.text) try sqlconnection con = dbconnect.con(); con.open(); sqlcommand cmd = new sqlcommand(); cmd.commandtext = delete from tb_bookinfo where

35、isbn= + txttsbh.text + ; cmd.connection = con; cmd.executenonquery(); messagebox.show(删除数据成功!); string sql = select * from tb_bookinfo; sqldataadapter adpt = new sqldataadapter(sql, con); dataset ds = new dataset(); adpt.fill(ds, tb_bookinfo); datagridview1.datasource = ds.tables0.defaultview; con.c

36、lose(); catch (exception cw) messagebox.show(cw.message); else messagebox.show(图书编号不存在); else messagebox.show(图书编号不能为空); 4.1.4 读者数据维护模块 读者数据维护模块截图如下: 代码参照图书信息维护代码 4.1.5 用户管理模块 用户管理模块截图如下 代码如下参照图书信息维护代码 4.1.6 密码修改模块 在密码修改模块中我们要求用户输入旧密码,验证旧密码是否正确,若正 确,则进入新密码设置界面,重复输入两次新密码,若两次新密码输入相同, 则设置新密码成功,否则设置新密码失

37、败,以此来确保密码的安全性 截图如下 关键代码如下: private void button1_click(object sender, eventargs e) if (form1.a).equals(txtjmm.text) fmxmm xmm = new fmxmm(); xmm.show(); this.visible = false; ; /a为静态变量,用来得到文本框内的值 private void brnqr2_click(object sender, eventargs e) if (textbox1.text = textbox1.text) sqlconnection co

38、n = dbconnect.con(); con.open(); sqlcommand cmd = new sqlcommand(); cmd.commandtext = update tb_users set password= + textbox1.text + ; cmd.connection = con; cmd.executenonquery(); messagebox.show(密码修改成功); 4.1.7 图书借阅界面 图书借阅界面截图如下 代码如下 namespace windowsformsapplication1 public partial class fmjy : fo

39、rm public fmjy() initializecomponent(); private void fmjy_load(object sender, eventargs e) try sqlconnection con = dbconnect.con(); string sql = select * from bookborrow6; sqldataadapter adpt = new sqldataadapter(sql, con); dataset ds = new dataset(); adpt.fill(ds, bookborrow6); datagridview1.dataso

40、urce = ds.tables0.defaultview; con.close(); catch (exception cw) messagebox.show(cw.message); public void binding() try textbox1.text = datagridview1.selectedcells0.value.tostring(); textbox2.text = datagridview1.selectedcells1.value.tostring(); textbox3.text = datagridview1.selectedcells2.value.tos

41、tring(); textbox4.text = datagridview1.selectedcells3.value.tostring(); /txttsyz.text = datagridview1.selectedcells4.value.tostring(); textbox5.text = datagridview1.selectedcells4.value.tostring(); textbox6.text = datagridview1.selectedcells5.value.tostring(); /txttsjg.text = datagridview1.selectedc

42、ells6.value.tostring(); catch (exception cw) messagebox.show(cw.message); private void label6_click(object sender, eventargs e) private void datagridview1_cellcontentclick_1(object sender, datagridviewcelleventargs e) binding(); private boolean check(string tsid) sqlconnection con = dbconnect.con();

43、 con.open(); string sql = select * from tb_bookinfo where isbn= + tsid + ; sqlcommand cmd = new sqlcommand(sql, con); sqldatareader rd; rd = cmd.executereader(); int x = 0; while (rd.read() x+; con.close(); if (x 0) return true; else return false; private void button1_click(object sender, eventargs

44、e) if (textbox1.text != ) if (!check(textbox1.text) sqlconnection con = dbconnect.con(); con.open(); sqlcommand cmd = new sqlcommand(); cmd.commandtext = insert into bookborrow6 values( + textbox1.text + , + textbox2.text + , + textbox3.text + , + textbox4.text + , + textbox5.text + , + textbox6.tex

45、t+ ); cmd.connection = con; cmd.executenonquery(); messagebox.show(输入数据成功!); string sql = select * from bookborrow6; sqldataadapter adpt = new sqldataadapter(sql, con); dataset ds = new dataset(); adpt.fill(ds, bookborrow6); datagridview1.datasource = ds.tables0.defaultview; con.close(); else messag

46、ebox.show(图书编号不能重复); else messagebox.show(图书编号不能为空); 4.1.8 图书归还界面 图书归还界面如下 4.2.1 数据库的备份和还原 数据库备份和数据库还原是为了保证数据库的内容安全而设置的 代码如下: private void 数据库备份toolstripmenuitem_click(object sender, eventargs e) sqlconnection conn = new sqlconnection( server=lenovo- y470;database=master;uid=sa;pwd=123;); sqlcommand cmdbk = new sqlcommand(); cmdbk.commandtype = commandtype.text; cmdbk.connection = conn; cmdbk.commandtext = backup database db_library to disk=c:/ba.bak with init; try conn.open(); cmdbk.executenonquery(); messagebox.show(backup successed.); messagebox.show(已备份于c盘根目录下.);

温馨提示

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

评论

0/150

提交评论