c图书信息标准管理系统附源码.doc

上传人:满*** 文档编号:97945489 上传时间:2024-07-08 格式:DOC 页数:41 大小:681.54KB
返回 下载 相关 举报
c图书信息标准管理系统附源码.doc_第1页
第1页 / 共41页
c图书信息标准管理系统附源码.doc_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《c图书信息标准管理系统附源码.doc》由会员分享,可在线阅读,更多相关《c图书信息标准管理系统附源码.doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、学号:4303 计算机实习汇报系 别:管理系专 业:信息管理和信息系统专业班 级:1043班学生姓名:李 优指导老师:徐 日日 期:-09-03-09-141需求分析1.1 选题任务图书借阅管理系统(1) 编程工具C+(2) 要求选题学生应含有端正学习态度、正常交流能力,应有主动主动、克服困难学习意识(3) 本题概述以学院图书馆为例,图书借和管理是一项常常性工作,为使图书借阅管理工作正确高效,提供图书借阅统计添加、修改、删除、查询、浏览、汇总等,用图书借阅关系软件,能有效提升工作效率,含有较强实际意义。(4) 功效描述 能度日外部提供包含图书借阅信息文本文件(TXT文件); 能在程序中录入图书

2、借阅信息(可参考我院图书馆网上图书借阅信息各个项目),并将信息写入文本文件(TXT文件); 能对全部图书借阅信息,按条件(按图书名、图书编号、借阅日期、借阅人、超期是否、超期天数等)查询浏览,能汇总统计计算出符合某条件图书借阅统计数量并浏览这些借阅信息,能将查询、浏览、汇总结果输出结果文本文件(TXT文件)(5) 辅助说明基础要求:+扩展要求:+1.2 输入数据和输出数据形式:程序中包含图书信息包含: char bnum20; /书号 char bname20; /书名char bauthor10; /作者char rname10; /借阅人char bdays10; /借出日期char bc

