版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南工业大学课 程 设 计资 料 袋 计算机与通信 学院(系、部) 2011 2012 学年第 2 学期 课程名称 数据库系统原理 指导教师 龙巧云 职称 副教授 学生姓名 邓 泽 建 专业班级 计算机科学与技术 学号 09408100307 题 目 图书馆管理系统 成 绩 起止日期 2011 年 12月 11 日 2011 年 12月 18日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书12课程设计说明书13课程设计图纸张456湖南工业大学课程设计任务书2011 2012 学年第 2 学期 计算机与通信 学院(系、部) 计算机科学与技术 专业 09-3 班级课程名称: 数据库
2、系统原理 设计题目: 图书馆管理系统 完成期限:自 2011 年 12 月 11 日至 2011 年 12 月 18 日共 1 周内容及任务一、设计的主要技术参数二、设计任务三、设计工作量通过所学过的visual basic、c+:面向对象程序设计、数据库系统概论和软件工程理论、方法与实践及相关资料的查询,设计一个图书馆管理系统,使之具有一般的仓库所需要的功能。1.分析设计图书馆管理系统所要应用的功能,正确做出分析设计图。2.运用所学的知识和相关资料的查询,上机编写及调试源程序,进一步提高编程技巧及调试程序能力。3.所设计的系统能够正确的运行,且认真书写课程设计说明书。4.遵守课程设计要求和机
3、房管理制度,服从指导教师的安排,确保课程设计的顺利完成。进度安排起止日期工作内容 2011-12-112011-12-12需求分析、概念设计、e-r模型设计2011-12-132011-12-15系统流程图、系统体系结构设计2011-12-162011-12-18 系统模块算法的具体实现过程主要参考资料1 李涛,刘凯奎,王永皎.visual c+ +sql server数据库开发与实例m.北京:清华大学出版社,2006.7 2 李涛,游洪跃,陈良银,李琳. c+:面向对象程序设计m.北京:高等教育出版社,出版社,2006.23 王珊,师煊.数据库系统概论m.北京:高等教育出版社,2008.4
4、孙家广,刘强.软件工程理论、方法与实践m.北京:高等教育出版社,2005.指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日2计算机与通信学院课程设计稿纸数据库系统原理课程设计说明书图书馆管理系统起止日期: 2011 年 12 月 11 日 至 2011 年 12 月 18日学生姓名邓 泽 建班级计算机 09-3班学号09408100307成绩指导教师(签字)计算机与通信 学院(部)2011年 12月 19日33目录1 概述12 需求分析13系统设计23.1 总体设计框架23.2 系统流程分析23.3 数据库设计34系统实现过程44.1 连接数据库44.2 用户进入界面44.
5、3 系统的主界面64.4 书库管理84.5 借阅证管理244.6 系统管理285 总结306 参考文献311 概述随着人们知识层次的提高图书馆成为日常生活中不可缺少的一部分。而图书馆的存书量和业务量庞大,仅仅靠传统的记账式管理式不可行的。图书馆管理系统应运而生,逐渐成为信息化建设的重要组成部分。图书馆管理系统为学校或者社会型图书馆的管理员提供所有借阅者的详细信息,以及馆内库存的详细情况,对借书和还书两大功能进行合理操纵并登记。本系统主要包括以下几个主要功能(1)进入系统前需要身份验证、用户名、密码,输入正确后方可进入。(2)用户可以根据需要进行书库管理。(3)用户可以进行借书证的办理、查询、挂
6、失等操作。(4)用户可以添加账号和修改密码和退出系统等功能。2 需求分析2.1数据库需求分析通过对图书馆管理系统功能的分析和实际调查情况,图书馆管理系统需要包括以下数据库信息。 (1)管理员基本信息:包括图书id、密码等。(2)图书信息:包括图书id、图书名称、作者、出版社、单价、入库时间、图书总量、现存总量。(3)借书信息:包括借书号、借阅卡号、所借图书的名字、借书日期。(4)借阅卡信息:包括借阅卡号、读者姓名、性别、出生日期、家庭住址、身份证号码、电话号码、现借书总数。(5)罚金管理:包括罚金号、借阅证号、图书号、借出时间、返还时间、罚金。2.2 概念设计 e-r 图模型图书信息借阅证信息
7、借书信息罚单信息writerbook_namepressbook_idpricenow_amounttotal_amountinlibrary_datasexbirth_timeid_numbernow_borrow_amountnameproof_idaddresstel_numberborrow_idborrow_dateborrow_datepuni_idretrun_datepuni_moneynmpt2.3系统功能分析本系统功能模块主要包括以下几部分:身份验证、书库管理、借阅证管理、系统管理和退出。(1)身份验证:提供系统的访问控制功能。(2)书库管理:包括新书登记、借书、还书、书籍
8、挂失、图书信息查询、借书信息查询等功能。(3)借阅证管理:其提供办理借阅证、借阅证信息查询、借阅证挂失功能。(4)系统管理:包括添加账号、修改密码和退出系统等功能。(5)系统管理:其功能是为系统的使用者提供密码管理和数据备份、恢复管理。3系统设计3.1 总体设计框架系统总体设计图如下:图书馆管理系统身份验证书库管理新书登记借书/还书书籍挂失图书信息查询查询借书信息查询借阅证管理办理借阅证借阅证查询借阅证挂失系统管理添加帐号修改密码退出 图1 图书馆管理系统总计设计图3.2系统流程分析在系统运行时的动态模型应该由系统的流程决定。当用户登录系统后,可以根据拥有的权限来进行书库的管理、借阅证的管理等
9、操作,具体的流程如图2所示。登录界面用户验证登录失败登录成功书库管理系统管理借阅管理退出系统图2 图书馆管理系统流程图3.3 数据库设计基本表的设计如下:(1) 管理员基本信息表 管理员基本信息表(admin_info)包含了图书馆管理员的基本信息,其结构如表1所示。表1 管理员基本信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明workidintegernot null主键地方id值user_namevarchar2(24)not null无姓名passwordvarchar2(24)not null无密码(2) 图书信息表图书信息表(book_info)包含了图书馆所有
10、图书的基本信息,用来方便读者查询和借阅,其结构如表2所示。表2:图书信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明book_idvarchar(50)not null主键书籍id值book_namevarchar(50)not null无书名writervarchar(50)not null无作者pressvarchar(50)not null无出版社pricefloatnot null无单价inlibrary_datadatanot null无入库时间total_amoutintegernot null无总量now_amountintegernot null无现存量(3
11、) 借阅卡信息表借阅卡信息表(proof_info)包含了所有读者的借阅卡信息,用来方便读者借阅和管理员,其结构如表3所示。表3:借阅卡信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明proof_idvarchar(50)not null主键借阅卡idnamevarchar(50)not null无姓名sexvarchar(50)not null无性别birth_timedatanot null无出生日期addressvarchar(50)not null无地址id_numbervarchar(50)not null无身份证号码tel_numbervarchar(50)no
12、t null无电话号码now_borrow_amountintegernot null无现借书总量(4) 借书信息表借书信息表(borrow_info)包含了所有图书借阅的信息,用来方便管理员管理图书馆的图书出借情况,其结构如表4所示。表4:借书信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明borrowidintegernot null主键借书idproof_idvarchar(50)null外键(proof_info)借书卡idbook_idvarchar(50)null外键(proof_info)书籍idborrow_datedatanull无产品备注 (5) 罚单信
13、息表 罚单信息表(punish_info)包含了所有读者的罚金信息,用来方便管理员管理图书过期的情况,其结构表如表5所示。表5 罚单信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明puni_idintegernot null主键罚单idproof_idvarchar(50)not null外键(proof_info)借书卡idbook_idvarchar(50)not null外键(proof_info)图书idborrow_datedatanot null无借出日期return_datedatanot null无返还日期puni_moneyinteger)not null
14、无罚金4系统实现过程打开visual c+6.0,新建工程名为“library”的基于对话框的mfc appwizardexe。visual c+6.0会自动生成一些类、文件和主题框架。为了实现系统与数据库的连接,visual c+6.0有支持odbc的文件,只需在“stdafx.h”中添加#include afxdb.h即可实现和数据库的连接。4.1 连接数据库 当函数启动后,就要连接数据库,需要3个参数:odbc数据源名称、数据库用户名称、数据库用户密码。登录到主界面之前,首先调用管理员登录模块。从数据库中读入admin_info表中的内容,判断用户输入的用户名和密码是否正确。4.2 用户
15、进入界面功能:当使用者使用此系统时,只有用户名和密码都正确时,才可以通过进入界面进入此系统的主界面。其窗体如下:图3 登录界面主要代码如下。 void clibrarydlg:onok() / todo: add extra validation hereupdatedata();if(m_strusername.isempty()messagebox(please input your username!,登录系统,mb_ok|mb_iconexclamation);m_strusername.empty();updatedata(false);return;if(!m_database.i
16、sopen()/连接数据源if(!m_database.open(_t(library)messagebox(连接数据库失败!,图书管理系统,mb_ok|mb_iconinformation);return;cloginset *m_plogset=new cloginset(&m_database);/编写sql语句cstring strsql;strsql.format(select * from admin_info where user_name=%s and password=%s,m_strusername,m_strpassword);/编写sql语句结束m_plogset-op
17、en(afx_db_use_default_type,strsql);if(m_plogset-getrecordcount()=0)if(countopen(afx_db_use_default_type,strsql);if(m_pset-getrecordcount()!=0)m_pset-edit();m_pset-m_total_amount=m_pset-m_total_amount+m_ltotal;m_pset-m_now_amount=m_pset-m_now_amount+m_lnow;m_pset-update();m_pset-requery();m_pset-clos
18、e();m_database.close();messagebox(adding new books successfully!,新书入库登记);onbuttoncheckbooks();return;m_pset-close();if(m_strbookid=|m_strbookname=|m_strwriter=|m_strpress=|m_dprice=0|m_ltotal=0|m_lnow=0)messagebox(请正确填写要求的数据!,新书登记入库);m_database.close();return;strsql.format(select * from book_info);m
19、_pset-open(afx_db_use_default_type,strsql);/if(m_pset-getrecordcount()=0)/messagebox(there are not any book information!,新书登记);/m_pset-addnew();m_pset-setfieldnull(&(m_pset-m_book_id),false);m_pset-m_book_id=m_strbookid;m_pset-setfieldnull(&(m_pset-m_book_name),false);m_pset-m_book_name=m_strbooknam
20、e;m_pset-setfieldnull(&(m_pset-m_writer),false);m_pset-m_writer=m_strwriter;m_pset-setfieldnull(&(m_pset-m_press),false);m_pset-m_press=m_strpress;m_pset-setfieldnull(&(m_pset-m_price),false);m_pset-m_price=m_dprice;m_pset-setfieldnull(&(m_pset-m_total_amount),false);m_pset-m_total_amount=m_ltotal;m
21、_pset-setfieldnull(&(m_pset-m_now_amount),false);m_pset-m_now_amount=m_lnow;ctime curtime=ctime:getcurrenttime();m_pset-setfieldnull(&(m_pset-m_inlibrary_date),false);m_pset-m_inlibrary_date=curtime;m_pset-update();m_pset-requery();m_pset-close();m_database.close();messagebox(adding new books succes
22、sfully!,新书入库登记);onbuttoncheckbooks();m_strbookid.empty();m_strbookname.empty();m_strpress.empty();m_strwriter.empty();m_lnow=0;m_ltotal=0;m_dprice=0.0;updatedata(false);return;(2)查询查询也是图书馆管理系统中一个很重要的功能,在很多的地方会用到,也是显示数据的一个功能函数。实现的过程也是首先检查数据库是否打开,以及要查询的书号是否为空。函数代码如下。void cnewbooksdlg:onbuttoncheckbook
23、s() / todo: add your control notification handler code hereupdatedata();if(m_strbookid=)messagebox(请正确填写信息,(书号?),新书登记);return;if(!m_database.isopen()if(!m_database.open(_t(library)messagebox(cannot access the database!,新书登记);return;cbookset *m_pset=new cbookset(&m_database);cstring strsql;strsql.for
24、mat(select * from book_info where book_id=%s,m_strbookid);m_pset-open(afx_db_use_default_type,strsql);if(m_pset-getrecordcount()=0)messagebox(no this book in the database!,新书登记);m_database.close();return;/处理表格m_ctrlist.deleteallitems();m_pset-movefirst();char buf50;cdbvariant varvalue;int i=0;cstrin
25、g strbookname;while(!m_pset-iseof()m_ctrlist.insertitem(i,buf);m_ctrlist.setitemtext(i,0,m_strbookid);m_pset-getfieldvalue(1,strbookname);m_ctrlist.setitemtext(i,1,strbookname);m_pset-getfieldvalue(2,strbookname);m_ctrlist.setitemtext(i,2,strbookname);m_pset-getfieldvalue(3,strbookname);m_ctrlist.se
26、titemtext(i,3,strbookname);m_pset-getfieldvalue(4,varvalue);sprintf(buf,%.2f,varvalue.m_dblval);m_ctrlist.setitemtext(i,4,buf);m_pset-getfieldvalue(5,varvalue);sprintf(buf,%d-%d-%d,varvalue.m_pdate-year,varvalue.m_pdate-month,varvalue.m_pdate-day);m_ctrlist.setitemtext(i,5,buf);m_pset-getfieldvalue(
27、6,varvalue);sprintf(buf,%d,varvalue.m_lval);m_ctrlist.setitemtext(i,6,buf);m_pset-getfieldvalue(7,varvalue);sprintf(buf,%d,varvalue.m_lval);m_ctrlist.setitemtext(i,7,buf);i+;m_pset-movenext();updatedata(false);m_pset-close();m_database.close();(3)显示全部书籍相应的sql语句为if exists (select * from dbo.sysobject
28、s where id = object_id(ndbo.book_info) and objectproperty(id, nisusertable) = 1)drop table dbo.book_infogo然后依次插入列表空间中。4.4.2 借书/还书借书/还书管理是图书馆管理系统中最重要的模块,包括了查询书籍、查询借阅信息和借书、还书等功能。为了方面,建立了一个对话框,界面如图6所示图6借书/还书管理界面(1) 借书借书是图书馆管理系统中最基本的功能,处理函数的代码如下所示。void cborrowdlg:onbuttonok() / todo: add your control no
29、tification handler code hereupdatedata();if(m_strproofid=|m_strbookid=)messagebox(输入的域不完整,请重新输入!,借书管理,mb_iconerror);m_strproofid.empty();m_strbookid.empty();updatedata(false);return;if(!m_database.isopen()if(!m_database.open(_t(library)messagebox(cannot access the database!,借书管理);return;cstring strs
30、ql;/判断借书人是否有资格strsql.format(select * from proof_info where proof_id=%s, m_strproofid);cproofset *m_pproof=new cproofset(&m_database);m_pproof-open(afx_db_use_default_type,strsql);if(m_pproof-getrecordcount()=0)messagebox(数据库中没有这个人的信息,借书/还书,mb_iconinformation);m_pproof-close();m_database.close();retu
31、rn;cdbvariant varvalue;m_pproof-getfieldvalue(7,varvalue);if(varvalue.m_ival=4)/如果不满足条件messagebox(你不能借书超过4本!,借书/还书,mb_ok|mb_iconinformation);m_pproof-close();m_database.close();return;/满足条件/借书量加一m_pproof-edit();m_pproof-m_now_borrow_amount+;m_pproof-update();m_pproof-requery();m_pproof-close();/book
32、_info表中,现存数量减一strsql.format(select * from book_info where book_id=%s,m_strbookid);cbookset *m_pbook=new cbookset(&m_database);m_pbook-open(afx_db_use_default_type,strsql);if(m_pbook-getrecordcount()=0)messagebox(对不起,图书馆现在没有这本书!,借书/还书,mb_iconinformation);m_pbook-close();m_database.close();return;m_pb
33、ook-edit();m_pbook-m_now_amount-;m_pbook-update();m_pbook-requery();m_pbook-close();/将借书信息存入借书信息表中strsql.format(select * from borrow_info);cborrowset *m_pborrow=new cborrowset(&m_database);m_pborrow-open(afx_db_use_default_type,strsql);if(m_pborrow-getrecordcount()=0)messagebox(数据库中没有借书信息!,借书/还书,mb_
34、ok|mb_iconinformation);m_pborrow-addnew();m_pborrow-setfieldnull(&(m_pborrow-m_proof_id),false);m_pborrow-m_proof_id=m_strproofid;m_pborrow-setfieldnull(&(m_pborrow-m_book_id),false);m_pborrow-m_book_id=m_strbookid;ctime curtime=ctime:getcurrenttime();m_pborrow-setfieldnull(&(m_pborrow-m_borrow_date
35、),false);m_pborrow-m_borrow_date=curtime;m_pborrow-m_borrowid=m_pborrow-getrecordcount();m_pborrow-update();m_pborrow-requery();m_pborrow-close();m_database.close();messagebox(借书成功!,借书/还书,mb_ok|mb_iconinformation);refreshdata();(2) 还书还书的处理函数的实现过程与借书类似,就是借书的逆过程。其代码如下。void cborrowdlg:onbuttonreturn()
36、/ todo: add your control notification handler code hereupdatedata();if(m_strproofid=|m_strbookid=)messagebox(输入的域不完整,请重新输入!,借书管理,mb_iconerror);m_strproofid.empty();m_strbookid.empty();updatedata(false);return;if(!m_database.isopen()if(!m_database.open(_t(library)messagebox(cannot access the database
37、!,借书管理);return;cstring strsql;/借书信息表中是否有借书人的信息strsql.format(select * from borrow_info where proof_id=%s and book_id=%s,m_strproofid,m_strbookid);cborrowset *m_pborrow=new cborrowset(&m_database);m_pborrow-open(afx_db_use_default_type,strsql);if(m_pborrow-getrecordcount()=0)messagebox(你并没有借这本书!,借书/还书
38、,mb_ok|mb_iconinformation);m_pborrow-close();m_database.close();return;/借有这本书,删除这条记录信息。m_pborrow-delete();m_pborrow-close();/将借书人借书的总数减一strsql.format(select * from proof_info where proof_id=%s, m_strproofid);cproofset *m_pproof=new cproofset(&m_database);m_pproof-open(afx_db_use_default_type,strsql)
39、;if(m_pproof-getrecordcount()=0)messagebox(数据库中没有这个人!,借书/还书,mb_iconinformation);m_pproof-close();m_database.close();return;cdbvariant varvalue;/借书量加一m_pproof-edit();m_pproof-m_now_borrow_amount-;m_pproof-update();m_pproof-requery();m_pproof-close();/book_info表中,现存数量加一strsql.format(select * from book
40、_info where book_id=%s,m_strbookid);cbookset *m_pbook=new cbookset(&m_database);m_pbook-open(afx_db_use_default_type,strsql);if(m_pbook-getrecordcount()=0)messagebox(对不起,本馆没有这本书!,借书/还书,mb_iconinformation);m_pbook-close();m_database.close();return;m_pbook-edit();m_pbook-m_now_amount+;m_pbook-update()
41、;m_pbook-requery();m_pbook-close();m_database.close();messagebox(还书成功!,借书/还书,mb_ok|mb_iconinformation);refreshdata();void cborrowdlg:onbuttonreset() m_strproofid.empty();m_strbookid.empty();updatedata(false);4.4.3查询书籍查询书籍的处理函数代码如下。void cborrowdlg:onbuttoncheckbooks() ccheckbooksdlg m_dlg;m_dlg.domod
42、al();为了方便处理,新建一个图书查询对话框如图7所示。图7图书查询界面 查询和查询全部的实现代码与新书入库部分的查询功能的实现类似。4.4.4查询借阅信息查询借阅信息的处理函数的代码如下。void cborrowdlg:onbuttoncheckborrow() ccheckborrowdlg dlg;dlg.m_strproofid=m_strproofid;dlg.domodal();为了方便处理也新建一个查询借阅书信息对话框,界面如图8所示。图8查询借阅信息界面查询首先是检查数据库是否正确打开,否则重新连接数据库,然后从数据库中查找待查找的借书证号的所有借书信息,最后在列表框中现实查询到的借书信息。函数的实现代码如下。void ccheckborrowdlg:onbuttonrequery() /刷新显示updatedata();if(!m_database.isopen()if(!m_database.open(_t(library)messagebox(cannot open database!,借书查询);return;cstring strsql,m_strname,m_strbname,m_st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年常德科技职业技术学院单招职业适应性考试题库附参考答案详解(模拟题)
- 五年级数学(小数四则混合运算)计算题专项练习及答案
- 盂肱关节退行性变机理
- 2026年平凉职业技术学院单招职业适应性测试题库及一套完整答案详解
- 2026年广东科学技术职业学院单招综合素质考试题库附参考答案详解(黄金题型)
- 2026年广西国际商务职业技术学院单招综合素质考试题库附答案详解(a卷)
- 2026年广州铁路职业技术学院单招职业适应性考试题库及1套参考答案详解
- 2026年广东茂名农林科技职业学院单招职业适应性测试题库附答案详解(预热题)
- 2026年广东江门中医药职业学院单招职业适应性考试题库及1套参考答案详解
- 2026年山西省运城市单招职业倾向性考试题库附答案详解
- 2026年常州工业职业技术学院单招职业适应性测试题库及答案详解(历年真题)
- 2026四川成都市金牛国投人力资源服务有限公司招聘金牛区街区规划师8人考试参考试题及答案解析
- CMA质量手册(2025版)-符合27025、评审准则
- 洁净车间安全施工方案
- 《中租联工程机械操作标准-旋挖钻机司机》征求意见稿
- 2023年考研考博-考博英语-煤炭科学研究总院考试历年高频考点真题荟萃带答案
- Peppa-Pig第1-38集英文字幕整理
- 统计用产品分类目录
- 雅培Perclose血管缝合器使用过程中常见问题及解决方法
- 中小学生课外读物负面清单自查表
- YS/T 73-2011副产品氧化锌
评论
0/150
提交评论