c++图书管理系统课程设计.doc_第1页
c++图书管理系统课程设计.doc_第2页
c++图书管理系统课程设计.doc_第3页
c++图书管理系统课程设计.doc_第4页
c++图书管理系统课程设计.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

湖南科技大学图书馆信息管理系统学生院系: 数学与计算科学学院 学生班级: 12级信计3班 学生学号: xxxxxxxx 学生姓名: xxxxx 指导教师: 李建湘老师 制作日期: 13年12月09日 目 录1、 前言.22、 需求分析.23、 模块功能简介.34、 各模块的设计思想.45、 详细设计.51、 登陆界面的实现.52、 信息登记的实现.83、 信息的输出实现.124、 信息查询的实现.175、 信息清除的实现.246、 退出系统的实现.247、 图片背景的添加.25六、测试分析.27七、心得体会.27致谢.28参考文献.28附录(主要源程序的头文件).29湖南科技大学图书馆信息管理系统(湖南科技大学 中国 湘潭 1207020330)摘 要本次课程设计任务是通过编写一个图书馆信息管理系统,学习用visual c+ 6.0开发简单的管理系统。采用visual c+ 6.0软件为主要开发工具。本系统主要完成对图书馆借阅情况和图书馆书籍归还情况的管理,包括借阅信息的登记、查询、界面的清除以及归还信息的登记、查询、界面的清除等。系统还可以完成对图书资料读者资料的浏览等功能。由于我们还没有学习数据库,所以在有关大量借阅信息存储时,此系统显得心有余而力不足。 系统的核心是引用i/o流和文本处理来存储和调用图书馆的借阅归还信息,每一个动作都可能影响到其它的功能,还有数据的改变,当完成对数据的操作时系统会自动地完成数据库的修改。关键字:vc+6.0;图书馆信息管理系统;模块化设计;i/o流;一、 前言使用计算机管理图书馆信息,不但可以大量节省时间、人力、财力、物力,而且能更全面有效地掌握图书馆的基本情况,及时获取最新而又准确的资料和信息。此课程设计就是这样一个管理图书馆借阅归还信息的系统,其功能与实现方面有比较好的针对性和实用性。软件是在visual c+平台上开发的,采用i/o流文本存储数据和信息,作为虚拟的数据库。利用i/o流文本操作语言,能比较方便地实现对借阅归还信息的操作与管理。二、 需求分析visual c+6.0的mfc提供了大量的类库函数强大支持。开发一个图书馆信息管理系统,可以实现借阅归还信息的管理。并提供新信息录入,现有借阅查询归还查询功能,对记录的输出等工作。图书馆管理系统是典型的信息管理系统(mis),其开发主要包括后台数据信息的建立和保存以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。三、 模块功能简介 第一次做这种比较大型的软件,不足之处在所难免,但以后一定会不断改进,以下为系统主要功能流程,如图(0)所示。图书馆信息管理系统运行系统输入用户名和密码信息查询登记清除退出归还查询借阅查询确定退出清除界面归还信息借阅信息归还登记借阅登记 图(0) 图(0)四、 各模块的设计思想整个系统,采用文件存储信息,采用fwrite()余fread()函数实现信息的整块写入与读出;编写xierun()与duqun()函数用来记录信息的个数和读出信息的个数方便几个模块的实现模块模块的设计简介登陆系统界面输入用户名和密码,采用if语句判断,正确进入系统,错误则提示错误信息并重新输入密码,3次错误系统自动退出。读者借阅登记调用一个对话框输入借阅信息,并调用fileexception类用以实现信息的储存。读者归还登记调用一个对话框输入归还信息,并调用fileexception类用以实现信息的储存。读者借阅信息创建一个文件流对象,从文件读入借阅信息,将借阅信息输出,最后关闭文件。读者归还信息创建一个文件流对象,从文件读入归还信息,将归还信息输出,最后关闭文件。读者借阅查询调用一个对话框输入学号,利用查询函数搜索储存文本的每一行,并比较所输入的学号与每一行“,”前的内容是否一致,若一致,则选择输出。读者归还查询调用一个对话框输入学号,利用查询函数搜索储存文本的每一行,并比较所输入的学号与每一行“,”前的内容是否一致,若一致,则选择输出。清除界面调用函数invalidate()刷新主界面已达到清除界面的作用退出系统调出退出系统对话框理论支撑:c、c+程序设计语言、vc 6.0软件五、详细设计1、登陆界面的实现 运行系统就有个用户名和密码输入窗口要求输入用户名和密码,相当于系统的门户正确输入才能进入系统,有三次输入机会。打开软件就弹出如图(1)的窗口要求输入密码和用户名。初始用户名为zcx初始密码为zcx(赵彩霞的首字母小写)。 图(1)用户名和密码正确则进入系统,弹出消息盒子如图(2)窗口。 图(2)密码错误则弹出如图(3)对话框,要求重新输入,点击确定进行再次的输入。 图(3)连续输入错误三次,系统则弹出如图(4)对话框自动退出 图(4)点击确定退出系统。如登录成功则进入系统如图(5)。 图(5)登录界面的类为chnkjdxtsg,具体实现为:在12信计0330赵彩霞view.cpp中调用chnkjdxtsg。在12信计0330赵彩霞 view.cpp中添加头文件#include hnkjdxtsg.h、#include tc.h、#include zdtc.h、然后在cmy120330view:cmy120330view()中实现相关代码实现如下:cmy120330view:cmy120330view()/ todo: add construction code herechnkjdxbtsg a;for(int i=1;i4;i+)if(a.domodal()=idcancel)/按退出键询问“是否确定退出系统!”messagebox(确定退出);exit(0);elseif(a.m_str_srmima=zcx&a.m_str_yonghuming=zcx)messagebox(欢迎进入图书馆管理系统);break;else/若错误,请求重新输入messagebox(重新输入);if(i=3)/输入三次错误系统自动退出czdtc d;d.domodal();exit(1);2、信息登记的实现a) 读者借阅登记打开系统的登记处理下滑菜单,点击借阅登记弹出如图(6)对话框。完成相关内容输入后,点击确定。图(6) 借阅登记对话框的类为cjydj,对应的函数中的类名也为cjydj,具体实现为:在12信计0330赵彩霞view.cpp中调用cjydj。在12信计0330赵彩霞view.cpp中添加头文件#include jydj.h,然后在cmy120330view:onmenuitemjydj()中实现。 相关代码实现如下:/借阅登记类void cmy120330view:onmenuitemjydj() / todo: add your command handler code herebool flag=1; while (flag=1)cjydj s; /用cjydj这个类创建一个对象sint g=s.domodal();fstream ofile;/创建一个输出文件流对象 ofile.open(借阅登记.txt,ios_base:app|ios:out); if(g=idok)string ap;ap=s.m_str_xingming; string ad; ad=s.m_str_sjbianhao;string ab; ab=s.m_str_shuming; string ac; ac=s.m_str_xuehao;ofileac, 书籍编号:ad 姓名:ap 书名:abendl; ofile.close();messagebox(信息存储完毕!);break;else flag=0; b)读者归还登记打开系统的登记处理下滑菜单,点击归还登记弹出如图(7)对话框。进行相关信息的输入后,点击确定。 图(7)归还登记对话框的类为cghdj,对应的函数中的类名为cghdj,具体实现为:在12信计0330赵彩霞view.cpp中调用cghdj。在12信计0330赵彩霞view.cpp中添加头文件#include ghdj.h,然后在cmy120330view:onmenuitemghdj()中实现。相关代码实现如下:/归还登记类void cmy120330view:onmenuitemghdj() / todo: add your command handler code herebool flag=1; while (flag=1)cghdj s;int g=s.domodal();fstream ofile;/创建一个输出文件流对象 ofile.open(归还登记.txt,ios_base:app|ios:out); if(g=idok)string ap;ap=s.m_str_xingming; string ad; ad=s.m_str_sjbianhao;string ab; ab=s.m_str_shuming; string ac; ac=s.m_str_xuehao;ofileac, 书籍编号:ad 姓名:ap 书名:abendl; ofile.close();messagebox(信息存储完毕!);break;else flag=0; 3、信息的输出实现a) 读者借阅信息输出打开系统的信息处理下滑菜单,点击借阅信息弹出如图(8)对话框。 图(8)借阅信息输出的类为 cjyxxcx,具体实现为:在12信计0330赵彩霞view.cpp中调用cjyxxcx。在12信计0330赵彩霞view.cpp中添加头文件#include jyxxcx.h,然后在cmy120330view:onmenuitemjyxx()中实现。相关代码实现如下:/借阅信息类void cmy120330view:onmenuitemjyxx() / todo: add your command handler code hereifstream infile(借阅登记.txt,ios:in);/创建一个输入文件流对象try if (!infile) throw fileexception(); catch ( fileexception fe ) / exception handler messagebox(fe.what();/ fe.what() n; exit(0); /从文件读入借阅信息cclientdc dc(this);char line101;for(int i=0;i400;i+)infile.getline(line,100);cstring c_str;c_str.format(%s,line);/转换为字符串dc.textout(100,80,借阅登记输出:);dc.textout(100,100+30*i,c_str);infile.close();b)读者归还信息输出打开系统的信息处理下滑菜单,点击归还信息弹出如图(9)对话框。 图(9)归还信息输出的类cghxxcx,具体实现为:在12信计0330赵彩霞view.cpp中调用cghxxcx。在12信计0330赵彩霞view.cpp中添加头文件#include ghxxcx.h,然后在cmy120330view:onmenuitemghxx()中实现。相关代码实现如下:/归还信息类void cmy120330view:onmenuitemghxx() / todo: add your command handler code hereifstream infile(归还登记.txt,ios:in);/创建一个输入文件流对象try if (!infile) throw fileexception(); catch ( fileexception fe ) / exception handler messagebox(fe.what();/ fe.what() n; exit(0); /从文件读入借阅信息cclientdc dc(this);char line101;for(int i=0;i400;i+)infile.getline(line,100);cstring c_str;c_str.format(%s,line);/转换为字符串dc.textout(100,80,归还登记输出:);dc.textout(100,100+30*i,c_str);infile.close();4、信息查询的实现a) 读者借阅查询打开系统的查询处理下滑菜单,点击借阅登记弹出如图(10)对话框。输入学号,点击确定。 图(10)弹出如图(11)对话框确认信息查询,点击确认,实现信息查询 图(11)弹出如图(12)对话框,出现用户需查询的信息。图(12)若输入的学号无对应内容,系统将弹出如图(13)“查无此人”对话框。 图(13)借阅查询的对话框类为cjyxxcx,在函数中对应的类为cjycx,具体实现为:在12信计0330赵彩霞view.cpp中调用cjycx。在12信计0330赵彩霞view.cpp中添加头文件#include jycx.h,然后在cmy120330view:onmenuitemjycx()中实现。相关代码实现如下:/借阅查询类void cmy120330view:onmenuitemjycx() / todo: add your command handler code hereifstream infile(借阅登记.txt,ios:in);/创建一个输入文件流对象try if (!infile) throw fileexception(); catch ( fileexception fe ) / exception handler messagebox(fe.what(); / fe.what() n; exit(0); cjyxxcx a;if(a.domodal()=idok)char line100101;bool flag=false;for(int i=0;i100;i+)infile.getline(linei,100);cstring name_str,c_str;c_str.format(%s,linei); /转换为字符串 name_str=c_str.left(c_str.find(,);/提取学号if(!name_str.compare(a.m_str_xuehao)/与查询名比较flag=true;name_str+=被查询到,要显示该人员信息吗?; if(messagebox(name_str)!=idyes)/cinfodisplaydlg pdlg;/声明显示对话框对象/pdlg.m_strname = ed.m_look/pdlg.m_strinformation =c_str ;messagebox(c_str); /调用显示对话框;break;if(flag=false) messagebox(查无此人!);infile.close();b) 读者归还查询打开系统的查询下滑菜单,点击归还查询弹出如图(14)对话框。 图(14)若输入的学号有对应信息,则系统弹出如图(15)对话框显示查询结果:图(15)若输入学号无归还登记信息,系统将弹出如图(16)“查无此人”对话框。 图(16)归还查询的对话框类为cghxxcx,在函数中对应的类为cghcx,具体实现为:在12信计0330赵彩霞view.cpp中调用cghcx。在12信计0330赵彩霞view.cpp中添加头文件#include ghcx.h,然后在cmy120330view:onmenuitemghcx()中实现。相关代码实现如下: /归还查询类void cmy120330view:onmenuitemghcx() / todo: add your command handler code hereifstream infile(归还登记.txt,ios:in);/创建一个输入文件流对象try if (!infile) throw fileexception(); catch ( fileexception fe ) / exception handler messagebox(fe.what(); / fe.what() n; exit(0); cghxxcx a;if(a.domodal()=idok)char line100101;bool flag=false;for(int i=0;i100;i+)infile.getline(linei,100);cstring name_str,c_str;c_str.format(%s,linei); /转换为字符串 name_str=c_str.left(c_str.find(,);/提取学号if(!name_str.compare(a.m_str_xuehao)/与查询名比较flag=true;name_str+=被查询到,要显示该人员信息吗?; if(messagebox(name_str)!=idyes)/cinfodisplaydlg pdlg;/声明显示对话框对象/pdlg.m_strname = ed.m_look/pdlg.m_strinformation =c_str ;messagebox(c_str); /调用显示对话框 ;break;if(flag=false) messagebox(查无此人!);infile.close();5、信息清除的实现 清除界面一次偶然的机会注意到当界面刷新时,界面中的内容会消失,故想到实现此功能,上网查到相关函数得以实现。当主界面有内容想要清空时点击清除下滑框里的清除界面可实现目的清空界面在函数中的类为cqkjm,具体实现为:将其映射到12信计0330赵彩霞view.cpp中,然后在cmy120330view:onmenuitemqcjm()中实现。相关代码实现如下:/刷新以清除界面void cmy120330view:onmenuitemqcjm() / todo: add your command handler code hereinvalidate();/窗口刷新函数6、退出系统的实现点击退出下滑框里的退出系统,弹出如图(17)对话框。点击确认退出则推出当前系统。 图(17)实现退出的类为ctc,具体实现为:在12信计0330赵彩霞view.cpp中调用ctc。在12信计0330赵彩霞view.cpp中添加头文件#include tc.h,然后在cmy120330view:onmenuitemtc()中实现。相关代码实现如下:/退出系统类void cmy120330view:onmenuitemtc() / todo: add your command handler code herectc a;if(a.domodal()=idok)exit(1);7、图片背景的添加a) 找到vc上部的“插入”选择“资源”选项,出现如图(18)界面 图(18)选择“引入”,找到格式为bmp的图片并引入。b) 在对话框设计页面中把控件中的图像选项拖到对话框中,打开其属性如图(19),并在常规属性类型中选择位图,在图像下拉框中选择引入的位图。 图(19)c) 选好位图后,将对话框中的静态文本及编辑框的属性中的扩展样式均设为透明状态,如图(20) 图(20)六、测试分析经过测试,该系统能够较好地完成需求分析中的任务,如借阅归还信息的登记、查询、信息输出,其中,借阅查询和归还查询这一块仍然存在很多问题。(1)有同一学号(同一人)但借阅信息不同,在查询时只查询显示第一次借阅记录或归还记录。(2)当读者经过图书的借阅和归还之后信息未删减。借阅信息和归还信息没有建立起相应的桥梁关系,有待进一步完善。另外,系统的可扩展性不强。功能的实现也不太完善。没有涉及内容的删除和修改,代码的处理也不是很精简,有待进一步改善。并且没有大型的支持大容量数据的后台,只有利用文本i/o处理来实现所以数据的保密性和安全性不高,希望以后学习数据库后开发出更好更优化的后台来实现湖南科技大学图书馆信息的管理。七、心得体会说实话,对于一个电脑基础知识很差的我来说,第一次遇到这么大型的程序设计问题,虽然老师讲过类似的管理系统,但开始还是无从下手。经过两个星期的设计和开发,系统基本开发完毕。在本次课程设计中困难遇到不少,比如文本文件的操作,i/o流,string,cstring类,其中以信息的查询功能花了最多的时间。在平时的学习中,我自己觉得学的还不错,这次的课程设计对我来说确实是一个挑战,在这两周中,大部分时间和同学交流与讨论,同时参考了不少资料与文献,在网上搜集了不少资料对我来说,收获最大的就是知道了如何去做一个管理系统,或许还有很多的功能没有实现以及不完善,很多的代码实现都是在老师的帮助下完成的,真的很感谢老师!课程设计结束了,一路的坎坷到最后看到自己的成果,心里满满的开心,心里的大石头落下来。看到这些我知道了有一个拥有一个管理系统的重要性,看到了理论知识应用于实践生

温馨提示

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

评论

0/150

提交评论