版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1. 课程设计名称.12.课程设计目的.13课程设计流程图.14.实验内容.1(1) 新书注册模块.3(2)借书模块.4(3)查阅图书.5(4)旧图书的注销:.6(5)归还图书模块:.7(6)统计图书85.程序源代码:.86.心得体会.137.参考文献.141.课程设计名称:图书管理系统2.课程设计目的(1)加深对文件系统概念的理解,明确文件系统等的运用。(2)熟悉在Liunx环境下的简单程序编程。(3)以Linux系统文件部分系统调用为基础设计一个简易的图书管理系统。包括图书的录入、查询、借阅、清理、统计等功能。3课程设计流程图进入图书管理系统2借图书1注册新书6统计图书5归还图书4注销
2、旧书请执行你要做的操作0退出3查阅图书4.实验内容以Linux系统文件部分系统调用为基础设计一个的图书管理系统。要求实现:图书的录入、查询、借阅、清理、统计等功能、还要实现对每天的借阅情况进行统计。(1) 注册新书模块:在此方法book_add()中要充分运用文件指针的运用。通过定义FILE * fp;对文件进行一系列的调整,在新书的注册的时候不会出现指针的覆盖,首先以随机读写的方式打开文件,用来避免在打开文件的指针都指向第一个位置的情况通过声明图书的有关属性作为一个数据结构struct BOOK。struct BOOK int id,usr10,total,store,days10; cha
3、r name31,author21; books100;/*以上是数据结构*/void book_add() char a; FILE * fp; int n=0; int c; if(fp=fopen("bbb","ab+")=NULL) /* 读写方式打开或建立新文件*/ printf("cannot open filen"); return ; page_title("注册新书");do printf("序号:"); scanf("%d",&booksn.id)
4、; printf("书名:"); scanf("%s",&); printf("作者:"); scanf("%s",&booksn.author); printf("数量:"); scanf("%d",&booksn.total); booksn.store=booksn.total; n+; printf("继续注册:1.是 2.否"); scanf("%d",&c);while(
5、c=1); if(fwrite(books,sizeof(struct BOOK),n, fp)!=n) printf(" file write error"); fclose(fp); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); (2)借书模块借阅图书模块book_out()是是通过定义是数据结构在通过查找模块找到该书时是通过书的图书号进行借阅。void book_out() char a; int n,s,l,d; page_title(&qu
6、ot;借阅图书"); if(n=search_book()!=-1&&booksn.store>0) printf("请输入借书证序号:"); scanf("%d",&s); printf("请输入可借天数:"); scanf("%d",&d); for(l=0;l<10;l+) if(booksn.usrl=0) booksn.usrl=s; booksn.daysl=d; break; booksn.store-; out+; if(n!=-1&&a
7、mp;booksn.store=0) printf("此书已经全部借出.n"); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); /*上面是借书的函数,首先调用找书函数*/(3)借阅图书在查阅图书的模块中search_book()定义了文件bbb用与存储图书数据,然后通过该数据结构进行图书查询int search_book() char a; /* 用以查看结果*/ int n=0,i=0; FILE * fp; if(fp=fopen("b
8、bb","r")=NULL) /* 读方式打开*/ printf("cannot open filen"); while(!feof(fp) /*把文件写入内存,books要初始化 */ fread(&booksi,sizeof(struct BOOK),1, fp); i+; fclose(fp); printf("请输入图书序号:"); scanf("%d",&i); for(n=0;n<100;n+) if(booksn.id=i) printf("书名:%sn&qu
9、ot;,); printf("作者:%sn",booksn.author); printf("存数:%d n",booksn.store); printf("总数:%d n",booksn.total); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); return n; printf("n输入错误或无效图书序号.n"); do printf("结束? y/n&
10、quot;); scanf(" %c",&a); while(a!='y'); return -1; /*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返 回数组下标,如果找不到相应记录则提示错误并返回-1。*/(4)旧图书的注销:在book_del()通过书的书号在文件中进行消除void book_del(void) char a; int n,i; page_title("注销旧书"); if(n=search_book()!=-1) booksn.id=0; for(i=0;i<31;i+) booksn.na
11、mei=NULL; for(i=0;i<21;i+) booksn.authori=NULL; booksn.total=0; booksn.store=0; printf("该书已注销.n"); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); (5)归还图书模块:图书归还模块book_in是通过图书的书号进行的,在进行归还的同时要通过文件指针在进行调整。void book_in(void) char a; int n,s,l; page_tit
12、le("归还图书"); if(n=search_book()!=-1&&booksn.store<booksn.total) printf("借阅者图书证列表:n"); for(l=0;l<10;l+) if (booksn.usrl!=0) printf("%d - %d天",booksn.usrl,booksn.daysl); printf("请输入借书证序号:"); scanf("%d",&s); for(l=0;l<10;l+) if(books
13、n.usrl=s) booksn.usrl=0; booksn.daysl=0; break; booksn.store+; in-; if(n!=-1&&booksn.store=booksn.total) printf("全部入藏.n"); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); (6)统计图书void tongji() char a; printf("借出总数%dn",out ); printf(&qu
14、ot;归还总数%dn",in); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y');4.程序源代码:/* 图书管理系统*/#include <stdio.h>#include <stdlib.h>struct BOOK int id,usr10,total,store,days10; char name31,author21; books100;/*上面是结构体的定义,用于存放书籍及借书的信息。*/int out=0,in=0; /*统计借出
15、和归还*/ void page_title(char *menu_item) printf(">>> 图 书 管 理 系 统 <<<nn- %s nn",menu_item); /*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/int search_book() char a; /* 用以查看结果*/ int n=0,i=0; FILE * fp; if(fp=fopen("bbb","r")=NULL) /* 读方式打开*/ printf("cannot
16、open filen"); while(!feof(fp) /*把文件写入内存,books要初始化 */ fread(&booksi,sizeof(struct BOOK),1, fp); i+; fclose(fp); printf("请输入图书序号:"); scanf("%d",&i); for(n=0;n<100;n+) if(booksn.id=i) printf("书名:%sn",); printf("作者:%sn",booksn.author); p
17、rintf("存数:%d n",booksn.store); printf("总数:%d n",booksn.total); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); return n; printf("n输入错误或无效图书序号.n"); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y');
18、 return -1; /*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返 回数组下标,如果找不到相应记录则提示错误并返回-1。*/void book_out() char a; int n,s,l,d; page_title("借阅图书"); if(n=search_book()!=-1&&booksn.store>0) printf("请输入借书证序号:"); scanf("%d",&s); printf("请输入可借天数:"); scanf("%d"
19、,&d); for(l=0;l<10;l+) if(booksn.usrl=0) booksn.usrl=s; booksn.daysl=d; break; booksn.store-; out+; if(n!=-1&&booksn.store=0) printf("此书已经全部借出.n"); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); /*上面是借书的函数,首先调用找书函数*/void book_in(void) c
20、har a; int n,s,l; page_title("归还图书"); if(n=search_book()!=-1&&booksn.store<booksn.total) printf("借阅者图书证列表:n"); for(l=0;l<10;l+) if (booksn.usrl!=0) printf("%d - %d天n",booksn.usrl,booksn.daysl); printf("请输入借书证序号:"); scanf("%d",&s); f
21、or(l=0;l<10;l+) if(booksn.usrl=s) booksn.usrl=0; booksn.daysl=0; break; booksn.store+; in-; if(n!=-1&&booksn.store=booksn.total) printf("全部入藏.n"); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); void book_add() char a; FILE * fp; int n=0; in
22、t c; if(fp=fopen("bbb","ab+")=NULL) /* 读写方式打开或建立新文件*/ printf("cannot open filen"); return ; page_title("注册新书");do printf("序号:"); scanf("%d",&booksn.id); printf("书名:"); scanf("%s",&); printf("作者:&q
23、uot;); scanf("%s",&booksn.author); printf("数量:"); scanf("%d",&booksn.total); booksn.store=booksn.total; n+; printf("继续注册:1.是 2.否"); scanf("%d",&c);while(c=1); if(fwrite(books,sizeof(struct BOOK),n, fp)!=n) printf(" file write error&q
24、uot;); fclose(fp); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); void book_del(void) char a; int n,i; page_title("注销旧书"); if(n=search_book()!=-1) booksn.id=0; for(i=0;i<31;i+) i=NULL; for(i=0;i<21;i+) booksn.authori=NULL; booksn.tota
25、l=0; booksn.store=0; printf("该书已注销.n"); do printf("结束? y/n"); scanf(" %c",&a); while(a!='y'); void tongji() char a; printf("借出总数%dn",out ); printf("归还总数%dn",in); do printf("结束? y/n"); scanf(" %c",&a); while(a!='
26、;y');void main(void) char c;int i,j;for(i=0;i<100;i+) for(j=0;j<30;j+) j=NULL; for(j=0;j<20;j+) booksi.authorj=NULL;menu: page_title("操作选单"); printf("请用数字键选择操作nn"); printf("1 借阅图书n2 归还图书nn"); printf("3 注册新书n4 注销旧书nn"); printf("5 统计n"); printf("6 图书查询n");printf("n0 退出n"); scanf("%c&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时工招募:2024学校勤杂工劳动协议
- 2025年数据中心场承包运营管理协议4篇
- 专项龙门吊租赁协议格式范本2024版B版
- 2025年度健身中心场地租赁及私人教练服务合同4篇
- 二零二四商铺租赁合同(含租赁期间租赁物处置及变现条款)3篇
- 2025不锈钢精密铸造件加工与销售合作协议2篇
- 2025年度文化衍生品研发、生产及销售合作协议4篇
- 二零二五年度餐饮业人力资源外包合同6篇
- 2024药店负责人任期药店经营数据统计与分析聘用合同3篇
- 一次性付款房地产转让合同(2024年版)
- NGS二代测序培训
- 《材料合成与制备技术》课程教学大纲(材料化学专业)
- 小红书食用农产品承诺书示例
- 钉钉OA办公系统操作流程培训
- 新生儿科年度护理质控总结
- GB/T 15934-2024电器附件电线组件和互连电线组件
- 《工贸企业有限空间作业安全规定》知识培训
- 高层次人才座谈会发言稿
- 垃圾清运公司管理制度(人员、车辆、质量监督、会计管理制度)
- 《建筑工程设计文件编制深度规定》(2022年版)
- 营销人员薪酬考核方案
评论
0/150
提交评论