




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、图书管理系统1 需求分析1.1 题目要求图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,试设计一图书管理系统,使之能提供以下功能。( 1) 新进图书基本信息的输入( 2) 图书基本信息的查询( 3) 对撤消图书信息的删除( 4) 办理借书手续( 5) 办理还书手续1.2 需求分析作为学生对图书管理系统的要求有:1. 能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。2. 能够方便地借阅图书、续借图书、归还图书。3. 能够查询自己的基本资料、借阅图书情况。4. 能够熟悉图书管理系统的使用。作为图书管理员,他们对图书管理系统的要求有:1. 能方便的对图
2、书进行录入登记,注销陈旧的书籍。2. 能够方便地对新生进行登记, 或注销已经毕业的学生信息 (基本信息, 借阅信息)3. 能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借情况等信息,以便各学院能够随时获知本院学生的一些借书信息。建立图书管理信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。存在状态设为整型,可用不同数字代表借还状态。借书和还书手续要注意修改结构体的成员变量存在状态的值。2 . 总体设计图书管理系统设计图书信息输入图书信息查询图书信息删除办理借书手续办理还书手续其中图2 1各功能模块用菜单方式选择。printf("
3、;printf("printf("printf("printf("*借书*还书*存入新书*删除旧书*图书查询*n");n");n");n");n");图213 .详细设计3.1 主函数:主函数设计得比较简洁,只提供输入,处理和输出部分的函数调用。流程图void main(void)menu: page_title('菜单");printf("* 选择服务 *:nn");printf("");switch(getch()case '1'
4、; : book_out();break;case '2' : book_in();break;case '3' : book_add();break;case '4' : book_del();break;case'5':search_book1();break;case '0' : exit(0);goto menu;3.2 各功能模块设计(1)图书信息查询:输入要查找的图书号,再从数组中查找是否有和此图书号相匹配的图书号,若有,显示其信息并返回数组下标,若没有相应记录则提示错误并返回-1流程图图31程序voi
5、d search_book1(void)int n,i;page_title("图书查询");printf("请输入图书编号:");scanf("%d",&i);for(n=0;n<100;n+)if(booksn.id=i)printf("| 书名:sn",);printf("| 作者:sn",booksn.author);printf("| 价格:-7.2f 元n",booksn.price);printf("| 现存数量:d
6、n ",booksn.store);printf("| 图书总量:%dn",booksn.total);break; else printf("n没有这个编号! n"); break;return_confirm();return_confirm();(2)借书函数:首先调用找书函数,判断所借图书是否有库存,若有则输入借书人的图书证号以及想借用的天数,天数在 10天以内的存储借书人姓名及天数,同时库存数量 减少1,如果库存数量为0则显示此书已全部借出。流程图图 3 2 程序 void book_out()int n,s,l,d;page_tit
7、le("借书");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;3 3booksn.store-;if(n!=-1&&booksn
8、.store=0) printf("此书已借完.n");return_confirm();(3)还书函数:类似借书函数,首先调用找书函数。 程序 void book_in(void)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 - %dn",book
9、sn.usrl,booksn.daysl);printf(" 请输入图书馆卡号:");scanf("%d",&s);for(l=0;l<10;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();(4)注册新书:流程图:图34程序void book_add(void)int n
10、;page_title("存入新书");for(n=0;n<100;n+)if(booksn.id=0) break;printf("新书编号:");scanf("%d”,&booksn.id);printf("书名:");scanf("%s”,&);printf("作者:");scanf("%s”,&booksn.author);printf("价格:");scanf("%f',&boo
11、ksn.price);printf("数量:");scanf("%d”,&booksn.total);booksn.store=booksn.total;return_confirm();(5)删除旧图书:流程图:图35程序:void book_del(void)int n;page_title("删除旧书");if(n=search_book()!=-1) booksn.id=0;printf("书已删除.n");return_confirm();( 6)公共函数存放书籍及借书信息函数struct BOOKint
12、id,usr10,total,store,days10;float price;char name31,author21;books100;打印页眉函数,同时可通过参数显示当前状态void page_title(char *menu_item)system("cls");printf("I*主菜单*nnnn%snn",menu_item);返回前请求确认的函数void return_confirm(void)printf("n 键入任意键返回 :n");getch();在数组中产寻图书号匹配记录,显示其信息并返回数组下标,找不到则提示
13、错误int search_book(void)int n,i;printf(" 请输入图书编号:");scanf("%d",&i);for(n=0;n<100;n+)if(booksn.id=i)printf("|书名:%sn",);printf("|作者:%sn",booksn.author);printf("| 价格:-7.2f 元n",booksn.price);printf("| 现存数量:%dn ",booksn.store);p
14、rintf("| 图书总量:%dn",booksn.total);return n;printf("n 此编号不存在!. n");return -1;4结论与心得体会通过此次 C 语言课程设计实习,我收获颇多。这次实习是真正意义上的将所学知识运用到实际中。实践才是检验真理的唯一标准! 此次实习中,我成功做出了这道题:提高了我们的编程能力。在编程过程中还是应该特别注意充分理解题目要求和各循环语句的充分调用和理解。自己也已经具备了一定的编程能力。然而,这只是一个小小的开端,以后的路还很长,还需要 用恒心继续坚持下去!短的三周课程设计结束了,但是这段时间里,我
15、又学到了更多C知识,如:对象数组,string 类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。 ,也看到了团队精神 和互帮互助的重要性。这一点会让我终生受益。5.调试与测试5.1调试报告编译是alt+f9;然后连接是f9;运行就用ctrl+f9;看运行结果就是:alt+f5.然后在调试时应注意程序等错误5.2测试结果(1)主菜单函数图5 1(2)输入模块在主界面按键输入3,并输入提示所出现的各种信息,看到下图函“E:DEbug匚 pp 1 .ehe”键入任区键返回二存入新书, Ini x100代明身暴.9X np 5 0 .编,.亘寸工工 梯心普t:銮新书图52键入任意按键
16、,返回主菜单(3)查找模块在主界面按键输入5,看到下图瓯"E:DebugCpp 1 .exe"图53键入刚刚输入的书号码001,按回车,则看到下图, Ini x固"E:Dcbug匚 pp 1 .ehe”XXXKXXXKXXXKXXXKXMXKXMXKXMXKXMXKK 主单图书查询请输入图书编号4电 :书名二小时代 !:作者鄢装明_-价能120元 !;现存薮量=1“图书总量;键入任意键返回二图54键入任意键返回主菜单;重新键入5,并键入未存书号002,按回车,则看到下图图55键入任意键返回主菜单借书模块在主界面键入1,并输入所借书的编号001,按回车,则看到下图图
17、56根据提示信息键入所需内容,看到下图瓯"E:DebugCpp 1 .exe"|n| x图57键入任意键返回主菜单再次键入1键,输入未存储的书号002,看到下图-1 X网“E:Debug匚口口 l.eMed'图58键入任意键返回主菜单(5)还书模块在主界面键入2,并输入所还书的书号001,按回车,看到下图图59根据提示键入所需信息,按回车,看到下图图 510键入任意键返回主菜单再次键入2,进入还书界面,输入错误书号,既所输入的书号不存在,则看到下图图 511键入任意键返回主菜单(6)删除旧书模块在主界面键入4,并输入错误的欲删除书号,则看到下图_ n| x网 FPe
18、bu式匚 pp Lehe”图 512键入任意键返回主菜单 再次键入4,进入删除界面,输入欲删除书号001,则看到下图键入任思键返回二删除旧书苴XXN苴XXN苴XXN苴XXN苴苴XN苴苴XK苴苴XK苴苴KM苴XKM苴XKN苴XKN苴XKN苴XKN苴XXN苴XXN苴XXN回"E:DebugCpp 1 .ehe"图 513现喑已输 请飒 元y:代明0 0 加暴.910:1 燧小郭15曰X 图等着 人书霄存师键入任意键返回主菜单键入5,进入查找模块,输入刚刚删除的001号书,看到下图巨"E:DebugCppl.eHe" |n| x图书查询/输入图书编号:眄1没有
19、这个编号?键入任意键返回二图 514说明删除成功.6.附录源程序:#define N 100#include<stdio.h>#include<string.h>#include<stdlib.h>struct bookchar num10;char name50;char writer20;char flnum10;char pressname50;char presstime20;char price10;booksN;void printfhead()/* 输入表头 */printf("num name writer flnum pressn
20、ame presstime pricen");void enter()/* 录入及保存信息*/int i,n;void menu();void input(int k);void save(int k);printf("How many books(0-%d)?:",N-1);scanf("%d",&n);printf("n Enter data nownn");for(i=0;i<n;i+)printf("n Input %dth book record.n",i+1);input(i);
21、if(i!=0)save(n);printf(" 按任意键返回菜单n");getchar();menu(); void input(int i)/* 输入单本书信息 */printfhead();scanf("%s%s%s%s%s%s%s",booksi.num,,booksi.writer,booksi.flnum,booksi.pressname,booksi.presstime,booksi.price);void save(int n)/*信息保存文件*/FILE *fp;int i;fp=fopen("book.
22、txt","wb");for(i=0;i<n;i+)if(fwrite(&booksi,sizeof(struct book),1,fp)!=1)printf("file write erron");fclose(fp);void browse()/* 浏览图书信息*/int k;void menu();int infile();void printf_books(int n);k=infile();printf_books(k);printf("按任意键返回菜单n");getchar();menu();voi
23、d printf_one(int i)/* 输出单本书信息*/printf("%2s %2s%2s%2s%4s%7s %7s",booksi.num,,booksi.writer,booksi.flnum,booksi.pressname,booksi.presstime,booksi.price);printf("nn");void printf_books(int n)/* 输出多本书信息*/int j;printfhead();for(j=0;j<n;j+) printf_one(j);int infile()/* 从文
24、件读入信息并返回书本数*/FILE *fp;int i;if(fp=fopen("book.txt","rb")=NULL)printf("n 文件无法打开n");return 0;for(i=0;!feof(fp);i+)fread(&booksi,sizeof(struct book),1,fp);fclose(fp);return(i+1); void search。/*查找模块 */struct book b;int n,i,k=0;int infile();void menu();void printf_one(in
25、t i);n=infile();printf(" 输入书名 : ");scanf("%s",&);for(i=0;i<n;i+)if(strcmp(,)=0)printf_one(i);k=1;if(k=0)printf("n 无该文件 !n");menu();void modify(int m,int n)/* 执行修改修改操作*/int c,w1;void menu();doputs("nmodify by =>nn(1).num (2).name (3)
26、.writer (4).flnumn(5).pressname(6).presstime 7).price 8).modify all");printf("选择彳t号?: bb");scanf("%d",&c);if(c>8|c<1)puts("nChoice error! Please again!");getchar();while(c>8|c<1);doswitch(c)case 1:printf("num: ");scanf("%s",books
27、m.num);break;case 2:printf("name: ");scanf("%s",);break;case 3:printf("writer: ");scanf("%s",booksm.writer);break;case 4:printf("flnum: ");scanf("%s",booksm.flnum);break;case 5:printf("pressname: ");scanf("%s"
28、,booksm.pressname);break;case 6:printf("presstime: ");scanf("%s",booksm.presstime);break;case 7:printf("price: ");scanf("%s",booksm.price);break;case 8:printf("Enter a new information:n");input(m);printfhead();printf_one(m);/* 输出修改后的信息 */printf("
29、;n 确定要修改吗 ?nnt(1).Sure (2).no and remodify (3).Back without save in this time bb");scanf("%d",&w1);while(w1=2);if(w1=1)save(n);else menu();void del(int m,int n)/* 执行删除操作*/ FILE *fp;int k,w;printf("Are you sure delete it?nnt(1).Suret(2).Give up: bb");scanf("%d",&w);if(w=1)if(fp=fopen("book.txt","wb")=NULL)printf("n 文件不能打开n");for(k=0;k<n;k+)if(k!=m)if(fwrite(&booksk,sizeof(struct book),1,fp)!=1)printf(" 文件写完 n");fclose(fp);else menu();void det_mod()/*找出需处理的数并处理*/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 3606-2025家用沼气灶
- 品牌合作开发与运营合同范本
- 度设备维修合同安全协议
- 幼儿园保安劳动合同合同
- 实习生劳动合同范文参考
- 买卖合同(范本)
- 奶牛租赁合同模板
- 13 人物描写一组 《两茎灯草》教学设计-2023-2024学年语文五年级下册统编版
- 新能源汽车核心配件采购合同
- 客户服务人员合同协议书
- 2025年业务员工作总结及工作计划模版(3篇)
- 2024年连云港市赣榆区区属国企对外招聘笔试真题
- 海南省海口市2024-2025学年八年级上学期期末考试数学试题(含答案)
- 2025年注射用赖氮匹林项目可行性研究报告
- 2025江西吉安市新庐陵投资发展限公司招聘11人高频重点提升(共500题)附带答案详解
- 2025年山东出版集团招聘笔试参考题库含答案解析
- 水泥基自流平地面技术交底
- T-CSAC 004-2024 软件供应链安全要求测评方法
- 2024-2025学年人教版七年级数学上册期末模拟测试卷(含简单答案)
- 【MOOC】理解马克思-南京大学 中国大学慕课MOOC答案
- 《商务沟通-策略、方法与案例》课件 第十章 基本商务沟通
评论
0/150
提交评论