版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include #include #include struct BOOK int id,usr10,total,store,days10; char name31,author21; books100; /*上面是结构体的定义,用于存放书籍及借书的信息。*/ void page_title(char *menu_item) clrscr(); printf( 图 书 管 理 系 统 nn- %s -nn,menu_item); /*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/ void return_confirm(void) printf(n按任意键返回
2、n); getch(); /*上面是返回前请求确认的函数,以便在返回前观察结果*/ int search_book(void) int n,i; printf(请输入图书序号:); scanf(%d,&i); for(n=0;n0) printf(请输入借书证序号:); scanf(%d,&s); printf(请输入可借天数:); scanf(%d,&d); for(l=0;l10;l+) if(booksn.usrl=0) booksn.usrl=s; booksn.daysl=d; break; booksn.store-; if(n!=-1&booksn.store=0) printf
3、(此书已经全部借出.n); return_confirm(); /*上面是借书的函数,首先调用找书函数*/ void book_in(void) int n,s,l; page_title(归还图书); if(n=search_book()!=-1&booksn.storebooksn.total) printf(借阅者图书证列表:n); for(l=0;l10;l+) if (booksn.usrl!=0) printf(%d - %d天n,booksn.usrl,booksn.daysl); printf(请输入借书证序号:); scanf(%d,&s); for(l=0;l10;l+)
4、if(booksn.usrl=s) booksn.usrl=0; booksn.daysl=0; break; booksn.store+; if(n!=-1&booksn.store=booksn.total) printf(全部入藏.n); return_confirm(); void book_add(void) int n; page_title(注册新书); for(n=0;n100;n+) if(booksn.id=0) break; printf(序号:); scanf(%d,&booksn.id); printf(书名:); scanf(%s,&); pr
5、intf(作者:); scanf(%s,&booksn.author); printf(数量:); scanf(%d,&booksn.total); booksn.store=booksn.total; return_confirm(); void book_del(void) int n; page_title(注销旧书); if(n=search_book()!=-1) booksn.id=0; printf(该书已注销.n); return_confirm(); void main(void) menu: page_title(操作选单); printf(请用数字键选择操作nn); pr
6、intf(1 借阅图书n2 归还图书nn); printf(3 注册新书n4 注销旧书nn); printf(n0 退出n); switch(getch() case 1 : book_out();break; case 2 : book_in();break; case 3 : book_add();break; case 4 : book_del();break; case 0 : exit(0); goto menu; int n; page_title(广?症慕); if(n=search_book()!=-1) booksn.id=0; printf(乎慕厮广?.n); return
7、_confirm(); void main(void) menu: page_title(荷恬佥汽); printf(萩喘方忖囚佥夲荷恬nn); printf(1 処堋夕慕n2 拷珊夕慕nn); printf(3 广过仟慕n4 广?症慕nn); printf(n0 曜竃n); switch(getch() case 1 : book_out();break; case 2 : book_in();break; case 3 : book_add();break; case 4 : book_del();break; case 0 : exit(0); goto menu; 这是个图书管理系统,
8、没有用到指针。BC应该可以通过调试,输入数据的时候一定注意数字的范围和字串的长度。#include #include #include struct BOOKint id,usr10,total,store,days10;char name31,author21;books100;/*上面是结构体的定义,用于存放书籍及借书的信息。*/void page_title(char *menu_item)clrscr();printf( 图 书 管 理 系 统 nn- %s -nn,menu_item);/*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/void ret
9、urn_confirm(void)printf(n按任意键返回n);getch();/*上面是返回前请求确认的函数,以便在返回前观察结果*/int search_book(void)int n,i;printf(请输入图书序号:);scanf(%d,&i);for(n=0;n0) printf(请输入借书证序号:); scanf(%d,&s); printf(请输入可借天数:); scanf(%d,&d); for(l=0;l10;l+) if(booksn.usrl=0) booksn.usrl=s; booksn.daysl=d; break; booksn.store-; if(n!=-
10、1&booksn.store=0) printf(此书已经全部借出.n);return_confirm();/*上面是借书的函数,首先调用找书函数*/void book_in(void)int n,s,l;page_title(归还图书);if(n=search_book()!=-1&booksn.storebooksn.total) printf(借阅者图书证列表:n); for(l=0;l10;l+) if (booksn.usrl!=0) printf(%d - %d天n,booksn.usrl,booksn.daysl); printf(请输入借书证序号:); scanf(%d,&s)
11、; for(l=0;l10;l+) if(booksn.usrl=s) booksn.usrl=0; booksn.daysl=0; break; booksn.store+; if(n!=-1&booksn.store=booksn.total) printf(全部入藏.n);return_confirm();void book_add(void)int n;page_title(注册新书);for(n=0;n100;n+) if(booksn.id=0) break;printf(序号:);scanf(%d,&booksn.id);printf(书名:);scanf(%s,&booksn.
12、name);printf(作者:);scanf(%s,&booksn.author);printf(数量:);scanf(%d,&booksn.total);booksn.store=booksn.total;return_confirm();void book_del(void)int n;page_title(注销旧书);if(n=search_book()!=-1) booksn.id=0;printf(该书已注销.n);return_confirm();void main(void)menu: page_title(操作选单);printf(请用数字键选择操作nn);printf(1
13、借阅图书n2 归还图书nn);printf(3 注册新书n4 注销旧书nn);printf(n0 退出n);switch(getch() case 1 : book_out();break; case 2 : book_in();break; case 3 : book_add();break; case 4 : book_del();break; case 0 : exit(0); goto menu;设计一个图书管理系统悬赏分:0 - 提问时间2007-6-29 13:00一、题目:设计一个应用于图书馆的图书管理系统 二、目的与要求 1 目的: 通过图书管理系统的设计,培养学生综合利用C+
14、语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。 2 基本要求: (1)要求用C+语言编程,在Visual C+环境下调试完成; (2)要求划分功能模块,各个功能分别使用函数来完成; (3)源代码程序要求必要的注释。 三、设计方法和基本原理 1 课题功能描述 设计一个图书管理系统,要求实现的功能包括:录入图书,借阅图书,归还图书,注销旧书,查询图书,修改图书。 2 问题详细描述 设计一个图书管理系统,要求可以录入图书,包括录入图书的编号、书名、作者、数量;借阅图书,包括借
15、书人的借书证序号、借阅的天数,借阅图书的编号,并且书借出时可以通过书的编号查找到对应的借书人的资料;归还图书;注销旧书,把旧书从书库中删除;查询图书,可以按照图书编号、书名或作者进行图书的查找;修改图书,当输入有误或其他情况需要修改某条图书信息时,可以进行修改。 要求编写多个函数分别实现上述功能,而后在main函数中进行调用。 3 问题的解决方案: 根据问题的描述,可以按照程序要求的功能采用结构化的设计思想。 (1) 可利用菜单使用户选择各个功能模块,例如: 1借阅图书 2归还图书 3注册新书 4注销旧书 5查询图书 6修改图书 如果选择5查询图书,那下面又需要选择子功能模块,例如: 1 按照
16、图书编号查询 2 按照图书名称查询 3 按照图书作者查询 而后可根据不同的选项进入到不同的功能模块进行执行。结束程序,请选择y之外的任何字母或数字,如果想让程序循环执行,则选择y。 四、主要技术问题的描述 根据三的分析,主要问题在于: (1)结构体的构造(struct book) 图书编码(int id)、图书数量(int total) ,现有库存图书数量(int store) ,借阅者的借书证号(int usr10)借阅天数(int books10),图书的名称(char title31),图书的作者(author21)。 (2)注意借阅图书,归还图书,修改图书的时候都需要首先调用查询图书的
17、函数首先查到该书。 五、创新要求/:Definestheentrypointfortheconsoleapplication. / #includestdafx.h #include #include #include #include #include #defineSTACK_INIT_SIZE10 #defineOK1 #defineTRUE1 #defineFALSE0 #defineERROR0 typedefstruct/定义学生类型,用于存放借出的书籍 intcarnum; charlendbook10; Stu_Info; typedefstruct/定义书的类型 intboo
18、knum; charbookname10; charbookcreat10; intturefalse;/用于借书和还书模块判断一本书是否借出的条件 Book_Info; typedefstruct/借书卡的数据类型 intcarnum; charstudentname10; intstudentclass; BookCard_Info; Stu_Infostudent1000; BookCard_Infocar100; Book_Infobook1000; addbook()/加书函数 FILE*fp; inti=0; charchoice=y; fp=fopen(book.txt,a+);
19、 while(choice=y|choice=Y) printf(ttt请输入第%d本书的序号:,i+1);printf(t); scanf(%d,&booki.booknum); printf(ttt请输入书名:);printf(t); scanf(%s,booki.bookname); printf(ttt请输入书的作者:);printf(t); scanf(%s,booki.bookcreat); printf(ttt请您选择存在状态1或2:1书在馆,2书已借出n); printf(ttt请选择:);printf(t); scanf(%d,&booki.turefalse); fwrit
20、e(&booki,sizeof(Book_Info),1,fp); printf(ttt是否要输入下本书Y/N);printf(t); scanf(%s,&choice); fclose(fp); return(0);/joisy lendcount() FILE*fp; inti,n=0; fp=fopen(record.txt,r); for(i=0;fread(&studenti,sizeof(Stu_Info),1,fp)!=0;i+) printf(ttt卡号:%d借出的书籍:%sn,studenti.carnum,studenti.lendbook); n=n+1; fclose(
21、fp); printf(ttt目前共有%d本书借出n,n); printf(ttt按任意键n);printf(ttt); getch(); return(0);/joisy chabook()/查书函数 charch5; do system(cls); puts(nnnn); puts(tt欢迎进入图书查询系统!n); puts(ttt请您选择操作类型:); printf(t1:); printf(t0:n); printf(ttt请输入0-1:); printf(t); scanf(%s,&ch5); switch(ch5) case1:findbook();getch();break; c
22、ase0:break; default:break; while(ch5!=0); return(0);/joisy lendbook()/借书函数 FILE*fp,*fp2; inti,n; intcarnum; printf(t请输入您的卡号n);printf(t); scanf(%d,&carnum); fp=fopen(car.txt,w+); for(i=0;fread(&cari,sizeof(100),1,fp)!=0;i+) if(cari.carnum=carnum) n=i; fclose(fp); printf(t请输入您要借阅的书的名字);printf(t); scan
23、f(%s,studentn.lendbook); fp=fopen(book.txt,r); for(i=0;fread(&booki,sizeof(1000),1,fp)!=0;i+) if(strcmp(booki.bookname,studentn.lendbook)=0) if(booki.turefalse=0) printf(ttt对不起,此书已借出,请借其他书n); printf(ttt);fclose(fp);getch();return(0); else fp=fopen(record.txt,a+); studentn.carnum=carnum; fwrite(&stud
24、entn,sizeof(100),1,fp); fclose(fp); 作者: 151214035 2007-6-14 20:05 回复此发言 10回复:图书管理系统 fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(1000),1,fp2)!=0;i+) fwrite(&booki,sizeof(1000),1,fp); fclose(fp); fclose(fp2); fopen(bookl.txt,w); fclose(fp2); printf(ttt借书完毕,按任意键返回n);printf
25、(ttt); getch(); return(0); printf(ttt不存在这样的书,任意键返回n);printf(ttt); fclose(fp); getch(); return(0); printf(ttt您的卡号不存在,请申请新卡,按任意键返回n);printf(ttt); fclose(fp); getch(); carcount()/卡帐目 FILE*fp; inti,n=0; fp=fopen(car.txt,r); for(i=0;fread(&cari,sizeof(BookCard_Info),1,fp)!=0;i+) printf(第%d张卡n,i+1,cari.ca
26、rnum,cari.studentname,cari.studentclass); n=n+1; fclose(fp); ; printf(ttt按任意键n); printf(ttt); getch(); return(0);/joisy delcar() FILE*fp,*fp2; inti; intcarnum; charchoice; fp=fopen(car.txt,r); fp2=fopen(bookl.txt,w); printf(ttt请输入您要删除的卡号); printf(t); scanf(%d,&carnum); printf(ttt是否真的要删除该卡?Y/N); prin
27、tf(t); scanf(%s,&choice); if(choice=y|choice=Y) fp=fopen(car.txt,w); fp2=fopen(bookl.txt,r); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(ttt此卡现已删除n); printf(ttt按任意键返回n);printf(ttt); getch(); return(0); else printf(ttt按任意键返回n);printf(ttt); getch(); return(0); addcar()/加卡函数 FI
28、LE*fp; inti=0; charchoice=y; fp=fopen(car.txt,a+); while(choice=y|choice=Y) printf(ttt请输入卡号:);printf(t); scanf(%d,&cari.carnum); printf(ttt请输入学生学号:);printf(t); scanf(%d,&cari.studentnumber); printf(ttt请输入学生姓名:);printf(t); scanf(%s,&cari.studentname); printf(ttt请输入学生性别:);printf(t); scanf(%s,&cari.stu
29、dentsex); printf(ttt请输入学生年龄:);printf(t); scanf(%d,&cari.studentage); printf(ttt请输入班级:);printf(t); scanf(%d,&cari.studentclass); fwrite(&cari,sizeof(BookCard_Info),1,fp); printf(ttt是否要输入下一位同学的卡号Y/N);printf(t); scanf(%s,&choice); fclose(fp); bookcount()/书账目查询函数 FILE*fp; inti,n=0; fp=fopen(book.txt,r);
30、 for(i=0;fread(&booki,sizeof(Book_Info),1,fp)!=0;i+) if(booki.booknum!=0&strlen(booki.bookname)!=0&strlen(booki.bookcreat)!=0) printf(ttt第%d本书n,i+1,booki.booknum,booki.bookname,booki.bookcreat,booki.turefalse); n=n+1; fclose(fp); printf(ttt目前共有%d本书n,n); printf(ttt按任意键n);printf(ttt); intfindbook()/查书
31、函数 FILE*fp; charbookname10; intture,i; fp=fopen(book.txt,r); printf(ttt请输入您要查找的书名n);printf(ttt); 作者: 151214035 2007-6-14 20:05 回复此发言 11回复:图书管理系统 scanf(%s,bookname); for(i=0;fread(&booki,sizeof(Book_Info),1,fp)!=0;i+) if(strcmp(bookname,booki.bookname)=0)/不得strcmp是什么了 if(booki.turefalse=1) printf(ttt
32、这本书的详细资料是:%d%s%s此书现在无人借阅n,booki.booknum,booki.bookname,booki.bookcreat); elseprintf(ttt这本书已经有人借出n);fclose(fp);return; fclose(fp); return(0); printf(ttt没有你要查询的书籍n);printf(ttt); fclose(fp); return(0); delbook()/删书函数 FILE*fp,*fp2; inti; charbookname10,choice; fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w
33、); printf(ttt请输入您要删除的书名n); printf(ttt); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(Book_Info),1,fp)!=0;i+) if(strcmp(bookname,booki.bookname)!=0) fwrite(&booki,sizeof(Book_Info),1,fp2); fclose(fp); fclose(fp2); printf(t是否真的要删除该书籍?Y/N); printf(ttt); scanf(%s,&choice); if(choice=y|choice=Y) fp=fo
34、pen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(Book_Info),1,fp2)!=0;i+) fwrite(&booki,sizeof(1000),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(t已删除该书籍,按任意键返回);printf(t); getch(); return(0); else printf(t按任意键返回);printf(t); getch(); return; changeb
35、ook()/换书函数 FILE*fp,*fp2; charbookname10,choice; inti; fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); printf(ttt请输入要修改的书籍的名字);printf(t); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(Book_Info),1,fp)!=0;i+) if(strcmp(booki.bookname,bookname)=0) printf(ttt您所要修改的书的资料如下,请选择您要修改的内容n); printf(ttt序号:%d书名:
36、%s作者:%sn,booki.booknum,booki.bookname,booki.bookcreat); printf(ttt1:修改书的序号n); printf(ttt2:修改书名n); printf(ttt3:修改作者n); printf(ttt请输入1-3:); printf(t); scanf(%s,&choice); switch(choice) case1: printf(t请输入新的序号); printf(t); scanf(%d,&booki.booknum); fwrite(&booki,sizeof(Book_Info),1,fp2); break; case2: p
37、rintf(t请输入新的书名); printf(t); scanf(%s,booki.bookname); fwrite(&booki,sizeof(Book_Info),1,fp2); break; case3: printf(ttt请输入新的作者n); printf(ttt); scanf(%s,booki.bookcreat); fwrite(&booki,sizeof(Book_Info),1,fp2); break; defaut:printf(ttt没有这样的操作);break; continue; if(fread(&booki,sizeof(Book_Info),1,fp)=0
38、)puts(ttt该书籍不存在!); printf(ttt按任意键返回n); printf(ttt); getch(); return(0); huanbook()/还书函数 FILE*fp,*fp2;/定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏 inti,n; intcarnum; 作者: 151214035 2007-6-14 20:05 回复此发言 12回复:图书管理系统 charlendbook10; printf(ttt请输入您的卡号n);printf(ttt); scanf(%d,&carnum); fp=fopen(car.txt,r);/读取卡号记录
39、for(i=0;fread(&cari,sizeof(BookCard_Info),1,fp)!=0;i+)/for循环判断卡号是否存在 if(cari.carnum=carnum)/卡号存在,进入下一循环 n=i; fclose(fp); printf(ttt请输入您要还的书的名字n);printf(ttt); scanf(%s,lendbook); fp=fopen(record.txt,r); for(i=0;fread(&studenti,sizeof(Stu_Info),1,fp)!=0;i+)/判断是否借阅了输入的书 if(strcmp(studenti.lendbook,lend
40、book)=0)/借阅了该书,进入下一循环,否则出错显示 fclose(fp); fp=fopen(record.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&studenti,sizeof(Stu_Info),1,fp)!=0;i+) if(strcmp(studenti.lendbook,lendbook)=0) continue;/删除还掉的书的借书记录 fwrite(&studenti,sizeof(Stu_Info),1,fp2);/写入原来没还的书的记录 fclose(fp); fclose(fp2); fp=fopen(record
41、.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&studenti,sizeof(Stu_Info),1,fp2)!=0;i+) fwrite(&studenti,sizeof(Stu_Info),1,fp);/将借书记录信息写回 fclose(fp); fclose(fp2); fopen(bookl.txt,w);/清临时文件的记录 fclose(fp2); fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&booki,sizeof(Book_Info),1,fp)!=0;i+)/将书的记录写入临时文件,防止因为修改信息破坏以前的记录 if(i=n) booki.turefalse=1; fwrite(&booki,sizeof(Book_Info),1,fp2);/将还的书的原来状态设为无人借阅的 continue; fwrite(&booki,sizeof(Book_Info),1,fp2); fclose(fp); fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(Book_Info),1,fp2)!=0;i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国冶金地质总局矿产资源研究院2026年高校毕业生招聘备考题库及参考答案详解
- 2025年盐山辅警招聘真题及答案
- 2025四川成都中医药大学第三附属医院招聘6人考试核心题库及答案解析
- 2025河南黄淮学院招聘高层次人才89人考试核心试题及答案解析
- 2025年中山大学孙逸仙纪念医院深汕中心医院放射科影像专科合同医技岗位招聘备考题库带答案详解
- 2025年甘肃省兰州市心连心社会工作服务中心招聘笔试重点试题及答案解析
- 2025中铁西北科学研究院有限公司评估中心招聘备考核心试题附答案解析
- AI城市智慧医疗布局在高中城市规划健康教学中的应用课题报告教学研究课题报告
- 2025中财科创绿色金融研究院招聘备考笔试题库及答案解析
- 2025招商银行上海分行社会招聘笔试重点题库及答案解析
- 2025年高校后勤管理岗位应聘笔试指南及模拟题答案解析
- 2025年70周岁以上老年人换长久驾照三力测试题库(含答案)
- 羽毛的作用教学课件
- 知道智慧树旅游资源鉴赏与开发满分测试答案
- 胸花设计教学课件
- 跟腱断裂护理查房
- 酒店安全巡检管理办法
- 私域流量培训
- ZLP630高处作业吊篮使用说明书
- 部编人教版三年级上册道德与法治全册教案
- 新疆和田县多宝山铅多金属矿项目环境影响报告书
评论
0/150
提交评论