图书管理系统毕业设计论文_第1页
图书管理系统毕业设计论文_第2页
图书管理系统毕业设计论文_第3页
图书管理系统毕业设计论文_第4页
图书管理系统毕业设计论文_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、图书管理系统毕业设计课题名称 图书管理系统 专业计算机网络 班级 学号 学生姓名指导教师 完成日期 目录1引言1.1、系统的意义1.2、系统的特点1.3、系统设计环境2系统需求分析2.1系统设计的目标2.2.功能需求:221管理员222学生(读者):2.3系统界面要求:2.4安全性可靠性:2.5系统的运行要求:2.6性能需求2.7异常处理要求2.8扩展3系统设计3.1数据库设计 3.1.1功能模块划分:3.1.2基本数据流程图:3.1.3图书管理系统e-r图 3.1.4实体关系模型3.1.5逻辑结构设计3.2系统功能设计3.2.1核心功能函数设计思想3.2.2程序中总的类视图4系统实现4.1登

2、录功能4.2管理员功能4.2.1新书登记4.2.2图书信息查询4.2.3借阅证信息查询4.2.4借阅证挂失4.2.5添加管理员用户4.2.6修改密码4.3学生功能4.3.1 借书/还书4.3.2书籍挂失4.3.3借书信息查询4.3.4办理借阅证5小结1引言1.1、系统的意义随着人们知识层次的提高,图书馆成为日常生活中不可缺少的一部分。而图书馆的存书量和业务量庞大,仅仅靠传统的记账式管理是不可行的。图书管理系统应运而生,逐渐成为信息化建设的重要组成部分。图书管理系统为学校或社会型图书馆的管理员提供所有借阅者的详细信息,以及图书馆内库存的详细情况,而学生或普通用户则拥有借书和还书两大功能,管理员可

3、以对其进行合理的操纵并登记。作为计算机应用的一部分,使用数据库对图书信息进行管理,具有着手工管理所无法比拟的优点,例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低、便于打印等。1.2、系统的特点系统界面简易,功能操作方便合理的图书管理系统。1.3、系统设计环境以vc为开发平台,micrsoft sql server 2005为后台数据库。2系统需求分析2.1系统设计的目标图书馆信息管理员在对图书管理和学生借还书籍的过程中达到操作简单、方便而又有安全保障。2.2.功能需求:221管理员:1、图书基本信息管理: 图书入库/出库时,更新图书信息表; 添加,

4、删除,查询,修改图书信息; 统计图书库存/借出数量;书籍挂失处理,超期罚款金额信息处理;2、借阅证信息管理:借阅证信息记录、查询; 借阅证读者注册信息处理、借阅证挂失处理;3、管理员信息管理: 管理员信息查询,修改,添加,删除; 密码修改;222学生(读者):1、读者信息管理: 读者基本信息的修改、添加、删除; 密码修改;2、借书/还书管理:借书信息的输入、查询、更新;图书信息的查询;还书时对借阅表的更新;超期罚款金额的计算,记录; 3、借阅证信息管理: 办理借阅证、借阅证挂失;2.3系统界面要求:用户和管理员在系统可视化界面输入信息,触发消息相应函数,系统向用户或管理员显示输出数据库的查询、

5、删除、添加等可视化结果;2.4安全性可靠性:使用dobs进行数据源配置,因为visual c+提供了mfc odbc类,所以利用mfc来创建odbc的应用程序非常简单,具有较强的灵活性。通过odbc api 很容易访问数据库,而且有比较友好的用户界面,只需简单配置就可以使用,安全性也从根本得到了保障!2.5系统的运行要求:硬件方面,支持普遍计算机配置,使用sql server2005作为数据库,vc+6.0作为开发语言;通信接口:odbc api。软件方面,运行于windows9x及更高版本具有win32api的操作系统上。2.6性能需求数据精确度:查询时应保证查全率,所有相应域包含查询关键字

6、的记录都应能查到 时间特性:一般操作的响应时间应在1-2秒内,对相应服务响应时间也应在可接受的时间内完成适应性:有良好的适应性,可在windows各版本移植。2.7异常处理要求:定义数据边界,防止数据越界或资源故障导致的不正常情况。当操作数据库时发生异常,抛出cdbexception异常,具有较好的健壮性。2.8扩展:当系统须完善提升功能时,通过系统接口,对于功能的扩展和改进具有可行性。(3)系统功能分析通过对现行图书馆的业务进行调查,明确了图书馆工作由图书管理、读者管理、借书服务和还书服务4部分组成。图书管理:所有的图书按类别统一编号;对各类图书要建图书登记卡,卡上记录图书的主要信息;新购的

