2022年c++图书信息管理系统 .pdf
《2022年c++图书信息管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年c++图书信息管理系统 .pdf(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北京电子科技学院计算机实习报告学号: 20104303计算机实习报告系别:管理系专业:信息管理与信息系统专业班级:1043班学生姓名:李优指导教师:徐日日期:2012-09-03 2012-09-14 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告1 1 需求分析1.1选题任务图书借阅管理系统(1) 编程工具C+ (2) 要求选题学生应具有端正的学习态度、正常的交流能力,应有积极主动、克服困难的
2、学习意识(3) 本题概述以学院图书馆为例,图书借与管理是一项经常性工作,为使图书借阅管理工作准确高效,提供图书借阅记录的添加、修改、删除、查询、浏览、汇总等,用图书借阅关系软件,能有效提高工作效率,具有较强的实际意义。(4) 功能描述能度日外部提供的包含图书借阅信息的文本文件(TXT文件) ;能在程序中录入图书借阅信息(可参考我院图书馆网上图书借阅信息的各个项目) ,并将信息写入文本文件(TXT文件) ;能对所有图书借阅信息,按条件(按图书名、图书编号、借阅日期、借阅人、超期与否、超期天数等)查询浏览,能汇总统计计算出符合某条件的图书借阅记录的数量并浏览这些借阅信息,能将查询、浏览、汇总的结果
3、输出结果文本文件( TXT文件)(5) 辅助说明基础要求: +扩展要求: +1.2输入数据和输出数据形式:程序中包含的图书信息包括: char bnum20; /书号 char bname20; /书名char bauthor10; /作者char rname10; /借阅人名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告2 char bdays10; /借出日期char bchao10; /超期
4、天数为了方便,我全部设置成了char 型。而程序中包含两种输入方式和两种输出方式,对应题目要求,分别是:单个图书信息的增删查改; TXT文档的导入(图书数据库 .txt ) ;屏幕的打印; TXT文档的导出(书籍信息 .txt ) 。1.3测试数据及测试目的字母测试,错误数据测试,重复数据测试目的:产看本程序的纠错能力和是否人性化。2 程序设计2.1 关键数据类型定义 /*书籍结构体,用于存放书籍基本信息* class Book private: char bnum20; /书号 char bname20; /书名char bauthor10; /作者char rname10; /借阅人cha
5、r bdays10; /借出日期char bchao10; /超期天数public: Book() /构造函数初始化信息void set_bnum(char *no) /设置书号char *get_bnum() /获得书号void set_bname(char *n) /设置书名char *get_bname() /获得书名void set_bauthor(char *a) /设置作者名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 39 页 - - - - - - - -
6、 - 北京电子科技学院计算机实习报告3 char *get_bauthor() /获得作者姓名void set_bdays(char *d) /设置借出日期char *get_bdays() /获得借出日期void set_bchao(char *c) /设置超出天数char *get_bchao() /获得超出天数void set_rname(char *rn) /设置借阅人char *get_rname() /获得借阅人姓名 void copy(Book m) /Book结构体 copy 函数;/class book /*书籍管理结构体 , 实现管理书籍功能 * class BookMan
7、age private: Book books100; /定义 Book书籍结构体数组对象,最大容量100本public: int length; BookManage() /构造函数,读取磁盘文件int add(Book book) /添加图书资料int bnu_search(char *bnu) /按书号查找书籍int bna_search(char *bna) /按书名查找书籍int bau_search(char *bau) /按作者查找书籍int rn_search(char *rn) /按借阅人查找书籍int bd_search(char *bd) /按借出日期查找书籍int bc
8、_search(char *bc) /按超期天数查找书籍void revise(Book book,int i) /修改书籍函数void deleteBook(int index) /删除书籍资料函数void show_bookhead() /显示输出列表 , 表头。void show_book(int i)/显示书籍函数void saveFileHead() /保存书籍文件的表头到txt void saveFile(int i) / 带参的输出书籍到txt 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
9、- - - - - 第 4 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告4 void readFile() /读取书籍文件;/ class BookManage /*菜单结构体 , 实现界面引导 * class Menu BookManage bm; /定义书籍管理结构体对象bm private: int choice; /菜单序号选择int key; /管理员密码public: void header() /首页欢迎界面void log_menu() /主界面登录菜单void admin_menu() /管理菜单void absearch_menu()
10、 /查找书籍菜单void log_admin() /密码登陆void rn_search() /按借阅人姓名查找函数void bnu_search() /按书号查找函数void bna_search() /按书名查找函数void bau_search() /按作者查找函数void bd_search() /按借阅日期查找函数void bc_search() /按超期天数查找函数void addBook() /添加新的书籍信息函数void reviseBook() /修改书籍函数void delBook() /删除书籍函数int main() 名师资料总结 - - -精品资料欢迎下载 - - -
11、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告5 2.2 主程序流程图开始判断是否进入并输入密码1:添加新的图书资料2:修改已有图书资料3:删除已有图书资料4:查找已有图书资料5:查看所有图书资料6:读取指定位置TXT 7: 写入指定位置TXT 8:返回系统登录界面0: 退出图书管理系统输 入书 号判 断书 号是 否重复添加书籍重新输入新书号输入要修改的书号判断存在修改数据重新输入书号输入要删除的书号判断存在删除书籍重新输入书号按编号查找按书名查
12、找按作者查找按日期查找按超期查找退出系统名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告6 2.3 调用关系1. 书籍信息的录入:void set_bnum(char *no) /设置书号strcpy(bnum,no); /把字符串 no 中的字符复制到字符串bnum中char *get_bnum() /获得书号 return bnum; /返回值为 bnum void set_bname(cha
13、r *n) /设置书名 strcpy(bname,n); char *get_bname() /获得书名 return bname; void set_bauthor(char *a) /设置作者 strcpy(bauthor,a); char *get_bauthor() /获得作者姓名 return bauthor; void set_bdays(char *d) /设置借出日期 strcpy(bdays,d); char *get_bdays() /获得借出日期 return bdays; void set_bchao(char *c) /设置超出天数 strcpy(bchao,c);
14、char *get_bchao() /获得超出天数 return bchao; void set_rname(char *rn) /设置借阅人 strcpy(rname,rn); char *get_rname() /获得借阅人姓名 return rname; 2. 书籍信息的添加: int add(Book book) 判断 length 是否达到最大值,如果没有则进行添加。3书籍信息的查找:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 39 页 - - - - -
15、- - - - 北京电子科技学院计算机实习报告7 无论是按照书号、书名、作者、借阅人、借出日期、超期天数来进行查找都是进行挨个比较,如果遇到相同则返回书籍的i 值,进行返回输出。4. 书籍信息的修改:输入想要修改的书籍编号,按照查找的方法,找到i ,然后进行覆盖。完成修改。5. 书籍的屏幕打印输出:分两部分输出,首先打印一个头信息,相当于列表的头;然后利用循环语句带参输出(i 为参数,循环)。6. 保存信息到 txt 文件:同分为两部分,类似屏幕打印的方法,先存入表头,然后带参循环存入书籍信息。带参的意义就是,可以无限调用该语句,只要知道书的序号i 。7. 从信息中读取 txt文件:struc
16、t books char numb10; /书号 char nameb20; /书名 char authorb10; /作者 char namer10; /借阅人 char daysb10; /借出日期 char chaob10; /超期天数; 定义结构体。利用 fscanf ()语句讲读取的数据按顺序存入结构体中。然后直接利用书籍添加函数直接写入系统。3 调试分析3.1 主要问题及解决方案:1. 界面颜色设定:一直抛弃黑底白字这种默认形式,换一种颜色给人特殊的感觉,在网上找到相关的代码为 system(color *);语句。但是也是没有头绪不知道怎么调试,后来一不小心设置错误,系统就弹出了
17、提示界面,我就明白了界面颜色的设置方法(图3.1 ) :名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告8 图 3.1 2. 关于书籍的 cout 输出:最开始设计输出模块时候,仅仅是想到了不带参的book 信息输出, show_book()函数中自带了一个 for 语句循环输出所有书籍信息,是为显示全部书籍设计的。但是后来发现如果要单显示筛选信息就要从新写一个带参show_book(int i)
18、 ,虽然函数重载允许这样做,但是却无意义的增加了代码长度。我选择删除了不带参的show_book() , 把 for语句循环写在外面。这样就增加了show_book(int i) 函数的利用率,精简了函数的和长度。3. 书籍信息的 txt 写入:综合了屏幕打印的经验,鉴于fwrite和 cout 使用方法和显示效果类似,我决定将 txt的写入语句也设置成带参形式saveFile(int i),原理与 show_book(int i)基本一致。完成这些就能实现。后来发现文件总是覆盖,每次写入都会将上一次的覆盖,也就是只有最后一行,后来才想起了ios:app追加模式,才最终算完整实现。4. 读取数
19、据函数:这个函数是我编辑最久的,因为使用的不熟练,我先查找了很多资料,并且写了一些单独的小程序去测试效果,但是感觉都不理想。后来选择了一个最笨的方法,利用fseek 函数一格一格的挑开空格和无用信息。但是这样做最大的缺点就是,我的txt导名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告9 入文档鼻息保持固定格式,一格空格都不能多,如果多了就会导致错位。后来与徐老师交流时,老师也说这种输入方法不可取
20、,因为实现了功能但是意义不大。规格太死,不够人性化。于是我就退后开始,重新选择语句。最后决定定义结构体,把txt中信息读取之后直接存入结构体,随后就把结构体中的数据利用set_xxxx 函数存入。5. 关于字母纠错及错误输入的处理:字母输入原来都是用fflush(stdin);来清空缓存来防止程序进入死循环。但是我这次编程想到了一个更加简单有效的方法:利用char 来存储选择,随后强转为int型,其实就是讲所有的字符转为了asc2 码,因为 acs2 码的唯一性,我就可以用switch 直接跳过了字母部分,比如我要判断i 的输入是否唯 1,我就将 i-48 写入 switch 判断就好了。4
21、使用说明4.1 主要功能介绍及操作步骤:1. 主界面:选择 1 登陆,密码为 1043,按任意键进入系统。2. 系统操作界面:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告10 直接输入数字选择功能。1: 添加新的图书资料:2: 修改已有图书资料:3: 删除已有图书资料:4: 查找已有图书资料:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
22、 - - - 名师精心整理 - - - - - - - 第 11 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告11 根据序号选择功能:按书名查找:按作者查找:按借出日期查找:按超期天数查找:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告12 5: 查看所有图书资料: 6: 读取指定位置 TXT :7: 写入指定位置 TXT :5 测试结果5.1 测试数据
23、1A 4 asdfasdf(多字母):名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告13 1000 /目的为测试重复编号的问题2. 修改时候输入未知编号:3. 查找时名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 39 页 - - - - - - - - - 北京电子科
24、技学院计算机实习报告14 5.2 测试目的1、测试学号重复2、测试字母和特殊字符对输入的影响3、测试筛选是否符合规格5.3 测试结果全部通过6 心得体会经历了为期十天的编程实习,我觉得我变得更加成熟了,我从一开始的迷茫到后来的目标坚定,这都是一个改变的过程。因为是在暑假前就选好了题目,而且提前也知道了题目的要求。 所以我在暑假就做好的了充分的准备。其实最开始想自学用VC+ 来编写一个可视化的程序。但是实施起来却没有那么容易,因为我学习的VC不系统不全面只是一些皮毛,改改别的还可以,但是要是真正想实现自己的思想就有点捉襟见肘。后决定还是先用比较熟悉的C+ 语言来编一个完整的系统。虽然以前有做过C
25、+ 的实验。但是像这种完成的系统确实没有经历过。其实这也是一个挑战,也是一个开始,是我们接触完整系统的开始。等快开学时候我已经完成了大部分代码:但是有一些问题还是没有解决,我开学后就开始全力去解决这些问题。偏偏事与愿违,关于文件读取问题始终没有找到好的解决办法。最后还是从c+教科书上找到的灵名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 39 页 - - - - - - - - - 北京电子科技学院计算机实习报告15 感来解决这些问题。收获很大。本次学习中我有以下收获:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年c+图书信息管理系统 2022 c+ 图书 信息管理 系统
限制150内