




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 HUNAN UNIVERSITYC语言程序训练报 告设计目的图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、图书库存、图书借出数目等.图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)读者注册功能3)读者登录功能4)读者借书还书功能5)查询读者借阅记录6)查询在管图书信息功能7)修改密码功能8)管理员登录功能9)增加、修改、删除图书功能10)查看图书信息功能设计思路根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单
2、实现功能,在运行时达到所要求的目的;管理员和读者登录界面与各自功能应有不同的实现。总体设计图书馆管理系统读者注册、登陆与密码修改修改图书信息删除图书信息管理员登陆查找图书信息 浏览图书信息详细设计1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用显示一系列功能选项输入n,n为1,2或3根据n的值调用各功能模块函数结束开始n源代码为/rkou.c 程序的入口 #include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include"head.h&q
3、uot;#include"fuc.h"#include"picture.h"#include"jiangzhuo1.h"#include"output.h" main() int i=setup(); switch (i) case 0: while(n<50) conects(n); default: eros(i); system("pause");2.程序中全局变量声明定义,以与所有函数声明源代码为struct book /图书结构体声明 char name50,classic10,
4、writer20; /书名,类别,作者 int jn; /借出数量 int zn; /在馆数量 int bh; /图书编号 ;struct information /管理员和读者结构体声明 char name10,no12,key10; /,账号,密码 ;struct show /图书借阅记录的结构体声明 char name110,name250,writer20,no12; /书名,读者,书的作者,读者账号 int bh,o; /图书编号,借阅状况(未还,已还) ; /以下为用到的全局变量 struct book bk;struct information aa,rr; struct inf
5、ormation stu100;struct book bb100;struct information ad100;struct show ss100; int i,j,k,s;int n=0;int x;FILE *fp;/以下函数主要功能:方便窗口与用户之间交换信息 int regst(); void password(char *a,int b,int j); /登陆时的输入函数 void examine(int *a,int b); /保证键入的数据是数字void changepaw(int a,int b); /修改密码用到的提示函数void inputs0(); /输出图书类别以
6、供用户选择void inputs1(int a,int b,int c,int d,int e); /方便用户输入图书各项信息(如书名,编号) void inputs2(int a,int b,int c); /方便用户输入管理员的信息(如账号) void inputs3(int a,int b,int c); /方便用户输入读者的信息(如账号) void eros(int i) ; /错误显示函数,操作一旦出错,则会出现相应的错误信息 void conects(int j); /连接函数,选择界面 /一下函数主要用于改变文件的容并保存 int setup() ; /数据初始化函数int xz
7、c(char no12,char key110,char key210,char name10); /读者注册函数int exam(char no10,char key10,int n); /密码账号检验函数 int mp(char no12,char key110,char key210,char key310,int n); /密码修改函数 void paixu(); /对图书按照编号从小到大的顺序进行排列 int sc(int bh); /管理员删除图书信息函数 int zj(struct book bb); /管理员增加图书信息函数 int xg(struct book bb); /管
8、理员修改图书信息函数 int js(int bh,char no12); /借书函数 int hs(int bh,char no12); /还书函数 int bh1(int bh); /判断该编号的图书信息是否存在函数 void bh2(int bh); /按照图书编号显示图书信息函数 int sm1(char name50); /判断是否存在该名字的图书信息函数void sm2(char name50); /按照图书名字显示图书信息函数 int zz1(char writer20); /判断是否存在该作者的图书信息函数 void zz2(char writer20); /按照图书作者显示图书
9、信息函数 void lb(char classic10); /按类别显示图书信息 int rck1(int bh); /判断该编号的图书的借书记录是否存在 void rck2(int bh); /按编号显示图书借书情况int gck21(char no12); /判断该账号读者的借书记录是否存在 void gck22(char no12); /按读者显示借书情况2 void gck12(); /显示全部借书情况 void gck23(); /管理员查看所有书的信息void copy(int bh); / 按编图书编号将图书信息暂时保存在另外一个结构体里面 void copy2(char no1
10、2); /按管理员账号将管理员信息暂时保存在另外一个结构体里面void copy3(char no12); /按读者账号将读者信息暂时保存在另外一个结构体里面/pic() 函数:每个函数表示一个界面,conects函数将它们连接起来void pic0();void pic1();void pic2();void pic3();void pic4();void pic5();void pic6();void pic7();void pic8();void pic9();void pic10();void pic11();void pic12();void pic13();void pic14()
11、;void pic15();void pic16();void pic17();void pic18();void pic19();void pic20();void pic21();void pic22();void pic23(); void pic24();void pic25();void pic26();void pic27();void pic29();void pic30();void pic31();void pic32();void pic33();void pic34();void pic35();void pic36();void pic37();void pic38()
12、;void pic39();void pic40();void pic41();void pic42();void pic43();void pic44(); void pic45();void pic46();void pic47();void picc(); 3. 用户输入以与界面反馈用到的功能函数 源代码为int regst() char num12,paw110,paw210,name10; int i; printf("请输入账号n(11字符以,不能含有中文字符):n"); password(num,0,11); printf("输入您的密码n(9字符以
13、,不能含有中文字符):n"); password(paw1,1,9); printf("请再次输入密码:n"); password(paw2,1,9); printf("输入您的:n"); gets(name); system("cls"); i=xzc(num,paw1,paw2,name); return i; void password(char *a,int b,int j) char c; int i=0; while(c=getch()!='r') if(c=8) printf("b b
14、"); if(i>0) i-; else if(i<j) if(b) printf("*"); else printf("%c",c); ai=c; i+; if(i=j) printf("a"); ai='0' printf("n"); void examine(int *a,int b) while(!scanf("%d",a) while(getchar()!='n'); printf("请输入数字!n"); rew
15、ind(stdin); if(b) system("cls");void changepaw(int a,int b) int i; char c110,c210,c310; printf("请输入原密码n"); password(c1,1,9); printf("请输入新密码n"); password(c2,1,9); printf("请再次输入新密码n"); password(c3,1,9); system("cls"); if(b) i=mp(aa.no,c1,c2,c3,b); if(i
16、) eros(i);n=27; else n=26; else i=mp(rr.no,c1,c2,c3,b); if(i) eros(i);n=44; else n=43; void inputs0() int i=1; while(i=1) printf("1.A类n2.B类n3.C类n4.D类n5.E类n6.F类n"); examine(&i,1); switch(i) case 1: strcpy(bk.classic,"A类");i=0;break; case 2: strcpy(bk.classic,"B类");i=
17、0;break; case 3: strcpy(bk.classic,"C类");i=0;break; case 4: strcpy(bk.classic,"D类");i=0;break; case 5: strcpy(bk.classic,"E类");i=0;break; case 6: strcpy(bk.classic,"F类");i=0;break; default: i=1; void inputs1(int a,int b,int c,int d,int e) int i; switch(a) case
18、 1: printf("请输入图书编号:n");examine(&bk.bh,1); default: ; switch(b) case 1: printf("请输入图书名称:n");gets(); default: ; switch(c) case 1: printf("请输入图书的 n");gets(bk.writer); default: ; switch(d) case 1: printf("请输入该图书的库存:n");examine(&bk.zn,1); default: ;
19、 system("cls"); switch(e) case 1: printf("请选择图书类别:n");inputs0(); default: ; void inputs2(int a,int b,int c) switch(a) case 1: printf("请输入账号:n");password(aa.no,0,11); default: ; switch(b) case 1: printf("请输入密码:n"); password(aa.key,1,9); default: ; switch(c) cas
20、e 1: printf("请输入:n");gets(); default: ; system("cls"); void inputs3(int a,int b,int c) switch(a) case 1: printf("请输入账号:n");password(rr.no,0,11); default: ; switch(b) case 1: printf("请输入密码:n"); password(rr.key,1,9); default: ; switch(c) case 1: printf(&q
21、uot;请输入:n");gets(); default: ; system("cls");void eros(int i) /错误函数 switch (i) case -1: printf("error1 !初始化失败nn");break; case -2: printf("error2 !账号不存在nn");break; case -3: printf("error3 !账号不存在nn");break; case -4: printf("error4 !密码错误nn")
22、;break; case -5: printf("error5 !输入的密码不一致nn");break; case -6: printf("error6 !编号不存在nn");break; case -7: printf("error7 !书名不能为空nn");break; case -8: printf("error8 !作者名字不能为空nn");break; case -9: printf("error9 !无此图书编号的记录nn");break; case -10: printf(&quo
23、t;error10 !无此账号的记录nn");break; case -11: printf("error11 !原始密碼輸入錯誤nn");break; case -12: printf("error12 !您已经归还此书nn");break; case -13: printf("error13 !您所增加的图书编号已存在nn");break; case -14: printf("error14 !搜索不到此书的相关信息nn");break; case -15: printf("error15
24、!搜索不到该作者的信息nn");break; case -16: printf("error16 !打不开文件,保存失败nn");break; case -17: printf("error17 !该图书信息已存在nn");break; case -18: printf("error18 !您没有借过这本书nn");break; case -19: printf("error19 !您已经借阅了这本书,不能再借nn");break; case -20: printf("error20 !抱歉,图
25、书已经借完了nn");break; case -21: printf("error21 !账号已存在nn") ; break; case -22: printf("error22 !还有图书未还,不能删除该条信息nn");break; default : ; void conects(int j) switch(j) case 0: pic0();break; case 1: pic1();break; case 2: pic2();break; case 3: pic3();break; case 4: pic4();break; case
26、5: pic5();break; case 6: pic6();break; case 7: pic7();break; case 8: pic8();break; case 9: pic9();break; case 10: pic10();break; case 11: pic11();break; case 12: pic12();break; case 13: pic13();break; case 14: pic14();break; case 15: pic15();break; case 16: pic16();break; case 17: pic17();break; cas
27、e 18: pic18();break; case 19: pic19();break; case 20: pic20();break; case 21: pic21();break; case 22: pic22();break; case 23: pic23();break; case 24: pic24();break; case 25: pic25();break; case 26: pic26();break; case 27: pic27();break; case 29: pic29();break; case 30: pic30();break; case 31: pic31(
28、);break; case 32: pic32();break; case 33: pic33();break; case 34: pic34();break; case 35: pic35();break; case 36: pic36();break; case 37: pic37();break; case 38: pic38();break; case 39: pic39();break; case 40: pic40();break; case 41: pic41();break; case 42: pic42();break; case 43: pic43();break; cas
29、e 44: pic44();break; case 45: pic45();break; case 46: pic46();break; case 47: pic47();break; default: ; 4.文件操作各种函数源代码为/jiangzhuo1.h文件操作各种函数int setup() /数据初始化函数 FILE *fp; fp=fopen("reader.txt","r"); /对文档以只读的方式进行操作 if(fp=NULL) return -1; /当文件打不开时返回-1 elsei=0; while(!feof(fp) fscanf
30、(fp,"%s %s %s",,stui.no,stui.key); /将文档里面的数据格式化读取到结构体数组里面 i+;i=i-1; fclose(fp); fp=fopen("ad.txt","r"); /对文档以只读的方式进行操作 if(fp=NULL) return -1; /当文件打不开时返回-1 else j=0; while(!feof(fp) fscanf(fp,"%s %s %s",,adj.no,adj.key); /将文档里面的数据格式化读取到结构体数组里面
31、j+;j=j-1; fclose(fp); fp=fopen("book.txt","r"); /对文档以只读的方式进行操作 if(fp=NULL) return -1; /当文件打不开时返回-1 elsek=0; while(!feof(fp) fscanf(fp,"%d %s %s %s %d %d ",&bbk.bh,,bbk.classic,bbk.writer,&bbk.zn,&bbk.jn); /将文档里面的数据格式化读取到结构体数组里面 k+;k=k-1; fclose(fp);
32、fp=fopen("show.txt","r"); /对文档以只读的方式进行操作 if(fp=NULL) return -1; /当文件打不开时返回-1 elses=0; while(!feof(fp) fscanf(fp," %s %s %d %s %s %d ",1,sss.no,&sss.bh,2,sss.writer,&sss.o); /将文档里面的数据格式化读取到结构体数组里面s+;s=s-1; fclose(fp);return 0; /当操作全部正确时返回0 int xzc
33、(char no12,char key110,char key210,char name10) /读者注册函数 int x=0; for(x=0;x<=i;x+) if(!strcmp(no,stux.no) /判断读者输入的账号与结构体里面的账号是否一样 return -21; break; if(x=i && strcmp(no,stux.no)/判断读者输入的账号与结构体里面的账号是否一样 if(!strcmp(key1,key2) /判断读者两次输入的密码是否一致 i=i+1; strcpy(,name); strcpy(stui.no,no);
34、 strcpy(stui.key,key1); fp=fopen("reader.txt","a"); /对文件以写的方式将注册的信息保存到文件里面 if(fp=NULL) return -16; else fprintf(fp,"%stt%stt%sn",,stui.no,stui.key); fclose(fp); return 0; else return -5; int exam(char no10,char key10,int n) /密码账号检验函数 int x; if(n=0) /对读者的 密码和账号信
35、息进行检验 for(x=0;x<=i;x+) if(!strcmp(no,stux.no) /判断该账号是否存在 if(!strcmp(key,stux.key) /当账号存在时判断与之相应的密码是否一样 return 0; break; else return -4;break; if(x=i && strcmp(no,stux.no) return -3; if(n=1) /对管理员的密码账号信息进行检验 for(x=0;x<=i;x+) if(!strcmp(no,adx.no) /判断该账号是否存在 if(!strcmp(key,adx.key) /判断与之
36、相应的密码是否存在 return 0; break; else return -4;break; if(x=j && strcmp(no,adx.no) return -3; int zj(struct book b) /管理员增加图书信息函数 int x; for(x=0;x<=k;x+) if(bbx.bh=b.bh) /判断所增加的图书编号是否已存在 return -13; break; if(!strcmp(,)&&!strcmp(b.writer,bbx.writer) /判断所增加的图书是否存在 return -17
37、; break; if(x=k) if(strlen()=0) /判断文档的第一行是否为空 k=k; else k=k+1; bbk.bh=b.bh; /将所增加的图书信息添加到结构体里面 strcpy(,); strcpy(bbk.classic,b.classic); strcpy(bbk.writer,b.writer); bbk.zn=b.zn; bbk.jn=b.jn; fp=fopen("book.txt","a"); /将增加的图书信息追加到文件里面 if(fp=NULL) return -16;
38、 else fprintf(fp,"%dt%-30st%-30st%-10st%dt%dn",bbk.bh,,bbk.classic,bbk.writer,bbk.zn,bbk.jn); fclose(fp); return 0; int sc(int bh) /管理员删除图书信息函数 int x; for(x=0;x<=k;x+) if(bbx.bh=bh) /判断所删除图书的编号是否存在 if(bbx.jn!=0) return -22; for(x=x;x<=k-1;x+) bbx=bbx+1; /删除图书信息后将该图书信息后面的图书信息依次前移 k-; fp=fopen(&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全面复习策略计算机二级Python试题及答案
- 2025年校办企业财务审计办法实施细则
- 2025年考研数学(二)高等数学综合应用题卷:线性代数在计算机科学中的应用
- 广东省新会一中12-13学年高一上学期期中考试(数学)
- 截瘫的康复治疗
- 2025年春北师版数学九年级下册 第3章 6 直线和圆的位置关系 第1课时 直线和圆的位置关系及切线的性质
- 2025年征信考试题库:征信信用评分模型在征信查询中的应用试题
- 备战2021年中考数学全真模拟卷11解析
- 老年晕厥的护理
- 广东省深圳市龙岗区联考2024-2025学年二年级上学期英语期末试题
- 铝合金技术知识培训课件
- 2025年数字广西集团有限公司招聘笔试参考题库含答案解析
- 羽毛球 校本课程计划
- 跨学科实践活动7 垃圾的分类与回收利用(说课稿)九年级化学下册同步高效课堂(人教版2024)
- 2025中煤矿山建设集团(国独资)招聘200人高频重点提升(共500题)附带答案详解
- 旧楼加装电梯施工方案
- 快手信息流广告优化师(初级)认证考试题库(附答案)
- 医药营销模式创新-洞察分析
- 非结核分枝杆菌病
- 融汇画方网络准入设备技术白皮书
- 有限空间作业专项施工组织方案
评论
0/150
提交评论