7、书要编码和建卡,对丢失的图书要销毁其图书登记卡。 读者管理:建立读者信息表,对读者统一编号。对新加盟的读者,将其信息加入到读者信息表中;对某些特定的读者,将其信息从读者信息表中删除;当读者情况变化时,修改读者信息表中相应的记录。借书服务:未借出的图书要按类别上架,供读者查看;建立借书登记卡,卡上记录着书号、读者姓名和编号、借书日期;将借书登记卡按读者单位、读者编号集中保管;读者提出借书请求时,先查看该读者的借书卡,统计该读者已借书数量;如果该读者无借书超期或超量情况,则办理借书手续;办理借书手续的方法是,先填写借书登记卡,管理员核实后可将书借出。 还书服务:读者提出还书要求时,先对照相应的借书

8、卡,确认书号和书名无误后可办理还书手续。办理还书手续的方法是,在借书卡上填写还书时间,管理员签字,将已还的借书卡集中保管,收回图书;将收回的图书上架,供读者查看和借阅。(4)概念结构设计(给出e-r图)3系统设计3.1数据库设计 3.1.1功能模块划分:通过对图书管理系统的功能分析,可以定义出系统的功能模块,如下图所示,定义的功能模块包括以下几方面:3.1.2基本数据流程图:3.1.3图书管理系统e-r图 3.1.4实体关系模型借阅卡信息表:借阅卡号,姓名,性别,出生日期,家庭住址,身份证号码,电话,现借书总数;图书信息表:图书编号,图书名称,作者,出版社,价格,入库时间,图书总量,现存总量;

9、读者/学生信息表:读者号,姓名,密码管理员信息表:管理员编号,姓名,密码罚金信息表:罚金号,借阅卡号,图书号,借出时间,返还时间,罚金借书信息表:借书号,借阅卡号,图书号,借书日期3.1.5逻辑结构设计建库:新建数据库命名为library,采用windows身份验证方式连接数据库。建表:管理员信息表admin_info :(姓名)user_namenvarchar(50)unchecked 主键(密码)passwordnvarchar(50)unchecked(管理员编号)workid float unchecked读者/学生信息表students_info:(读者号)useridbigint

10、unchecked 主键(姓名)user_namenvarchar(24)unchecked(密码)passwordnvarchar(24)unchecked图书信息表 book_info:(图书编号)book_idnvarchar(50)unchecked 主键(图书名称)book_namenvarchar(50)unchecked (作者) writernvarchar(50)unchecked(出版社) pressnvarchar(50)unchecked(价格) price float unchecked(入库时间) inlibrary_date smalldatetime unche

11、cked(图书总量) total_amount int unchecked(现存总量) now_amount int unchecked借阅卡信息表 proof_info:(借阅卡号)proof_idnvarchar(50)unchecked 主键 (姓名) name nvarchar(50) unchecked (性别) sex nvarchar(50) unchecked(出生日期) birth_timesmalldatetimeunchecked(住址 ) addressnvarchar(50)unchecked(身份证号码) id_numbernvarchar(50)unchecked

12、(电话号码) tel_numbernvarchar(50)unchecked(现借书总数) now_borrow_amount int unchecked借书信息表 borrow_info:(借书号)borrowidintunchecked 主键(借阅卡号)proof_idnvarchar(50)unchecked 外键(图书号) book_id nvarchar(50) unchecked 外键(借书日期) borrow_datesmalldatetimeunchecked罚金信息表 punish_info:(罚金号)puni_idintunchecked 主键(借阅卡号)proof_idn

13、varchar(50)unchecked 外键(图书号) book_id nvarchar(50) unchecked 外键(借书日期) borrow_datesmalldatetimeunchecked(还书日期) return_datesmalldatetimeunchecked(罚金金额) puni_moneyfloatunchecked3.2系统功能设计3.2.1核心功能函数设计思想系统与数据库通过odbc建立连接(其中数据源的名称为library)。登录模块:clogin 登入clibrarydlg 管理员登入studentslogin 学生/读者登入管理员模块:cnewbooksd

14、lg 新书登记onbuttonin()/入库onbuttoncheckall()/显示全部书籍onbuttoncheckbooks()/图书信息查询cbookinfodlg 显示书籍信息ccheckbooksdlg 图书信息查询cbooklostdlg 书籍挂失onbuttonlost()/书籍挂失函数cprooflostdlg 借阅证挂失onbuttonlost()/借阅证挂失函数ccheckproofdlg 借阅证信息查询cadduserdlg 添加用户cchangepassworddlg 修改密码学生模块:cborrowdlg 借书/还书ccheckbooksdlg 图书信息查询onbu