3、hao10; /超期天数为了方便,我全部设置成了char型。而程序中包含两种输入方法和两种输出方法,对应题目要求,分别是:单个图书信息增删查改;TXT文档导入(图书数据库.txt);屏幕打印;TXT文档导出(书籍信息.txt)。1.3 测试数据及测试目标字母测试,错误数据测试,反复数据测试目标:产看本程序纠错能力和是否人性化。2程序设计2.1 关键数据类型定义 /*书籍结构体,用于存放书籍基础信息*class Bookprivate: char bnum20; /书号 char bname20; /书名char bauthor10; /作者char rname10; /借阅人char bday

4、s10; /借出日期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) /设置作者char *get_bauthor() /取得作者姓名void set_bdays(char *d) /设置借出日期char *get_bdays() /取得借出日期void set_bchao(char *c) /设置超出天

5、数char *get_bchao() /取得超出天数void set_rname(char *rn) /设置借阅人char *get_rname() /取得借阅人姓名 void copy(Book m) /Book结构体copy函数 ;/class book/*书籍管理结构体,实现管理书籍功效*class BookManageprivate: Book books100; /定义Book书籍结构体数组对象,最大容量100本public:int length; BookManage() /结构函数,读取磁盘文件int add(Book book) /添加图书资料int bnu_search(ch

6、ar *bnu) /按书号查找书籍int bna_search(char *bna) /按书名查找书籍int bau_search(char *bau) /按作者查找书籍int rn_search(char *rn) /按借阅人查找书籍int bd_search(char *bd) /按借出日期查找书籍 int bc_search(char *bc) /按超期天数查找书籍void revise(Book book,int i) /修改书籍函数void deleteBook(int index) /删除书籍资料函数void show_bookhead() /显示输出列表,表头。void show

7、_book(int i)/显示书籍函数void saveFileHead() /保留书籍文件表头到txtvoid saveFile(int i)/带参输出书籍到txtvoid readFile() /读取书籍文件;/ class BookManage/*菜单结构体,实现界面引导*class MenuBookManage bm; /定义书籍管理结构体对象bmprivate:int choice; /菜单序号选择int key; /管理员密码public:void header() /首页欢迎界面void log_menu() /主界面登录菜单void admin_menu() /管理菜单void

8、 absearch_menu() /查找书籍菜单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()2.2 主程序步骤图开始

9、判定是否进入并输入密码3:删除已经有图书资料4:查找已经有图书资料5:查看全部图书资料6:读取指定位置TXT7: 写入指定位置TXT8:返回系统登录界面0: 退出图书管理系统1:添加新图书资料2:修改已经有图书资料输入书号判定书号是否反复输入要修改书号判定存在输入要删除书号判定存在退出系统按超期查找按作者查找按编号查找按日期查找按书名查找重新输入书号删除 书籍重新输入书号修改数据重新输入新书号添加书籍2.3 调用关系1.书籍信息录入:void set_bnum(char *no) /设置书号strcpy(bnum,no); /把字符串no中字符复制到字符串bnum中char *get_bnum

10、() /取得书号 return bnum; /返回值为bnum void set_bname(char *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;

11、 void set_bchao(char *c) /设置超出天数 strcpy(bchao,c); 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书籍信息查找:不管是根据书号、书名、作者、借阅人、借出日期、超期天数来进行查找全部是进行挨个比较,假如碰到相同则返回书籍i值,进

12、行返回输出。4.书籍信息修改:输入想要修改书籍编号,根据查找方法,找到i,然后进行覆盖。完成修改。5.书籍屏幕打印输出:分两部分输出,首先打印一个头信息,相当于列表头;然后利用循环语句带参输出(i为参数,循环)。6.保留信息到txt文件:同分为两部分,类似屏幕打印方法,先存入表头,然后带参循环存入书籍信息。带参意义就是,能够无限调用该语句,只要知道书序号i。7.从信息中读取txt文件:struct books char numb10; /书号 char nameb20; /书名 char authorb10; /作者 char namer10; /借阅人 char daysb10; /借出日期

13、 char chaob10; /超期天数;定义结构体。利用fscanf()语句讲读取数据按次序存入结构体中。然后直接利用书籍添加函数直接写入系统。3调试分析3.1关键问题及处理方案:1.界面颜色设定:一直抛弃黑底白字这种默认形式,换一个颜色给人特殊感觉,在网上找到相关代码为system(color *);语句。不过也是没有头绪不知道怎么调试,以后一不小心设置错误,系统就弹出了提醒界面,我就明白了界面颜色设置方法(图3.1):图3.12.相关书籍cout输出:最开始设计输出模块时候,仅仅是想到了不带参book信息输出,show_book()函数中自带了一个for语句循环输出全部书籍信息,是为显示

14、全部书籍设计。不过以后发觉假如要单显示筛选信息就要从新写一个带参show_book(int i),即使函数重载许可这么做,不过却无意义增加了代码长度。我选择删除了不带参show_book(),把for语句循环写在外面。这么就增加了show_book(int i)函数利用率,精简了函数和长度。3.书籍信息txt写入:综合了屏幕打印经验,鉴于fwrite和cout使用方法和显示效果类似,我决定将txt写入语句也设置成带参形式saveFile(int i),原理和show_book(int i)基础一致。完成这些就能实现。以后发觉文件总是覆盖,每次写入全部会将上一次覆盖,也就是只有最终一行,以后才想

15、起了ios:app追加模式,才最终算完整实现。4.读取数据函数:这个函数是我编辑最久,因为使用不熟练,我先查找了很多资料,而且写了部分单独小程序去测试效果,不过感觉全部不理想。以后选择了一个最笨方法,利用fseek函数一格一格挑开空格和无用信息。不过这么做最大缺点就是,我txt导入文档鼻息保持固定格式,一格空格全部不能多,假如多了就会造成错位。以后和徐老师交流时,老师也说这种输入方法不可取,因为实现了功效不过意义不大。规格太死,不够人性化。于是我就退后开始,重新选择语句。最终决定定义结构体,把txt中信息读取以后直接存入结构体,随即就把结构体中数据利用set_xxxx函数存入。5.相关字母纠错

16、及错误输入处理:字母输入原来全部是用fflush(stdin);来清空缓存来预防程序进入死循环。不过我这次编程想到了一个愈加简单有效方法:利用char 来存放选择,随即强转为int型,其实就是讲全部字符转为了asc2码,因为acs2码唯一性,我就能够用switch直接跳过了字母部分,比如我要判定i输入是否唯1,我就将i-48写入switch判定就好了。 4使用说明4.1 关键功效介绍及操作步骤:1.主界面: 选择1登陆,密码为1043,按任意键进入系统。2.系统操作界面:直接输入数字选择功效。1: 添加新图书资料:2: 修改已经有图书资料: 3: 删除已经有图书资料:4: 查找已经有图书资料:

17、依据序号选择功效:按书名查找: 按作者查找:按借出日期查找: 按超期天数查找:5: 查看全部图书资料: 6: 读取指定位置TXT: 7: 写入指定位置TXT: 5测试结果5.1 测试数据1A 4 asdfasdf(多字母):1000 /目标为测试反复编号问题2.修改时候输入未知编号:3.查找时 5.2 测试目标 1、测试学号反复2、测试字母和特殊字符对输入影响3、测试筛选是否符合规格5.3 测试结果 全部经过6心得体会经历了为期十天编程实习,我认为我变得愈加成熟了,我从一开始迷茫到以后目标坚定,这全部是一个改变过程。因为是在暑假前就选好了题目,而且提前也知道了题目标要求。所以我在暑假就做好了充

18、足准备。其实最开始想自学用VC+来编写一个可视化程序。不过实施起来却没有那么轻易,因为我学习VC不系统不全方面只是部分皮毛,改改别还能够,不过要是真正想实现自己思想就有点捉襟见肘。后决定还是先用比较熟悉C+语言来编一个完整系统。即使以前有做过C+试验。不过像这种完成系统确实没有经历过。其实这也是一个挑战,也是一个开始,是我们接触完整系统开始。等快开课时候我已经完成了大部分代码:不过有部分问题还是没有处理,我开学后就开始全力去处理这些问题。偏偏事和愿违,相关文件读取问题一直没有找到好处理措施。最终还是从c+教科书上找到灵感来处理这些问题。收获很大。此次学习中我有以下收获:1、明确了c和c+区分,

19、利用了多个c+知识,包含一开始就没弄太明白文件输入输出,这回事真正弄明白了。2、复习了类和结构体知识,不过继承类没有用到。以后还要多加复习。3、第一次编写以后,运行以后有50多个错误,大多数全部是因为马虎造成。以后还要多加这类练习熟能生巧。4、多多利用网络资源,看网上类似代码能够开阔自己思绪,学习她人好算法。学习有很大帮助。5、先写出步骤图这么是很好一个习惯,能够为后面写程序打下好基础。6、养成好习惯,一个一个模块写,写好了立即实施看是否有错误,以防全部写完了,错误却没法去更正。10天编程已经靠近尾声,不过总认为要完善我选题仍有很多要做工作。以后还要加强自己学习。努力学习编程。感谢徐老师指导。

20、 7附录#include #include #include #include #include using namespace std;/*书籍结构体,用于存放书籍基础信息*class Bookprivate: char bnum20; /书号 char bname20; /书名char bauthor10; /作者char rname10; /借阅人char bdays10; /借出日期char bchao10; /超期天数public:Book() /结构函数初始化信息 strcpy(bnum,);strcpy(bname,);strcpy(bauthor,);strcpy(rname,

21、);strcpy(bdays,); strcpy(bchao,); void set_bnum(char *no) /设置书号 strcpy(bnum,no); /把字符串no中字符复制到字符串bnum中 char *get_bnum() /取得书号 return bnum; /返回值为bnum void set_bname(char *n) /设置书名 strcpy(bname,n); char *get_bname() /取得书名 return bname; void set_bauthor(char *a) /设置作者 strcpy(bauthor,a); char *get_bauth

22、or() /取得作者姓名 return bauthor; void set_bdays(char *d) /设置借出日期 strcpy(bdays,d); char *get_bdays() /取得借出日期 return bdays; void set_bchao(char *c) /设置超出天数 strcpy(bchao,c); char *get_bchao() /取得超出天数 return bchao; void set_rname(char *rn) /设置借阅人 strcpy(rname,rn); char *get_rname() /取得借阅人姓名 return rname; vo

23、id copy(Book m) /Book结构体copy函数 strcpy(bnum,m.get_bnum(); /将取得书号函数里返回值里字符复制到bnum strcpy(bname,m.get_bname(); strcpy(bauthor,m.get_bauthor(); strcpy(rname,m.get_rname(); strcpy(bdays,m.get_bdays(); strcpy(bchao,m.get_bchao(); ;/*书籍管理结构体,实现管理书籍功效*class BookManageprivate: Book books100; /定义Book书籍结构体数组对象

24、,最大容量100本public:int length; BookManage() /结构函数,读取磁盘文件 length=0; /从头读起,计数,最大100 BookManage() /析构函数,保留磁盘文件 int add(Book book) /添加图书资料/ if(length=100) cout对不起,储存已满,您无法继续添加!n; return -1; else bookslength.copy(book); /调用书籍结构体copy函数 length+; return (length-1);int bnu_search(char *bnu) /按书号查找书籍 for(int i=0

25、;ilength;i+) if(strcmp(booksi.get_bnum(),bnu)=0) /字符串比较,判定是否相等 return i; return -1; int bna_search(char *bna) /按书名查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_bname(),bna)=0) /判定 return i; return -1; int bau_search(char *bau) /按作者查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_bauthor(),bau)=

26、0)/判定 return i; return -1; int rn_search(char *rn) /按借阅人查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_rname(),rn)=0)/判定 return i; return -1; int bd_search(char *bd) /按借出日期查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_bdays(),bd)=0)/判定 return i; return -1; int bc_search(char *bc) /按超期天数查找书籍 f

27、or(int i=0;ilength;i+)if(strcmp(booksi.get_bchao(),bc)=0)/判定return i;return -1; void revise(Book book,int i) /修改书籍函数 booksi.copy(book); /调用Book结构体copy函数void deleteBook(int index) /删除书籍资料函数 for(int i=index;ilength-1;i+) booksi.copy(booksi+1);/用后面地址将目前地址覆盖 length-; void show_bookhead() /显示输出列表,表头。cout

28、 *书*籍*信*息*列*表*nn; cout书号; cout.width(15); cout书名; cout.width(15); cout作者; cout.width(15); cout借阅人;cout.width(15); cout借出日期;cout.width(15); cout超期天数n;void show_book(int i)/显示书籍函数 coutbooksi.get_bnum(); cout.width(15); coutbooksi.get_bname(); cout.width(15); coutbooksi.get_bauthor(); cout.width(15); c

29、outbooksi.get_rname(); cout.width(15); coutbooksi.get_bdays(); cout.width(15); coutbooksi.get_bchao()n; void saveFileHead() /保留书籍文件表头到txtofstream fwrite(书籍信息.txt,ios:app); if(!fwrite)cout文件保留失败!n; exit(1);fwrite *书*籍*信*息*列*表*nn; fwrite书号; fwrite.width(15); fwrite书名; fwrite.width(15); fwrite作者; fwrit

30、e.width(15); fwrite借阅人;fwrite.width(15); fwrite借出日期;fwrite.width(15); fwrite超期天数n;fwrite.close(); /关闭磁盘文件void saveFile(int i)/带参输出书籍到txt ofstream fwrite(书籍信息.txt,ios:app); fwritebooksi.get_bnum(); fwrite.width(15); fwritebooksi.get_bname(); fwrite.width(15); fwritebooksi.get_bauthor(); fwrite.width(

31、15); fwritebooksi.get_rname(); fwrite.width(15); fwritebooksi.get_bdays(); fwrite.width(15); fwritebooksi.get_bchao()n;fwrite.close(); /关闭磁盘文件 void readFile() /读取书籍文件 struct books char numb10; /书号 char nameb20; /书名 char authorb10; /作者 char namer10; /借阅人 char daysb10; /借出日期 char chaob10; /超期天数;Book b

32、ook; /书籍结构体对象bookbooks form100;FILE *fp;if (NULL=(fp=fopen(图书数据库.txt,r)printf(file not open!n);exit(0); fseek(fp,40,SEEK_SET); /跳开表头40字节for(int i=0;i5;i+) fscanf(fp, %s, &formi.numb);fscanf(fp, %s, &formi.nameb);fscanf(fp, %s, &formi.authorb);fscanf(fp, %s, &formi.namer);fscanf(fp, %s, &formi.daysb)

33、;fscanf(fp, %s, &formi.chaob);book.set_bnum(formi.numb);book.set_bname(formi.nameb);book.set_bauthor(formi.authorb); book.set_rname(formi.namer); book.set_bdays(formi.daysb);book.set_bchao(formi.chaob);BookManage:add(book);fflush(stdin); /总是溢出,最终想去了清空缓存,就好了,呵呵fclose(fp); ; /*菜单结构体,实现界面引导*class MenuB

34、ookManage bm; /定义书籍管理结构体对象bmprivate:char choice; /菜单序号选择 int key; /管理员密码public:int check(int m) /检验语句/*int q;dowhile(!(q=scanf(%ld,&m)|getchar()!=n) fflush(stdin);printf(输入错误,请重新输入:);while(q=0);(int) m;*/return m;void header() /首页欢迎界面/system(color A9);coutt n;coutt n;coutt n; coutt n;coutt n;coutt n;_sleep(1000);coutt n;coutt n;coutt BESTI 北 京 电 子 科 技 学 院 n;coutt =n;coutt 图 书 借 阅 管 理 系 统 1.0 n;coutt n;coutt n;_sleep(600);void log_menu() /主界面登录菜单/system

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