15、ttonok() /借书函数onbuttonreturn()/还书函数onbuttonreset()/重置函数ccheckborrowdlg 查询借书信息cbooklostdlg 书籍挂失cnewproofdlg 办理借阅证cchangepassworddlg 修改密码3.2.2程序中总的类视图如下:4系统实现4.1登录功能初始登录:void clogin:onadmin() / todo: add your control notification handler code here cdialog:onok(); clibrarydlg logindlg;logindlg.domodal(

16、); void clogin:onstudents() cdialog:onok();studentslogin dlg;dlg.domodal();/ todo: add your control notification handler code here管理员登录:void clibrarydlg:onok() / todo: add extra validation hereupdatedata();if(m_strusername.isempty()messagebox(please input your username!,登录系统,mb_ok|mb_iconexclamation

17、);m_strusername.empty();updatedata(false);return;if(!m_database.isopen()/连接数据源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 an

18、d password=%s,m_strusername,m_strpassword);/编写sql语句结束m_plogset-open(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

19、-m_now_amount+m_lnow;m_pset-update();m_pset-requery();m_pset-close();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

20、_database.close();return;strsql.format(select * from book_info);m_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-setfield

21、null(&(m_pset-m_book_name),false);m_pset-m_book_name=m_strbookname;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

22、(&(m_pset-m_total_amount),false);m_pset-m_total_amount=m_ltotal;m_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_p

23、set-close();m_database.close();messagebox(adding new books successfully!,新书入库登记);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;选择管理员登录,进入新书登记,出现新书登记界面,如图:4.2.2图书信息查询void ccheckbooksdlg:o

24、nbuttoncheck() / todo: add your control notification handler code hereupdatedata();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.format(select * from book_info where book_id=%

25、s,m_strbookid);m_pset-open(afx_db_use_default_type,strsql);if(m_pset-getrecordcount()=0)messagebox(本馆没有这本书!,图书查询);m_database.close();return;/处理表格m_ctrlist.deleteallitems();m_pset-movefirst();char buf50;cdbvariant varvalue;int i=0;cstring strbookname,strwriter,strpress;while(!m_pset-iseof()m_ctrlist.

26、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,strwriter);m_ctrlist.setitemtext(i,2,strwriter);m_pset-getfieldvalue(3,strpress);m_ctrlist.setitemtext(i,3,strpress);m_pset-getfieldvalue(4,varva

27、lue);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(6,varvalue);sprintf(buf,%d,varvalue.m_lval);m_ctrlist.s

28、etitemtext(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();点击查询图书信息,如图:4.2.3借阅证信息查询void ccheckproofdlg:onbuttoncheckproof() / todo: add your control notification handler

29、code hereupdatedata();if(m_strproofid=)messagebox(请填写借阅证号码!,借阅证查询);return;if(!m_database.isopen()if(!m_database.open(_t(library)messagebox(不能打开数据库!,借阅证查询);return;cproofset *m_pset=new cproofset(&m_database);cstring strsql;strsql.format(select * from proof_info where proof_id=%s,m_strproofid);m_pset-

30、open(afx_db_use_default_type,strsql);if(m_pset-getrecordcount()=0)messagebox(数据库中没有这个人的信息,借阅证查询);m_pset-close();m_database.close();m_strproofid.empty();updatedata(false);return;/读取信息,并将信息显示在控件上m_ctrlist.deleteallitems();m_pset-movefirst();cdbvariant varvalue;char buf50;int i=0;cstring strtemp;while(

31、!m_pset-iseof()int temp=0;m_ctrlist.insertitem(i,buf);m_pset-getfieldvalue(temp,strtemp);m_ctrlist.setitemtext(i,temp,strtemp);m_pset-getfieldvalue(1,strtemp);m_ctrlist.setitemtext(i,1,strtemp);m_pset-getfieldvalue(2,strtemp);m_ctrlist.setitemtext(i,2,strtemp);m_pset-getfieldvalue(3,varvalue);sprint

32、f(buf,%d-%d-%d,varvalue.m_pdate-year,varvalue.m_pdate-month,varvalue.m_pdate-day);m_ctrlist.setitemtext(i,3,buf);m_pset-getfieldvalue(4,strtemp);m_ctrlist.setitemtext(i,4,strtemp);m_pset-getfieldvalue(5,strtemp);m_ctrlist.setitemtext(i,5,strtemp);m_pset-getfieldvalue(6,strtemp);m_ctrlist.setitemtext

33、(i,6,strtemp);m_pset-getfieldvalue(7,varvalue);sprintf(buf,%d,varvalue.m_lval);m_ctrlist.setitemtext(i,7,buf);i+;m_pset-movenext();4.2.4借阅证挂失void cprooflostdlg:onbuttonlost() / todo: add your control notification handler code hereupdatedata();if(m_strproofid=)messagebox(请填写借阅证号码!);return;if(!m_datab

34、ase.isopen()if(!m_database.open(_t(library)messagebox(不能打开数据库,借阅证挂失);return;cproofset *m_pset=new cproofset(&m_database);cstring strsql;strsql.format(select * from proof_info where proof_id=%s,m_strproofid);m_pset-open(afx_db_use_default_type,strsql);if(m_pset-getrecordcount()=0)messagebox(数据库中没有该人的

35、信息,借阅证挂失);m_pset-close();m_database.close();return;/挂失,删除该借阅证的记录信息m_pset-delete();m_pset-close();m_database.close();int iresult;iresult=messagebox(挂失成功,是否查阅,进行确认,借阅证挂失,mb_yesno|mb_iconquestion);if(iresult=idyes)ccheckproofdlg m_dlg;m_dlg.m_strproofid=m_strproofid;m_dlg.domodal();为借阅证号为0006的学生挂失:点击“是

36、”,进入查阅界面:4.2.5添加管理员用户void cadduserdlg:onok() / todo: add extra validation here/cdialog:onok();this-updatedata(true);if(m_struser.compare()=0|m_strpassword.compare()=0)messagebox(请正确填写所需数据,增加用户);return;if(!m_database.isopen()if(!m_database.open(_t(library)messagebox(数据库打开出错!,图书信息!);onok();return ;cst

37、ring strsql;long num;cuserset *m_pset=new cuserset(&m_database);strsql.format(select * from admin_info);m_pset-open(afx_db_use_default_type,strsql);num = m_pset-getrecordcount();m_pset-addnew();m_pset-setfieldnull(&(m_pset-m_user_name),false);m_pset-m_user_name=m_struser;m_pset-setfieldnull(&(m_pset

38、-m_password),false);m_pset-m_password=m_strpassword;m_pset-setfieldnull(&(m_pset-m_workid),false);m_pset-m_workid=num+2;m_pset-update();m_pset-requery();m_pset-close();m_database.close();messagebox(添加帐号成功!,添加帐号);4.2.6修改密码void cchangepassworddlg:onbuttonok() / todo: add your control notification hand

39、ler code hereupdatedata();if(m_strusername.isempty()messagebox(请输入用户名!,登录系统,mb_ok|mb_iconexclamation);m_strusername.empty();updatedata(false);return;if(!m_database.isopen()/连接数据源if(!m_database.open(_t(library)messagebox(连接数据库失败!,图书管理系统,mb_ok|mb_iconinformation);return;if(m_strpassword_new1 != m_strp

40、assword_new2)messagebox(两次密码不同!,确认密码,mb_ok|mb_iconexclamation);m_strpassword_old.empty();m_strusername.empty();m_strpassword_new1.empty();m_strpassword_new2.empty();updatedata(false);return;cloginset *m_plogset=new cloginset(&m_database);/编写sql语句cstring strsql;strsql.format(select * from admin_info

41、where user_name=%s and password=%s,m_strusername,m_strpassword_old);/编写sql语句结束m_plogset-open(afx_db_use_default_type,strsql);if(m_plogset-getrecordcount()=0)messagebox(登录失败!,图书管理系统,mb_ok|mb_iconerror);m_strpassword_old.empty();m_strusername.empty();m_strpassword_new1.empty();m_strpassword_new2.empty

42、();updatedata(false);elsem_plogset-edit();m_plogset-m_password = m_strpassword_new2;m_plogset-update();m_plogset-requery();messagebox(修改成功!,修改密码,mb_ok|mb_iconexclamation);m_strpassword_old.empty();m_strusername.empty();m_strpassword_new1.empty();m_strpassword_new2.empty();updatedata(false);m_databas

43、e.close();return;4.3学生功能4.3.1 借书/还书只列出了借书的函数,还书函数onbuttonreturn() 与借书函数类似。void cborrowdlg:onbuttonok() / todo: add your control notification handler code hereupdatedata();if(m_strproofid=|m_strbookid=)messagebox(输入的域不完整,请重新输入!,借书管理,mb_iconerror);m_strproofid.empty();m_strbookid.empty();updatedata(fa

44、lse);return;if(!m_database.isopen()if(!m_database.open(_t(library)messagebox(cannot access the database!,借书管理);return;cstring strsql;/判断借书人是否有资格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

45、,strsql);if(m_pproof-getrecordcount()=0)messagebox(数据库中没有这个人的信息,借书/还书,mb_iconinformation);m_pproof-close();m_database.close();return;cdbvariant varvalue;m_pproof-getfieldvalue(7,varvalue);if(varvalue.m_ival=5)/如果不满足条件messagebox(你不能借书超过5本!,借书/还书,mb_ok|mb_iconinformation);m_pproof-close();m_database.c

46、lose();return;/满足条件/借书量加一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_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();m_

温馨提示

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

评论

0/150

提交评论