图书信息管理系统 C语言程序设计
- 格式:doc
- 大小:975.00 KB
- 文档页数:20
HUNANUNIVERSITYC语言程序训练1)2)3)4)5)6)7)8)9)10)在来实现:【总体设计】源代码为//rkou.c程序的入口#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include"head.h"#include"fuc.h"#include"picture.h"#include"jiangzhuo1.h"#include"output.h"main(){inti=setup();switch(i){case0:while(n<50){conects(n);}default:eros(i);}}2.{intzn;//intbh;//};{};{intbh,o;//};//structbookbb[100];structinformationad[100];structshowss[100];inti,j,k,s;intn=0;intx;FILE*fp;//以下函数主要功能:方便窗口与用户之间交换信息intregst();voidpassword(char*a,intb,intj);//登陆时的输入函数voidexamine(int*a,intb); //保证键入的数据是数字voidchangepaw(inta,intb); //修改密码用到的提示函数voidinputs0(); //输出图书类别以供用户选择voidinputs1(inta,intb,intc,intd,inte); //方便用户输入图书各项信息(如书名,编号) voidinputs2(inta,intb,intc); //方便用户输入管理员的信息(如账号姓名) voidinputs3(inta,intb,intc); //方便用户输入读者的信息(如账号姓名) voideros(inti);//错误显示函数,操作一旦出错,则会出现相应的错误信息voidconects(intj); //连接函数,选择界面//一下函数主要用于改变文件的内容并保存intsetup();//数据初始化函数intxzc(charno[12],charkey1[10],charkey2[10],charname[10]);//读者注册函数//pic()函数voidpic0();voidpic1();voidpic2();voidpic3();voidpic4();voidpic5();voidpic6();voidpic7();voidpic8();voidpic9();voidpic10();voidpic11();voidpic12();voidpic13();voidpic14();voidpic15();voidpic16();voidpic17();voidpic18();voidpic19();voidpic20();voidpic47();voidpicc();3.用户输入以及界面反馈用到的功能函数源代码为intregst(){charnum[12],paw1[10],paw2[10],name[10];inti;printf("请输入账号\n(11字符以内,不能含有中文字符):\n");password(num,0,11);printf("输入您的密码\n(9字符以内,不能含有中文字符):\n"); password(paw1,1,9);printf("请再次输入密码:\n");password(paw2,1,9);printf("输入您的姓名:\n");gets(name);system("cls");i=xzc(num,paw1,paw2,name);returni;}{charc;inti=0;{if(c==8)if(i>0)i--;}elseif(i<j)a[i]=c;i++;}if(i==j)}}a[i]='\0';}printf("请输入数字!!\n");}rewind(stdin);if(b)system("cls");}voidchangepaw(inta,intb){inti;charc1[10],c2[10],c3[10];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){eros(i);n=27;}elsen=26;}elseif(i)}elsen=43;}}{inti=1;switch(i)}}}voidinputs1(inta,intb,intc,intd,inte){inti;switch(a){case1:printf("请输入图书编号:\n");examine(&bk.bh,1); default:;}switch(b){case1:printf("请输入图书名称:\n");gets(); default:;}switch(c){case1:printf("请输入图书的作者:\n");gets(bk.writer); default:;}switch(d){case1:printf("请输入该图书的库存:\n");examine(&bk.zn,1); default:;}system("cls");switch(e){case1:printf("请选择图书类别:\n");inputs0();default:;}}{switch(a)default:;}switch(b)default:;}switch(c)default:;}}{switch(a)default:;}switch(b)default:;}switch(c){case1:printf("请输入姓名:\n");gets();default:;}system("cls");}voideros(inti)//错误函数{switch(i){case-1:printf("error1!初始化失败\n\n");break;case-2:printf("error2!账号不存在\n\n");break; case-3:printf("error3!账号不存在\n\n");break;case-4:printf("error4!密码错误\n\n");break;case-5:printf("error5!输入的密码不一致\n\n");break; case-6:printf("error6!编号不存在\n\n");break;case-7:printf("error7!书名不能为空\n\n");break;case-8:printf("error8!作者名字不能为空\n\n");break; case-9:printf("error9!无此图书编号的记录\n\n");break; case-10:printf("error10!无此账号的记录\n\n");break; case-11:printf("error11!原始密码输入错误\n\n");break;default:;}}{switch(j)case9:pic9();break;case10:pic10();break;case11:pic11();break;case12:pic12();break;case13:pic13();break;case14:pic14();break;case15:pic15();break;case16:pic16();break;case17:pic17();break;case18:pic18();break;case19:pic19();break;case20:pic20();break;case21:pic21();break;case22:pic22();break;case23:pic23();break;case24:pic24();break;case25:pic25();break;case26:pic26();break;case27:pic27();break;case29:pic29();break;case30:pic30();break;default:;}}4.//intsetup()//数据初始化函数{FILE*fp;fp=fopen("reader.txt","r");//对文档以只读的方式进行操作if(fp==NULL){return-1;//当文件打不开时返回-1}else{i=0;while(!feof(fp)){fscanf(fp,"%s%s%s",stu[i].name,stu[i].no,stu[i].key);//将文档里面的数据格式化读取到结构体数组里面i++;}i=i-1;}fclose(fp);fp=fopen("ad.txt","r");//对文档以只读的方式进行操作if(fp==NULL){return-1;//}else{j=0;{j++;}j=j-1;}fclose(fp);{return-1;//}else{k=0;{将文档里面的数据格式化读取到结构体数组里面k++;}k=k-1;}fclose(fp);fp=fopen("show.txt","r");//对文档以只读的方式进行操作if(fp==NULL){{s=0;while(!feof(fp)){fscanf(fp,"%s%s%d%s%s%d",ss[s].name1,ss[s].no,&ss[s].bh,ss[s].name2,ss[s].writer,&ss[s].o);//将文档里面的数据格式化读取到结构体数组里面s++;}s=s-1;}fclose(fp);return0;//}{intx=0;{{return-21;break;}{{i=i+1;return-16;else{fprintf(fp,"%s\t\t%s\t\t%s\n",stu[i].name,stu[i].no,stu[i].key);}fclose(fp);return0;}else{return-5;}intexam(charno[10],charkey[10],intn)//密码账号检验函数{intx;if(n==0)//对读者的密码和账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no))//判断该账号是否存在{}{return-3;}}}if(n==1)//{{return0;break;}else{return-4;break;}}return-3;}}}}intzj(structbookb)//管理员增加图书信息函数{intx;for(x=0;x<=k;x++){if(bb[x].bh==b.bh)//判断所增加的图书编号是否已存在{return-13;break;}break;}if(x==k)k=k;elsek=k+1;return-16;else{}fclose(fp);return0;}}}intsc(intbh)//管理员删除图书信息函数{intx;for(x=0;x<=k;x++){if(bb[x].jn!=0)return-22;for(x=x;x<=k-1;x++){bb[x]=bb[x+1];//删除图书信息后将该图书信息后面的图书信息依次前移}k--;fp=fopen("book.txt","w+");//将删除后的所有图书信息重新写入文档if(fp==NULL)return-16;else{{}}fclose(fp);return0;break;}}}{intx;if(n==0)//{{{{fp=fopen("reader.txt","w+");//将修改后的信息保存在文件里面if(fp==NULL)return-16;else{for(x=0;x<=i;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",stu[x].name,stu[x].no,stu[x].key);}fclose(fp);else{return-5;}}elsereturn-11;}}}if(n==1)//{{{{{return-16;else{}fclose(fp);return0;}else{return-5;}}elsereturn-11;}}}}intxg(structbookb)//管理员修改图书信息函数if(strlen()==0)//判断所输入的要修改的图书名字是否为空{return-7;}else{if(strlen(b.writer)==0)//判断所输入的要修改的图书作者是否为空{return-8;}else{{{return-16;else{{}}fclose(fp);return0;}}}}}voidcopy(intbh)//按编图书编号将图书信息暂时保存在另外一个结构体里面{intx;for(x=0;x<=k;x++){if(bb[x].bh==bh){strcpy(,bb[x].name);strcpy(bk.writer,bb[x].writer);bk.zn=bb[x].zn;bk.jn=bb[x].jn;bk.bh=bb[x].bh;}}}voidcopy2(charno[12])//按管理员账号将管理员信息暂时保存在另外一个结构体里面{intx;for(x=0;x<=j;x++){{}}}{intx;{{}}}{intx,y,z;{{{if(strlen(ss[0].name1)==0)//判断文件里面的第一行信息是否存在{for(y=0;y<=i;y++){if(!strcmp(stu[y].no,no)){--bb[x].zn;//修改借书后的信息++bb[x].jn;ss[0].o=2;strcpy(ss[0].no,no);strcpy(ss[0].writer,bb[x].writer); strcpy(ss[0].name2,bb[x].name); ss[0].bh=bh;}}}else{for(y=0;y<=s;y++){{return-19;else{ss[y].o=2;}break;}else{if(y==s){s++;{{strcpy(ss[s].no,no);strcpy(ss[s].writer,bb[x].writer); ss[s].bh=bb[x].bh;ss[s].o=2;}}break;}}}fp=fopen("book.txt","w+");//将借书后的图书信息写入文件if(fp==NULL)return-16;else{for(y=0;y<=k;y++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[y].bh,bb[y].name,bb[y].classic,bb[y].writer,bb[y].zn,bb[y].jn); }}fclose(fp);return-16;else{{}}fclose(fp);return0;}elsereturn-20;}}}{intx,p;{{for(p=0;p<=k;p++){if(bb[p].bh==bh)//修改还书后的图书信息{++bb[p].zn;--bb[p].jn;}}ss[x].o=1;fp=fopen("book.txt","w+");//将还书后的所有图书信息重新写入文件return-16;else{for(p=0;p<=k;p++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[p].bh,bb[p].name,bb[p].classic,bb[p].writer,bb[p].zn,bb[p].jn); }}fclose(fp);fp=fopen("show.txt","w+");//将还书后的所有借书记录重新写入文件if(fp==NULL)return-16;else{{}}fclose(fp);return0;}else{return-12;}}elseif(x==s)return-18;}}{intx,flag;do//{flag=1;for(x=0;x<=k-1;x++){if(bb[x].bh>bb[x+1].bh){a=bb[x+1];bb[x+1]=bb[x];bb[x]=a;flag=0;}}while(flag==0);fp=fopen("book.txt","w+");//将排序后的信息重新写入文件for(x=0;x<=k;x++)fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer,bb[x].zn,bb[x].jn); fclose(fp);}5.登陆界面所有函数源代码为//picture.hvoidpica(){printf("\n}voidpicb(){printf("\n}printf("1.switch(x)default:;}}{inti;printf("\n\t\t\t\t登陆\n");printf("------------------------------------------------------------------------\n\n");printf("1.管理员登陆\n2.读者登陆\n3.返回系统界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:inputs2(1,1,0);i=exam(aa.no,aa.key,1);if(i){eros(i);n=3;elsen=2;break;case2:inputs3(1,1,0);i=exam(rr.no,rr.key,0);if(i){eros(i);n=30;}elsen=29;break;case3:n=0;break;default:;}}pica();printf("1.printf("5.switch(x)default:;}}{printf("1.switch(x)default:;}}voidpic4()//管理员添加图书界面{pica();printf("1.录入新的图书信息\n2.返回上一层\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:inputs1(1,1,1,1,1);n=5;break;case2:n=2;break;default:;}}voidpic5()//添加图书确认界面{inti;pica();printf("你输入的图书信息为:\n\n");printf("书名\t\t\t编号\t作者\t\t种类\t在馆数\t借出数\n");printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn); printf("------------------------------------------------------------------------\n\n");printf("1.录入以上信息\n2.返回重新输入图书信息\n\n");switch(x)if(i)}default:;}}{printf("printf("1.switch(x)default:;}}{printf("1.switch(x){case1:n=4;break;case2:n=2;break;default:;}}voidpic8()//修改图书界面{pica();printf("1.进行修改图书操作\n2.返回管理图书界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:n=9;break;case2:n=2;break;default:;}}voidpic9()//输入编号以选择修改相应的图书{inti;pica();printf("以下是在馆所有图书信息:\n\n");gck23();printf("1.switch(x)if(i)}else{n=10;}break;}}{pica();printf("printf("1.修改书名\n2.修改作者名字\n3.修改图书在馆的数量\n4.修改图书所属的类别\n"); printf("5.修改图书所有信息\n6.返回上一层选择其他编号的书\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:inputs1(0,1,0,0,0);n=12;break;case2:inputs1(0,0,1,0,0);n=12;break;case3:inputs1(0,0,0,1,0);n=12;break;case4:inputs1(0,0,0,0,1);n=12;break;case5:inputs1(0,1,1,1,1);n=12;break;case6:n=9;break;default:;}}voidpic11()//获取相应的图书失败提示界面{printf("1.重新输入图书编号\n2.返回图书管理界面\n"); examine(&x,1);switch(x){case1:n=9;break;case2:n=8;break;default:;}}{inti;pica();printf("printf("1.switch(x)if(i)}default:;}}{printf("printf("1.返回继续修改图书\n2.返回管理图书界面\n"); examine(&x,1);switch(x){case1:n=8;break;case2:n=2;break;default:;}}voidpic14()//修改图书失败提示界面{printf("1.重新输入图书修改信息\n2.图书管理界面\n");examine(&x,1);switch(x){case1:n=10;break;case2:n=8;break;default:;}}voidpic15()//删除图书选择界面{pica();printf("1.进行删除图书操作\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");switch(x)default:;}}{inti;pica();;printf("gck23();printf("1.switch(x)if(i)}else{};break;case2:system("cls");n=2;break;default:system("cls");;}}voidpic17()//删除图书确认界面{inti;pica();printf("编号为%d的图书信息:\n\n",bk.bh);bh2(bk.bh);printf("------------------------------------------------------------------------\n\n");printf("1.删除该图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:i=sc(bk.bh);if(i){eros(i);n=20;}elsen=19;break;case2:n=2;break;default:;}}{printf("1.switch(x)default:;}}{printf("printf("1.switch(x)default:;}}{printf("1.switch(x){case1:n=16;break;case2:n=15;break;default:;}}voidpic21()//管理员查看借阅记录界面{inti;pica();printf("1.查看指定编号的图书借阅记录\n2.查看指定读者的借阅记录\n3.查看所有图书借阅记录\n4.查看在馆图书的详细信息\n");printf("5.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:inputs1(1,0,0,0,0);i=rck1(bk.bh);if(i){eros(i);n=23;}else{pica();printf("}break;if(i)}else{pica();printf("}break;default:;}}{printf("------------------------------------------------------------------------\n\n"); printf("1.返回查看其它借阅记录\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:n=21;break;case2:n=2;break;default:;}}voidpic23()//查看借阅记录失败界面{printf("1.返回查看记录界面\n2.返回图书管理界面\n"); examine(&x,1);switch(x){case1:n=21;break;case2:n=2;break;default:;}}voidpic24()//图书信息显示界面{pica();printf("gck23();printf("1.switch(x)default:;}}{pica();printf("1.switch(x)default:;}}voidpic26()//修改密码成功提示界面{printf("修改密码操作成功!!!\n");printf("1.返回管理图书界面\n");examine(&x,1);switch(x){case1:n=2;break;default:;}}voidpic27()//修改密码失败提示界面{printf("1.再试一次\n2.返回图书管理界面\n");examine(&x,1);switch(x){case1:n=25;break;case2:n=2;break;default:;}}voidpic29()//读者主页{copy3(rr.no);picb();printf("1.printf("5.switch(x)default:;}}{printf("1.switch(x)default:;}}{inti;picb();printf("1.按编号查询书目\n2.按书名查询书目\n3.按作者查询书目\n4.按类别查询书目\n5.返回我的主页\n\n"); printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){case1:inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){eros(i);n=33;elsen=34;break;case2:inputs1(0,1,0,0,0);i=sm1();if(i){eros(i);n=33;}else{picb();sm2();n=32;}break;case3:inputs1(0,0,1,0,0);if(i)}else}break;default:;}}{ inti;printf("1.{{eros(i);n=36;}elsen=34;break;case2:system("cls");n=31;break;default:system("cls");}}voidpic33()//查询书目失败界面{printf("1.返回重新查询\n2.返回我的主页\n");switch(x){case1:n=31;break;case2:n=29;break;default:;}}voidpic34()//借书确认界面{inti;picb();printf("编号为%d的图书信息:\n\n",bk.bh);bh2(bk.bh);printf("1.if(i)}elsedefault:;}}{printf("printf("1.switch(x)default:;}}voidpic36()//借书失败提示界面{printf("1.返回重新查询\n2.返回我的主页\n"); examine(&x,1);switch(x){case1:n=31;break;case2:n=29;break;default:;}}{inti;picb();printf("1.输入还书的编号\n2.返回我的主页\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){eros(i);n=39;}elseif(i)}elsen=38;}break;default:;}}{printf("printf("1.switch(x)default:;}}{printf("1.switch(x){case1:n=37;break;case2:n=29;break;default:;}}voidpic40()//读者的借阅记录界面{picb();printf("以下是您尚未归还的所有书目:\n\n");printf("------------------------------------------------------------------------\n\n"); printf("1.返回我的主页\n\n");printf("------------------------------------------------------------------------\n\n"); examine(&x,1);switch(x){case1:n=29;break;default:;}}voidpic41()//读者浏览在馆图书信息的界面{picb();printf("gck23();printf("1.switch(x)default:;}}{picb();printf("1.switch(x)default:;}}{printf("printf("1.examine(&x,1);switch(x){case1:n=42;break;case2:n=29;break;default:;}}voidpic44()//修改密码失败提示界面{printf("1.我要再试一次\n2.返回我的主页\n");switch(x){case1:n=42;break;case2:n=29;break;default:;}}voidpic45()//新读者注册界面{inti;printf("\t\t\t新用户注册\n\n");printf("------------------------------------------------------------------------\n\n");printf("1.我要注册\n2.返回系统登录界面\n\n");switch(x)if(i)}default:;}}{printf("printf("1.switch(x)default:;}}{switch(x){case1:n=45;break;case2:n=0;break;default:;}}6.按要求读取文件的数据并显示到屏幕上源代码为intbh1(intbh)//判断该编号的图书信息是否存在函数{intx;for(x=0;x<=k;x++){if(bh==bb[x].bh){return0;}if(x==k&&bh!=bb[x].bh){return-6;}}}{intx;{{printf("}}}{intx;{{return0;break;}return-14;}}voidsm2(charname[50])//按照图书名字显示图书信息函数{intx;printf("书名\t\t\t编号\t作者\t\t种类\t在馆数\t借出数\n"); for(x=0;x<=k;x++){if(!strcmp(name,bb[x].name))printf("%-24s%-8d%-16s%-8s%-8d%-8d\n",bb[x].name,bb[x].bh,bb[x].writer,bb[x].classic,bb[x].zn,bb[x].jn); }}printf("\n");}intzz1(charwriter[20])//判断是否存在该作者的图书信息函数{intx;for(x=0;x<=k;x++){if(!strcmp(writer,bb[x].writer)){return0;break;}return-15;}}{intx;printf("{{}}}{intx;printf("{{printf("%-24s%-8d%-16s%-8s%-8d%-8d\n",bb[x].name,bb[x].bh,bb[x].writer,bb[x].classic,bb[x].zn,bb[x].jn); }}printf("\n");}intrck1(intbh)//判断该编号的图书的借书记录是否存在{intx;if(ss[x].bh==bh){return0;}else{if(x==s)return-9;}}}{intx;printf("{{}}}{intx;printf("{{}}}intgck21(charno[12])//判断该账号读者的借书记录是否存在{intx;for(x=0;x<=s;x++){if(!strcmp(ss[x].no,no)){return0;}if(x==s)return-10;}}}voidgck22(charno[12])//按读者显示借书情况2{intx;printf("借书人\t借者账号\t图书编号\t书名\t\t\t作者\n");for(x=0;x<=s;x++){{}}}{intx;printf("{}}1.2.3.4.5.读者登陆界面【心得体会】1.通过这次实训课的训练,我组成员收获了许多新的知识,也锻炼了自己各方面的能力,坚实地打牢了专业知识基础,极大得方便了以后的学习生活。
C语言程序课程设计报告标题:图书管理系统专业:软件工程类:设计主题图书馆管理系统主要包括管理图书的库存信息,每本书的借阅信息,每个人的借阅信息。
每本书的库存信息包括数量、书名、作者、出版日期、金额、类别、总入库数量、当前库存、已借出图书数量等。
每本借书包括以下信息:编号、书名、金额、借书证号、借阅日期、到期日期、罚款金额等。
每个人的图书馆信息包括借书证号、班级、学号等。
该系统的功能包括以下几个方面:一、借阅资料管理要求对图书、期刊、报纸、期刊进行分类管理,这样操作会更加灵活方便。
可以随时添加、删除、修改、查询等相关资料。
b、借贷管理(1)借贷操作(2)还书操作(3)更新治疗提示:以上处理需要相互配合,通过编辑赔偿和违约金金额来完成图书借还业务的各种登记。
例如,读者在还书时,不仅要更新图书的库存信息,还要自动计算图书的罚款金额。
并显示读者当天到期未还图书的所有信息。
c、读者管理读者等级:对借阅的读者进行分类,比如可以分为教师和学生两类。
并定义每类读者可以借阅的图书数量及相关借阅时间等信息。
读者管理:可以录入读者信息,以及挂失或注销读者、查询等服务。
D.统计分析可以随时进行统计分析,及时了解当前的借阅情况和相关数据状态。
统计分析包括借阅列表、数据状态统计、借阅统计等功能分析,显示当日所有到期未还的图书信息。
e系统参数设置:您可以设置相关的系统服务器参数,如违约金金额、最大借用天数等。
根据题目分析这项工作分为六个模块。
1.图书数据2.借款人信息3.借用模块4.还书模块5.照看书籍6.查询模块模块一:书号,书名,作者,出版时间,价格,份数,页数。
模块二:单位、借阅书目、借阅时间模块3:输入书名、书号、借书证。
模块四:登记书号,还书,处理罚款。
模块5:管理书库中的书籍,将新书入库,删除旧书,堆栈查询模块6:图书查询。
数据测试源代码汉字菜单可以参照以下代码编写:#包含“stdio.h”。
主(){ char c;int I;做{clr SCR();for(I = 0;i < 80i++)printf(" * ");printf("\t 1:添加书籍\ n ");printf("\t 2:列出书籍\ n ");printf(" \ t 3:s reach books \ n ");printf("\t 4:借书\ n ");printf("\t 5:返回图书\ n ");printf("\t6:退出\n ")printf(" \ t请选择输入选项[1 \ \ 2 \ \ 3 \ \ 4 \ \ 5 \ \ 6]:\ n ");做{c = getchar();}while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&!='6');getchar();开关(c){事例“1”:输入();打破;案例“2”:del();打破;事例“3”:find();打破;case“4”:arrange();打破;事例“5”:right();打破;案例“6”:出口(0);}Printf("按任意键返回主菜单:\ n ");getchar();clr SCR();} while(1);}#include <stdio.h >定义图书结构*/结构书{int _ id#include <stdlib.h >#include <string.h >#定义借入1#定义NOBORROW 0/*//数字,唯一char _ name[32];//书的名称,不唯一int _ type//书的类型,不唯一int _ status//书的状态,借出/未借出int _ count//图书借出的次数struct Book * _ next//下一本书结构书* _ prev//前一本书};定义书籍类型*/操作目录提示*/操作目录提示1 */添加图书类型并显示用户信息*/添加图书状态并显示用户信息。
#include〈stdio.h〉#include<windows.h〉#include〈string。
h〉#include<conio。
h>#define M 100struct books{char tsmc[12];inttsbh;float dj;char zz[12];char czzt[12];char xm[12];char xb[12];intxh; }s[M];int N;bool flag;intmain (){intsele;flag=0;sele=1;void sr();void cx();void sc();void js();void hs();void tc();void jsh();//system ("tsgl”);printf("\n\n");printf(" ************************\n"); printf(" 1:输入2:查询3:删除\n");printf(”4:借书5:还书0:退出\n");printf(” ************************\n"); while(1){printf(”\n\n请输入功能序号:");scanf (”%d",&sele);if(sele>=0 && sele<=5){switch(sele){case 1:sr();break;case 2:cx();break;case 3:sc();break;case 4:js();break;case 5:hs();break;case 0:jsh();break;}if(flag)break;printf(”\n\n");printf(” ************************\n”); printf(" 1:输入2:查询3:删除\n");printf(”4:借书5:还书0:退出\n”);printf(” ************************\n”);}else{printf(”输入错误请再次输入|\n\n");printf("\n\n");printf(” ************************\n”);printf(" 1:输入2:查询3:删除\n”);printf(”4:借书5:还书0:退出\n");printf(" ************************\n");}printf("\n\n让任意键继续\n”);} //wr_file();}/******主函数***//*********输入*********/void sr(){intn,i;N=0;printf("可输入的书本数:");scanf("%d",&n);N=n+N;printf("请输入相关信息:\n");for(i=1;i<=n;i++){printf(”图书名称:”);scanf(”%s",s[N-n-1+i]。
.《程序设计基础(C)》课程设计报告图书信息管理系统学生姓名:朱斌学号:201211354班级:电力工程与管理1201班指导老师:邓伟华日期:2013.07.05兰州交通大学新能源与动力工程学院C语言课程设计报告一、设计目标 (2)二、总体设计 (2)三、详细设计 (3)五、分析及结论............................................................................................. 错误!未定义书签。
六、参考文献 (11)七、附录 (11)源程序清单 (11)一、设计目标图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计的图书信息管理系统,应当具备能提供以下功能:1、系统以菜单方式工作2、图书信息录入功能--输入3、图书信息浏览功能--输出4、图书信息查询功能--算法(查询方式:1按书名查询.2.按作者名查询)5、图书信息的删除与修改二、总体设计1.程序设计组成框图2.程序流程图`图书信息管理系统系统登录模块菜单选择模块图书信息录入模块图书信息浏览模块图书信息查询模块图书信息修改模块设计:朱斌设计:周勇设计:闫鹏设计:张旭东设计:杨国峥设计:王文模三、详细设计1、系统登录模块(f1())——本函数由朱斌设计1)函数的功能:验证管理员信息,进入菜单功能界面2)函数的入口:从main()的switch()结构中进入,即choice的值为1时进入函数,然后提示用户通过键盘对输入管理员账户及密码。
3)函数调用关系:被主函数调用。
由switch()开关结构中进入,并在文中无返回值的空值void函数。
4)函数的出口:当验证失败,提示重新输入。
当验证成功,通过“ENTER”键,跳出switch()开关函数,进入菜单功能模块,继续执行选择结构。
程序流程图:图书登录系统界面2.菜单功能选择模块(f2())——本函数由周勇设计1)函数功能:主要作用是提示用户操作,体现模块化思想,主要是显示出菜单让用户选择要进行的任务。
HUNAN UNIVERSITY C语言程序训练报告【设计目的】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等。
图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)读者注册功能3)读者登录功能4)读者借书还书功能5)查询读者借阅记录6)查询在管图书信息功能7)修改密码功能8)管理员登录功能9)增加、修改、删除图书功能10)查看图书信息功能【设计思路】根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的;管理员和读者登录界面及各自功能应有不同的实现。
【总体设计】【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用源代码为//rkou。
c 程序的入口#include<stdio。
h>#include〈stdlib.h〉#include〈string。
h>#include<conio.h〉#include"head.h”#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 name[50],classic[10],writer[20]; //书名,类别,作者int jn; //借出数量int zn; //在馆数量int bh; //图书编号};struct information //管理员和读者结构体声明{char name[10],no[12],key[10]; //姓名,账号,密码};struct show //图书借阅记录的结构体声明{char name1[10],name2[50],writer[20],no[12]; //书名,读者姓名,书的作者,读者账号int bh,o; //图书编号,借阅状况(未还,已还)};//以下为用到的全局变量struct book bk;struct information aa,rr;struct information stu[100];struct book bb[100];struct information ad[100];struct show ss[100];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(); //输出图书类别以供用户选择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 xzc(char no[12],char key1[10],char key2[10],char name[10]);//读者注册函数int exam(char no[10],char key[10],int n);//密码账号检验函数int mp(char no[12],char key1[10],char key2[10],char key3[10],int n); //密码修改函数void paixu(); //对图书按照编号从小到大的顺序进行排列int sc(int bh); //管理员删除图书信息函数int zj(struct book bb); //管理员增加图书信息函数int xg(struct book bb);//管理员修改图书信息函数int js(int bh,char no[12]); //借书函数int hs(int bh,char no[12]); //还书函数int bh1(int bh); //判断该编号的图书信息是否存在函数void bh2(int bh); //按照图书编号显示图书信息函数int sm1(char name[50]);//判断是否存在该名字的图书信息函数void sm2(char name[50]); //按照图书名字显示图书信息函数int zz1(char writer[20]); //判断是否存在该作者的图书信息函数void zz2(char writer[20]);//按照图书作者显示图书信息函数void lb(char classic[10]); //按类别显示图书信息int rck1(int bh);//判断该编号的图书的借书记录是否存在void rck2(int bh);//按编号显示图书借书情况int gck21(char no[12]);//判断该账号读者的借书记录是否存在void gck22(char no[12]); //按读者显示借书情况2void gck12(); //显示全部借书情况void gck23();//管理员查看所有书的信息void copy(int bh); // 按编图书编号将图书信息暂时保存在另外一个结构体里面void copy2(char no[12]); //按管理员账号将管理员信息暂时保存在另外一个结构体里面void copy3(char no[12]);//按读者账号将读者信息暂时保存在另外一个结构体里面//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();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();void pic39();void pic40();void pic41();void pic42();void pic43();void pic44();void pic45();void pic46();void pic47();void picc();3.用户输入以及界面反馈用到的功能函数源代码为int regst(){char num[12],paw1[10],paw2[10],name[10];int i;printf(”请输入账号\n(11字符以内,不能含有中文字符):\n”);password(num,0,11);printf(”输入您的密码\n(9字符以内,不能含有中文字符):\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”);if(i〉0)i-—;}else if(i<j){if(b)printf("*”);else printf("%c",c);a[i]=c;i++;}if(i==j){ printf("\a");}}a[i]='\0';printf("\n");}void examine(int *a,int b){ while(!scanf(”%d",a)){ while(getchar()!='\n’);printf("请输入数字!!\n");}rewind(stdin);if(b) system("cls”);}void changepaw(int a,int b){ int i;char c1[10],c2[10],c3[10];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。
《程序设计基础(C)》课程设计报告图书信息管理系统学生姓名学号班级指导教师日期Xxx学院程序设计课程设计目录目录 (2)前言- 摘要 (3)第一章、C语言课程设计的目的 (4)第二章、总体设计(程序设计组成框图、流程图) (4)(一)、系统功能分析 (4)1、设计图书信息管理系统,使之能提供以下功能: (4)2、查询方式 (4)(二)、程序设计组成框图、流程图 (5)1、本程序的最大框架设计 (5)2、本程序的次级框架设计 (6)第三章、详细设计思路 (8)一、函数功能、入口及出口参数说明,函数调用关系描述 (8)第四章、调试与测试 (10)一、使用软件: (10)1、Visual c++ 6.0 (10)2、超级屏捕专业版(试用版) (10)二、调试结果 (10)系统主界面 (10)功能菜单 (11)图书信息录入菜单 (11)图书查询菜单 (12)第五章、源程序代码及调试结果详细表单 (12)第六章、心得体会 (19)参考文献 (19)2程序设计课程设计前言- 摘要二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。
如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。
迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢?本设计主要研究的是用C语言开发图书馆管理功能,其具体体现在图书的检索、查询、录入功能,更要优化了图书馆管理系统设计。
管理信息系统的设计与开发是一项系统工程,为了保证系统的质量,设计人员必须遵守共同的设计原则,尽可能地提高系统的各项指标。
具体的设计原则如下:⑴实用性原则要力求最大限度地满足实际工作的需要,必要的考虑各业务层次、各管理环节数据处理的实用性,把满足用户生产和管理业务作为第一要素进行考虑。
用户接口和操作界面设计则不必进行过多涉及,只要求在dos环境下的简单操作即可。
图书信息管理系统c语言程序设计流程图下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!图书信息管理系统C语言程序设计流程图详解在计算机科学中,设计和开发一个图书信息管理系统是一个常见的实践项目。
C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
c语言课程设计图书信息管理系统本课程设计的选题是基于C程序设计语言的图书信息管理系统。
该系统以菜单方式工作,包括图书信息录入、浏览、查询和排序、删除和修改等功能。
在基本要求达到后,还可以进行创新设计,如实现会员资料的查询、办理借书手续等。
为了实现这些功能,我们需要遵循结构化程序设计思想,将系统设计任务分解成许多子功能模块进行设计。
程序将综合if语句及switch语句的运用方法及嵌套应用方法,循环结构的三种语句while、do-while、for,以及函数的定义方法和调用方法等来进行编写。
系统的总体结构包括录入、浏览、查询和排序、删除和修改等功能模块。
重要数据的数据结构设计采用结构体的形式,将所需的数据全放在一维数组中,方便文件录入和读取的操作。
具体的功能模块包括录入模块、浏览模块、删除模块、修改模块和查询模块。
录入模块用于录入图书信息并保存于文件中,浏览模块用于添加一个或多个图书信息,并将所添加图书信息保存,方便查找。
删除模块和修改模块分别用于对图书信息进行删除和修改处理。
查询模块则提供了按分类号、作者名、书名等多种查询方式,方便用户查找所需图书信息。
在基本功能实现的基础上,还可以进行创新设计,如实现会员资料的查询、办理借书手续等。
includeincludeincludestruct BOOK {char shuming[999]。
zuozheming[999]。
fenleihao[999]。
danwei[999]。
shijian[999]。
jiage[999];books[___];void select() {system("cls");void jm();void input();void output();void search();void xiugai();void shanchu();int n;printf("图书管理功能界面\n");menu:jm();scanf("%d"。
# include< stdio.h ># include< string.h ># include< stdlib.h >/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/struct tushu_node{int num;char leibie[20];char name[30];char author[20];char press[20];char time[20];double price;struct tushu_node*next;};FILE *fpp; /*定义fpp为全局变量*/struct tushu_node*head,*tail,*p;int quanxian(); /* 核查权限的函数*/int inputchioce(); /* 显示主菜单的函数*/void save(); /* 保存链表为文件的函数覆盖以前的信息*/ void save1(); /* 保存链表为文件的函数不覆盖以前的信息只在创建时调用一次*/struct tushu_node* wjtolb(); /* 从文件中读取数据并建立图书信息的链表的函数*/int luruxinxi(); /* 录入学生信息的函数*/ struct tushu_node * luruxinxi_chuangjian(); /* 创建图书信息的函数*/struct tushu_node * luruxinxi_charu(); /*插入图书信息的函数*/struct tushu_node * luruxinxi_shanchu(); /*删除图书信息的函数*/struct tushu_node * luruxinxi_xiugai(); /*修改图书信息的函数*/int liulantushu(); /* 浏览图书信息的函数*/int chaxuntushu(); /* 查询图书信息的函数*/ void chaxuntushu_num(); /* 按编号查询图书*/void chaxuntushu_name(); /* 按书名查询图书*/void chaxuntushu_price(); /* 按价格查询图书*/void paixutushu(); /* 为图书排序的函数*/ struct tushu_node* paixutushu_price(); /* 为图书按价格排序的函数*/ struct tushu_node* paixutushu_time(); /* 为图书按出版时间排序的函数*/void sfjx() ; /* 写个小函数,判断是否继续,让程序更完美在排序中使用*/int tongjitushu_shumu(); /* 统计图书数目的函数*/void shiyongshuoming(); /* 使用说明的函数*//*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/int main(){int chioce;chioce=quanxian(); /*核查用户是否有使用该管理系统的权限的函数*/if(chioce==1) /*若取得权限则返回值为1 */{system("cls");inputchioce();}exit(0);}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/int inputchioce() /* 主菜单*/{int mychioce,x=-1;printf("\n++++++++++++++++++++++++++++++++++++++欢迎你++++++++++++++++++++++++++++++++++\n\n");printf("**+++++++++++++++++++++++++++++++++++ 主菜单+++++++++++++++++++++++++++++++**\n");printf("** 1-- 录入(删除修改)图书信息** ** 2--(按规则)查询图书信息**\n");printf("** 3-- 浏览图书信息** ** 4-- 为图书(按规则)排序**\n");printf("** 5-- 统计图书(数目)** ** 6-- 帮助**\n");printf("** 0-- 退出系统** ** **\n");printf("**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++**\n");printf("\n 恭喜你获得使用权限,请你选择:");scanf("%d",&mychioce);switch(mychioce){case 1:{ luruxinxi();break;}case 2:{chaxuntushu();break;}case 3:{ liulantushu();break;}case 4:{ paixutushu();break;}case 5:{ tongjitushu_shumu();printf("\n\n是否继续操作? 请选择(继续-1/退出-0)");scanf("%d",&x);if(x==1){ system("cls");inputchioce();}if(x==0){printf("\n\n谢谢你的使用!再见\n");exit (0); }if(x!=1&&x!=0){system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}break;}case 6:{ shiyongshuoming();break;}case 0:{ printf(" \n\n 谢谢你的使用!!再见\n\n");break;}default:{ system("cls");printf("\n 选择有误,请重新选择:\n");inputchioce();}break;}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/int quanxian(){int m=1,n=3,flag=0;char mima[20];do{printf("\n\n 你好,欢迎使本图书信息管理系统!\n");printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~\n");printf("【现在进行权限核查】\n--------------------友情提醒:你共有3次输入密码的机会!\n");printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~\n ");if(n==2||n==1){printf("注意:你已输入错误%d次剩余输入次数: %d 请输入密码:",3-n,n);}if(n==3) printf("剩余输入次数: %d 请输入密码:",n);scanf("%s",mima);if(strcmp(mima,"chenbo0916")==0){flag=1;return flag;}m++;n--;system("cls");}while(strcmp(mima,"chenbo0916")!=0&&m<=3) ;printf("\n\n对不起,你连续三次输入密码错误,没有使用该图书管理系统的权限!\n");exit(0);}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/struct tushu_node* wjtolb(struct tushu_node*head,int *n) /* 从文件中读取数据并建立图书信息的链表的函数*/{FILE *fp;struct tushu_node*p,*p1,*p2;if((fp=fopen("1.txt","r"))==NULL){printf(" 打开文件失败!\n");exit(1);}while(!feof(fp)){(*n)++;p=(struct tushu_node*)malloc(sizeof(struct tushu_node));fscanf(fp,"%d%s%s%s%s%s%lf",&p->num,p->leibie,p->name,p->author,p->press,p->time,&p->price);if(head==NULL){head=p;p1=p;}else{p1->next=p;p2=p1;p1=p;}}p2->next=NULL;free(p);(*n)--;fclose(fp);return head;/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/int luruxinxi(){int k;printf(" |++++++++++++++++++++++++++++录入信息++++++++++++++++++++++++++++++++|\n");printf(" | 1-- 创建或添加图书信息** ** 2-- 删除图书信息|\n");printf(" | 3-- 修改图书信息** ** 0-- 还回主菜单|\n");printf("请你再次选择具体操作:");scanf ("%d",&k);system("cls"); /* 清屏*/switch(k){case 1:{ luruxinxi_chuangjian();break;}case 2:{luruxinxi_shanchu();break;}case 3:{luruxinxi_xiugai();break;}case 0:{ inputchioce();break;}default:{ system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}break;}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/struct tushu_node * luruxinxi_chuangjian() /* 创建图书信息的函数*/{int num;char leibie[10];char name[30];char author[20];char press[20];char time[20];double price;int size=sizeof(struct tushu_node);head=tail=NULL;printf("\n请依次输入图书的\n编号类别书名作者出版社出版时间价格(以“0”结束输入):\n");scanf("%d",&num);if(num!=0)scanf("%s%s%s%s%s%lf",leibie,name,author,press,time,&price);while(num!=0){p=(struct tushu_node*)malloc(size);p->num=num;strcpy(p->leibie,leibie);strcpy(p->name,name);strcpy(p->author,author);strcpy(p->press,press);strcpy(p->time,time);p->price=price;p->next=NULL;if(head==NULL)head=p;elsetail->next=p;tail=p;printf("\n请继续输入图书的\n编号类别书名作者出版社出版时间价格(以“0”结束输入):\n");scanf("%d",&num);if(num!=0){scanf("%s%s%s%s%s%lf",leibie,name,author,press,time,&price);}}if(num==0) /* 若判断数字为0,则退出*/{system("cls");save1(head);inputchioce();}return head;}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/void save1(struct tushu_node* p1){ /* 将链表保存为文件的函数不覆盖以前的信息*/if( (fpp=fopen("1.txt","a"))==NULL ){printf("打开文件失败!");exit(0);}while(p1!=NULL){fprintf(fpp," %d %s %s %s %s %s %lf \n",p1->num,p1->leibie,p1->name,p1->author,p1->press,p1->time,p1->price);p1=p1->next;}if(fclose(fpp)){printf("关闭文件失败!\n");exit(0);}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/void save(struct tushu_node* p1) /* 将链表保存为文件的函数覆盖以前的信息*/{if(( fpp=fopen("1.txt","w"))==NULL ){printf("打开文件失败!");exit(0);}while(p1!=NULL){fprintf(fpp," %d %s %s %s %s %s %lf \n",p1->num,p1->leibie,p1->name,p1->author,p1->press,p1->time,p1->price);p1=p1->next;}if(fclose(fpp)){printf("关闭文件失败!\n");exit(0);}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/struct tushu_node * luruxinxi_shanchu() /* 删除某本图书信息(按编号删除)*/{int x=-1,n=0;int numm;int num;char leibie[10];char name[30];char author[20];char press[20];char time[20];double price;struct tushu_node*ptr1,*ptr2;struct tushu_node*head=NULL;printf("\n所有的图书信息如下:\n"); /* 删除前先遍历所有图书,方便看清要删除哪一本*/if((fpp=fopen("1.txt","r"))==NULL) /* 输入要删除的图书编号之前先遍历所有图书信息*/{printf(" 打开文件失败!");exit(0);}else{printf("\n\n编号类别书名作者出版社出版时间价格\n");while(!feof(fpp)){fscanf(fpp,"%d%s%s%s%s%s%lf",&num,leibie,name,author,press,time,&price);printf("%d %s %s %s %s %s %lf\n",num,leibie,name,author,press,time, price);}}if(fclose(fpp)){printf("关闭文件失败!\n");exit(0);}head=wjtolb(head,&n); /* 从文件中读取数据将数据创建为链表*/printf("\n 输入需要删除的图书的编号:");scanf("%d",&numm);while(head!=NULL&&head->num==numm){ptr2=head;head=head->next;free(ptr2);}if(head==NULL)return NULL;ptr1=head;ptr2=head->next;while(ptr2!=NULL){if(ptr2->num==numm){ptr1->next=ptr2->next;free(ptr2);}elseptr1=ptr2;ptr2=ptr1->next;}save(head); /* 重新保存为文件*/printf(" 编号为%d的图书已删除并将删除后的信息保存至文件",numm);printf("\n\n是否继续操作? 请选择(继续-1/退出-0)");scanf("%d",&x);if(x==1){system("cls");inputchioce();}if(x==0){printf("\n\n谢谢你的使用!再见\n");exit (0);}if(x!=1&&x!=0){system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}return head;}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/struct tushu_node * luruxinxi_xiugai() /*修改图书信息的函数(按编号修改)*/ { int n=0,x=-1,t;int num;int numm;char leibie[10];char name[30];char author[20];char press[20];char time[20];double price;struct tushu_node*head=NULL;struct tushu_node*p;printf("\n所有的图书信息如下:\n");if( (fpp=fopen("1.txt","r"))==NULL ) /* 输入要修改的图书编号之前先遍历所有图书信息*/{printf(" 打开文件失败!");exit(0);}else{printf("\n\n编号类别书名作者出版社出版时间价格\n");while(!feof(fpp)){fscanf(fpp,"%d%s%s%s%s%s%lf",&num,leibie,name,author,press,time,&price);printf("%d %s %s %s %s %s %lf\n",num,leibie,name,author,press,time, price);}}if(fclose(fpp)){printf("关闭文件失败!\n");exit(0);}printf("\n输入需要修改的图书的编号:");scanf("%d",&numm);system("cls"); /* 先遍历后选择完要修改的图书编号后清屏*/head=wjtolb(head,&n);printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~\n");printf("1--修改图书编号2--修改图书类别\n");printf("3--修改图书书名4--修改图书作者\n");printf("5--修改图书出版社6--修改图书出版时间\n");printf("7--修改图书价格\n");printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~\n");printf("编号为%d本图书的信息为:\n",numm);if(head!=NULL&&head->num==numm) /*修改头结点*/{printf("编号类别书名作者出版社出版时间价格\n");printf("%d %s %s %s %s %s %lf\n",head->num,head->leibie,head ->name,head->author,head->press,head->time,head->price);printf("请选择需要修改的图书信息的成分:");scanf("%d",&t);switch(t){case 1:{ printf(" 请输入图书%d的新编号:\n",numm);scanf("%d",&num);head->num=num;break;}case 2:{printf(" 请输入图书%d的新类别:\n",numm);scanf("%s",leibie);strcpy(head->leibie,leibie);break;}case 3:{ printf(" 请输入图书%d的新书名:\n",numm);scanf("%s",name);strcpy(head->name,name);break;}case 4:{ printf(" 请输入图书%d的新作者:\n",numm);scanf("%s",author);strcpy(head->author,author);break;}case 5:{ printf(" 请输入图书%d的新出版社:\n",numm);scanf("%s",press);strcpy(head->press,press);break;}case 6:{ printf(" 请输入图书%d的新出版时间:\n",numm);scanf("%s",time);strcpy(head->time,time);break;}case 7:{ printf(" 请输入图书%d的新价格:\n",numm);scanf("%lf",&price);head->price=price;break;}default:{ system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}break;}save(head);printf("\n\n是否继续操作? 请选择(继续-1/退出-0)");scanf("%d",&x);if(x==1){system("cls");inputchioce();}if(x==0){printf("\n\n谢谢你的使用!再见\n");exit (0);}if(x!=1&&x!=0){system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}}else /* 要修改的不是头节点*/{p=head->next;}//do 用do-while语句事不能对第二本图书进行修改//{p=p->next;}while(p!=NULL&&p->num!=numm);while(p!=NULL&&p->num!=numm){p=p->next;}if(p!=NULL&&p->num==numm) /* 修改其他节点*/{printf("\n\n编号类别书名作者出版社出版时间价格\n");printf("%d %s %s %s %s %s %lf\n", p->num,p->leibie,p->name,p->author,p->press,p->time,p->price);printf("请选择需要修改的图书信息的成分:");scanf("%d",&t);switch(t){case 1:{ printf(" 请输入图书%d的新编号:\n",numm);scanf("%d",&num);p->num=num;break;}case 2:{printf(" 请输入图书%d的新类别:\n",numm);scanf("%s",leibie);strcpy(p->leibie,leibie);break;}case 3:{ printf(" 请输入图书%d的新书名:\n",numm);scanf("%s",name);strcpy(p->name,name);break;}case 4:{ printf(" 请输入图书%d的新作者:\n",numm);scanf("%s",author);strcpy(p->author,author);break;}case 5:{ printf(" 请输入图书%d的新出版社:\n",numm);scanf("%s",press);strcpy(p->press,press);break;}case 6:{ printf(" 请输入图书%d的新出版时间:\n",numm);scanf("%s",time);strcpy(p->time,time);break;}case 7:{ printf(" 请输入图书%d的新价格:\n",numm);scanf("%lf",&price);p->price=price;break;}default:{ system("cls");printf("选择有误,请重新选择:\n");inputchioce();}break;}save(head);printf("\n\n是否继续操作? 请选择(继续-1/退出-0)");scanf("%d",&x);if(x==1){system("cls");inputchioce();}if(x==0){printf("\n\n谢谢你的使用!再见\n");exit (0);}if(x!=1&&x!=0){system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}}return head;}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/int liulantushu() /* 浏览图书信息的函数*/{int num;char leibie[10];char name[30];char author[20];char press[20];char time[20];double price;int x=-1;if( (fpp=fopen("1.txt","r"))==NULL ){printf(" 打开文件失败!");exit(0);}else{printf("\n\n编号类别书名作者出版社出版时间价格\n");while(!feof(fpp)){fscanf(fpp,"%d%s%s%s%s%s%lf",&num,leibie,name,author,press,time,&price);printf("%d\t%s\t%s\t%s\t%s\t%s\t%lf\n",num,leibie,name,author,press,time,price);}}if(fclose(fpp)){printf("关闭文件失败!\n");exit(0);}printf("\n\n是否继续操作? 请选择(继续-1/退出-0)");scanf("%d",&x);if(x==1){system("cls");inputchioce();}if(x==0){printf("\n\n谢谢你的使用!再见\n");exit (0);}if(x!=1&&x!=0){system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/int chaxuntushu() /* 查询图书信息*/{int k;int n=0;struct tushu_node*head=NULL;head=wjtolb(head,&n);printf(" |++++++++++++++++++++++++++++ 查询图书信息++++++++++++++++++++++++++++++++|\n");printf(" | 1-- 按编号查询图书信息** ** 2-- 按书名查询图书信息|\n");printf(" | 3-- 按价格查询图书信息** ** 0-- 还回主菜单|\n");printf("请你再次选择具体操作:");scanf ("%d",&k);system("cls"); /* 清屏*/switch(k){case 1:{ chaxuntushu_num(head);break;}case 2:{ chaxuntushu_name(head);break;}case 3:{ chaxuntushu_price(head);break;}case 0:{ inputchioce();break;}default:{ system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}break;}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/void chaxuntushu_num(struct tushu_node*h) /* 按编号查询图书*/{int found,flag=1,num;int x;struct tushu_node*p;do{found=0;p=h;printf("请输入需要查找的图书的编号:");scanf( "%d",&num);printf("\n");while(p!=NULL){if(p->num==num){if(found==0)printf("\n编号类别书名作者出版社出版时间价格\n");printf("%d %s %s %s %s %s %lf\n",p->num,p->leibie,p->name,p->author,p->pr ess,p->time,p->price);found=1; /* 如果要查询的图书为头节点内的图书输出后将标记found变为1 */}p=p->next;}if(found==0) /* 若不为头节点found不变继续往后面查找*/printf("编号为%d 的图书未找到!\n",num);printf("\n\n是否继续查找?(继续--1/返回主菜单--0)");scanf("%d",&x);if(x==0)flag=0;if(x==1)flag=1;if(x!=1&&x!=0)flag=2;}while(flag==1); /* flag为判断是否需要继续的函数继续查找时flag为1 用do-while控制循环*/if(flag==0){system("cls");inputchioce();}if(flag==2){system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/void chaxuntushu_name(struct tushu_node*h) /* 按书名查询图书*/{int found,flag=1;char name[30];int x;struct tushu_node*p;do{found=0;p=h;printf("请输入需要查找的图书的书名:");scanf( "%s",name);printf("\n");while(p!=NULL){if(strcmp(p->name,name)==0){if(found==0)printf("\n编号类别书名作者出版社出版时间价格\n");printf("%d %s %s %s %s %s %lf\n",p->num,p->leibie,p->name,p->author,p->pr ess,p->time,p->price);found=1;}p=p->next;}if(found==0)printf("书名为《%s》的图书未找到!\n",name);printf("\n\n是否继续查找?(继续--1/返回主菜单--0)");scanf("%d",&x);if(x==0)flag=0;if(x==1)flag=1;if(x!=1&&x!=0)flag=2;}while(flag==1);if(flag==0){system("cls");inputchioce();}if(flag==2){system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/void chaxuntushu_price(struct tushu_node*h) /* 按价格查询图书*/{int found,flag=1;double price;int x;struct tushu_node*p;do{found=0;p=h;printf("请输入需要查找的图书的价格:");scanf( "%lf",&price);printf("\n");while(p!=NULL){if(p->price==price){if(found==0)printf("\n编号类别书名作者出版社出版时间价格\n");printf("%d %s %s %s %s %s %lf\n",p->num,p->leibie,p->name,p->author,p->pr ess,p->time,p->price);found=1;}p=p->next;}if(found==0)printf("价格为%lf的图书未找到!\n",price);printf("\n\n是否继续查找?(继续--1/返回主菜单--0)");scanf("%d",&x);if(x==0)flag=0;if(x==1)flag=1;if(x!=1&&x!=0)flag=2;}while(flag==1);if(flag==0){system("cls");inputchioce();}if(flag==2){system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/void paixutushu() /* 为图书排序的函数*/{int k;int n=0;struct tushu_node*head=NULL;head=wjtolb(head,&n);printf(" |++++++++++++++++++++++++ 为图书按规则排序+++++++++++++++++++++++++++++|\n");printf(" | 1-- 按价格为图书排序** ** 2-- 按出版时间为图书排序|\n");printf(" | 0-- 还回主菜单** |\n");printf("请你再次选择具体操作:");scanf ("%d",&k);system("cls"); /* 清屏*/switch(k){case 1:{head=paixutushu_price(head);sfjx();break;}case 2:{head=paixutushu_time(head);sfjx();break;}case 0:{inputchioce();break;}default:{system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}break;}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/struct tushu_node* paixutushu_price(struct tushu_node *head) /* 为图书按价格排序的函数*/{int n;struct tushu_node*p1,*p2,*p3,*p4;int i,j;int size=sizeof(struct tushu_node);n=tongjitushu_shumu();p1=head;p2=head->next;if(head==NULL||head->next==NULL)return head;if(p2->next==NULL){if(p1->price<p2->price)return head;else{p2->next=p1;p1->next=NULL;head=p2;save(head);printf("\n\n 按价格排序操作已完成并保存完毕\n是否继续操作? 请选择(继续-1/退出-0)");return head;}}for(i=1;i<n;i++)p4=(struct tushu_node*)malloc(size);p4->next=head;p3=p4;p1=head;p2=head->next;for(j=0;j<n-i;j++){if(p2->price>p1->price){p3=p1;p1=p2;p2=p2->next;}else{p1->next =NULL;p1->next=p2->next;p3->next=p2;p2->next =p1;p3=p2;p2=p1->next;}}head=p4->next;free(p4);}save(head);printf("\n\n按价格排序操作已完成并保存完毕\n是否继续操作? 请选择(继续-1/退出-0)");return head;}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/void sfjx() /* 写个小函数,判断是否继续,让程序更完美*/ {int x=-1;scanf("%d",&x);if(x==1){system("cls");inputchioce();}if(x==0)printf("\n\n谢谢你的使用!再见\n");exit(0);}if(x!=1&&x!=0){system("cls");printf("选择有误,默认返回主菜单,请重新选择:\n");inputchioce();}}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/struct tushu_node* paixutushu_time(struct tushu_node *head) /* 为图书按出版时间排序的函数*/{int n;struct tushu_node*p1,*p2,*p3,*p4;int i,j;int size=sizeof(struct tushu_node);n=tongjitushu_shumu();p1=head;p2=head->next;if(head==NULL||head->next==NULL)return head;if(p2->next==NULL){if(strcmp(p1->time,p2->time)>0)return head;else{p2->next=p1;p1->next=NULL;head=p2;save(head);printf("\n\n按出版时间排序操作已完成并保存完毕\n是否继续操作? 请选择(继续-1/退出-0)");return head;}}for(i=1;i<n;i++){p4=(struct tushu_node*)malloc(size);p4->next=head;p3=p4;p1=head;p2=head->next;for(j=0;j<n-i;j++){if(strcmp(p1->time,p2->time)<0){p3=p1;p1=p2;p2=p2->next;}else{p1->next =NULL;p1->next=p2->next;p3->next=p2;p2->next =p1;p3=p2;p2=p1->next;}}head=p4->next;free(p4);}save(head);printf("\n\n 按出版时间排序操作已完成并保存完毕\n是否继续操作? 请选择(继续-1/退出-0)");return head;}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/int tongjitushu_shumu() /* 统计图书数目的函数*/{int num;char leibie[10];char name[30];char author[20];char press[20];char time[20];double price;int x=-1,n=0;if((fpp=fopen("1.txt","r"))==NULL){printf(" 打开文件失败!");exit(0);}else{while(!feof(fpp)){fscanf(fpp,"%d%s%s%s%s%s%lf",&num,leibie,name,author,press,time,&price);n++;}}if(fclose(fpp)){printf("关闭文件失败!\n");exit(0);}printf("共有%d本图书",n-1);return n-1 ;}/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/void shiyongshuoming() /* 使用说明的函数*/{int x=-1;system("cls");printf("\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~使用说明~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n ");printf(" 你好,欢迎使用本图书管理系统!\n 1.首先你需要获得本系统的使用权限,进入本系统后,你有三次输入密码");printf("的机会,在三次内输入正确密码即可获得使用权限,三次输入错误后,系统将自动退出。
图书管理系统/*图书数据由编号、书名、出版社、单价和图书状态(库存用0表示或借出用读者编号表示),读者数据由编号、姓名和电话号码构成。
实现功能包括:(1)添加图书的记录(2)图书管理(借书和还书)(3)对图书数据排序(按单价的降序)(4)删除图书记录(5)修改图书记录(6)添加读者记录(7)输出图书信息表和读者信息表*#include <stdio.h>#include <string.h>#include <stdlib.h>#include <windows.h>/*函数的声明*/void bookname();void writername();void booknumber();void press();void bookdate();void Bfind(); //查询主菜单void Bdevise(); //修改函数void Badd(); //添加函数void Bdelete(); //删除函数void Bdisplay(); //显示所以已保存的图书信息函数void Bclean(); //清除所有图书信息函数void lendbook(); // 借书函数void returnbook(); //还书函数void lendorreturnbook();//借书或还书主菜单函数void appealkey();//用户密码申诉函数void devisepeoplekey();//修改用户密码函数void accountapply(); //用户申请账户函数void addpeopleaccount(); //管理员之添加用户帐号函数void addmanageaccount(); //管理员之添加管理员账号函数void addaccount(); //管理员之账户添加主菜单函数void devisepeopleaccount();//管理员之修改用户账号函数void devisemanageaccount();//管理员之修改管理员帐号函数void deviseaccount();//管理员之修改账号主菜单函数void deletepeopleaccount();//管理员之删除用户账号函数void deletemanageaccount();//管理员之删除管理员账号函数void deleteaccount();//管理员之删除账号主菜单函数void displayallpeopleaccounts();//显示所有用户信息函数void displayallmanageaccounts();//显示所有管理员信息函数void displayallaccountsmessage();//显示所有账号信息主菜单函数void highaddpeopleaccount(); //高级管理员添加用户账户函数void highaddmanageaccount(); //高级管理员添加管理员账户函数void highaddaccount(); //高级管理员之添加账户主菜单函数void booksmanage();//图书操作主菜单函数void accountsmanage();//管理员账号操作主菜单函数void highaccountsmanage();//高级管理员账号操作主菜单函数void menu1(); //用户之查询主菜单void menu2(); //管理员之查询主菜单void menu3(); //高级管理员之查询主菜单/*定义书的类型*/struct book{int bookstock; //库存量char bookname[20]; //书名char bookwriter[20]; //作者char booknumber[20]; //书号char press[20]; //出版社char bookdate[20]; //出版日期char price[20]; //出版价格int turefalse; //判断图书是否被借阅}books[20];/*定义用户类型*/struct peopleaccount{char pname[20];char pkey[20];}peopleaccounts[20];/*定义管理员类型*/struct manageaccount{char mname[20];char mkey[20];}manageaccounts[20];/*定义借书卡类型*/struct card{char cardnumber[20]; //借书卡号和用户信息一起写入yonghu.txt文件中的}cards[20];/*定义文件指针变量*/FILE *fp1; //fp1打开用户信息文件FILE *fp2; //fp2打开管理员信息文件FILE *fp3; //fp3打开图书信息文件FILE *fp4; //打开借还书记录的文件FILE *fpa; //fpa是临时文件指针/*改变输出的字体颜色*/void color(const unsigned short color1){if(color1>=0&&color1<=15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);/*仅限改变0-15的颜色;如果在0-15那么实现他的颜色因为如果超过15后面的改变的是文本背景色。
目录一、设计任务书 (3)二、本组课题及本人任务 (3)三、程序功能简介 (4)四、主体内容 (4)1.设计分析 (4)2.程序结构 (5)3.各模块的功能及程序说明 (5)4. 源程序 (6)5.操作方法 (17)6.试验结果 (18)7.设计体会 (22)五、附录 (23)1.流程图 (23)2.过程列表 (26)一、设计任务书1.目的1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握。
2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
3)培养学生在项目开发中团队合作精神、创新意识及能力。
2.要求:1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理。
2)系统设计要实用,编程简练,可用,功能全面。
3)说明书、流程图要清楚。
4)记录设计情况(备查,也为编写设计说明书作好准备)。
5)要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。
6)设计上交内容:设计报告一份(按格式书写);源程序一份,能编译成可执行文件并能正常运行。
二、本组课题及本人任务课题:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:1.系统以菜单方式工作。
2.图书信息录入功能(图书信息用文件保存)--输入。
3.图书信息浏览功能--输出。
4.查询和排序功能:(至少一种查询方式)--算法。
a. 按书名查。
b.按作者名查询。
本人任务:负责设计和编写图书信息管理系统的修改图书信息部分。
三、程序功能简介本系统是以visual C++ 环境下用C语言开发的一个图书管理系统。
本系统具有图书信息录入、浏览、删除、修改、查找(包括按书名、作者查找)功能。
c语言书籍管理系统课程设计一、教学目标本课程的目标是让学生掌握C语言编程的基本技能,能够运用C语言实现简单的书籍管理系统。
通过本课程的学习,学生将能够理解C语言的基本语法和数据结构,掌握基本的输入输出操作和文件操作,培养编程思维和解决问题的能力。
具体来说,知识目标包括:1.掌握C语言的基本语法和数据结构。
2.理解书籍管理系统的需求和设计原理。
技能目标包括:1.能够使用C语言编写简单的书籍管理程序。
2.能够进行基本的输入输出操作和文件操作。
情感态度价值观目标包括:1.培养学生的编程思维和解决问题的能力。
2.培养学生对计算机科学和软件开发的兴趣和热情。
二、教学内容本课程的教学内容主要包括C语言的基本语法和数据结构,以及书籍管理系统的需求分析和设计。
具体来说,教学大纲如下:1.第一章:C语言的基本语法和数据类型。
2.第二章:控制结构和函数。
3.第三章:输入输出操作和文件操作。
4.第四章:书籍管理系统的需求分析和设计。
教学内容将根据教材的章节进行安排和进度,同时结合实际的编程案例进行讲解和练习。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
具体来说,教学方法如下:1.讲授法:通过讲解和示范,让学生掌握C语言的基本语法和数据结构。
2.讨论法:通过小组讨论和问题解答,培养学生的编程思维和解决问题的能力。
3.案例分析法:通过分析实际的编程案例,让学生理解书籍管理系统的需求和设计原理。
4.实验法:通过编写和调试代码,让学生掌握基本的输入输出操作和文件操作。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备适当的教学资源,包括教材、参考书、多媒体资料和实验设备等。
具体来说,教学资源如下:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估为了全面、客观、公正地评估学生的学习成果,本课程将采用多种评估方式,包括平时表现、作业、考试等。
C语言课程设计图书管理系统Books Management System学生姓名张朝柱学院名称徐州工程学院学号20130566140班级13计转本专业名称计算机科学与技术指导教师李子龙2016年5月10日一、需求分析为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。
使用c语言编写了图书管理系统。
本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。
实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。
所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。
图书信息包括编号、书名、作者、数量、在库状态等。
图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、借阅、还书等基本操作。
整个程序实现顺序表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。
二、算法设计:1.设计思想:整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。
进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。
在设计程序时,实现了程序的模块化、结构化。
在主函数中调用各种子函数,操作界面简单,易操作。
2,设计表示:(1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。
主要实现了图书的录入、存储、查询、借书、还书、显示库存等功能。
(2)、void Book_Entering(struct SqList &SL);这是一个录入图书信息的函数,它主要实现了顺序表的创建,并且在创建过程中从文件读取信息到顺序表中,以用于后面其他函数的操作。
图书管理系统设计图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等功能描述:1 .新进熟土基本信息的输入2 .图书基本信息的查询3 .对撤销图书信息的删除4 .为借书人办理注册5 .办理借书手续6 .办理换书手续要求:以文件方式存储数据,系统以菜单方式工作。
这是本人大一第二学期初 C 语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ 网络硬盘中找到了当初的teta 版,发布于此,以作记念。
C 源代码如下:#include〈stdio 。
h〉#include<stdlib。
h〉#include〈string 。
h>struct book {char book_name [30];int bianhao;double price;char author[20];char state [20] ;char name[20];char sex [10];int xuehao;struct book *book_next;};struct club {char name [20];char sex[10];int xuehao;char borrow [30];struct club *club_next;};void Print_Book(struct book *head_book);/*浏览所有图书信息*/void Print_Club(struct club *head_club);/*浏览所有会员信息*/struct book *Create_New_Book();/*创建新的图书库, 图书编号输入为0 时结束*/struct book *Search_Book_bianhao(int bianhao,struct book *head_book);struct book *Search_Book_name (char *b_name,struct book *head_book);struct book *Search_Book_price (double price_h,double price_l,struct book *head_book);struct book *Insert_Book (struct book *head_book,struct book *stud_book) ;/*增加图书,逐个添加*/struct book *Delete_Book(struct book *head_book,int bianhao);/*删除图书*/struct club *Create_New_Club() ;struct club *Search_Club_xuehao(int xuehao,struct club *head_club);struct club *Search_Club_name (char *c_name,struct club *head_club);struct club *Insert_Club (struct club *head_club,struct club *stud_club);struct club *Delete_Club (struct club *head_club,int xuehao);struct book *Lent_Book (int bianhao ,int xuehao,struct book *head_book,struct club *head_club);struct book *back (int bianhao,int xuehao,struct book *head_book,struct club *head_club); int main(){struct book *head_book,*p_book;char book_name [30],name [20],author [20],sex [10];int bianhao;double price,price_h,price_l;int size_book=sizeof(struct book);int m=1,n=1,f;char *b_name,*c_name;struct club *head_club,*p_club;int xuehao;int size_club=sizeof (struct club) ;int choice;printf ("\n 欢迎您第一次进入图书管理系统!\n\n");printf("---——>[向导]————-〉[新建图书库] \n\n”) ;printf ("注意:当输入图书编号为0 时,进入下一步.\n\n");head_book=Create_New_Book();system(”cls”) ;printf("\n 欢迎您第一次进入图书管理系统!\n\n") ;printf("----—〉[向导]——---〉[新建会员库]\n\n”);printf(”注意:当输入会员学号为0 时,进入主菜单.\n\n”);head_club=Create_New_Club () ;system (”cls”);do {printf(”\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n”);printf("\n”);printf ("\t\t\t[1] :借书办理\t");printf(" [6]:还书办理\n”);printf (”\n");printf(”\t\t\t[2]:查询图书\t");printf(" [7]:查询会员\n”);printf (” \t\t\t[3]:添加图书\t");printf (" [8]:添加会员\n”);printf ("\t\t\t[4]:删除图书\t");printf (” [9] :删除会员\n") ;printf (” \t\t\t[5]:遍历图书\t");printf (” [10]:遍历会员\n\n”) ;printf ("\t\t\t〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n”);printf("\t\t\t0:退出\n\n”) ;printf(”请选择〈0~10〉:”);scanf(”%d",&choice);switch(choice) {case 1:printf ("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");printf (”输入所借图书编号:\n");scanf (”%d",&bianhao);printf ("输入借书人的学号:\n”);scanf ("%d",&xuehao);head_book=Lent_Book(bianhao,xuehao,head_book,head_club);system (”cls");printf (” \n 借阅成功!\n\n");printf (”相关信息如下:\n\n");head_book=Search_Book_bianhao (bianhao,head_book);break;case 2:system ("cls”) ;printf(”\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n”); printf ("1。
《程序设计基础(C)》课程设计报告图书信息管理系统学生姓名学号班级指导教师日期Xxx学院程序设计课程设计目录目录 (2)前言- 摘要 (3)第一章、C语言课程设计的目的 (4)第二章、总体设计(程序设计组成框图、流程图) (4)(一)、系统功能分析 (4)1、设计图书信息管理系统,使之能提供以下功能: (4)2、查询方式 (4)(二)、程序设计组成框图、流程图 (5)1、本程序的最大框架设计 (5)2、本程序的次级框架设计 (6)第三章、详细设计思路 (8)一、函数功能、入口及出口参数说明,函数调用关系描述 (8)第四章、调试与测试 (10)一、使用软件: (10)1、Visual c++ 6.0 (10)2、超级屏捕专业版(试用版) (10)二、调试结果 (10)系统主界面 (10)功能菜单 (11)图书信息录入菜单 (11)图书查询菜单 (12)第五章、源程序代码及调试结果详细表单 (12)第六章、心得体会 (19)参考文献 (19)2程序设计课程设计前言- 摘要二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。
如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。
迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢?本设计主要研究的是用C语言开发图书馆管理功能,其具体体现在图书的检索、查询、录入功能,更要优化了图书馆管理系统设计。
管理信息系统的设计与开发是一项系统工程,为了保证系统的质量,设计人员必须遵守共同的设计原则,尽可能地提高系统的各项指标。
具体的设计原则如下:⑴实用性原则要力求最大限度地满足实际工作的需要,必要的考虑各业务层次、各管理环节数据处理的实用性,把满足用户生产和管理业务作为第一要素进行考虑。
用户接口和操作界面设计则不必进行过多涉及,只要求在dos环境下的简单操作即可。
⑵可扩展性与可维护性原则为适应将来的发展,该系统应具有良好的可扩展性和可维护性。
软件设计尽可能模块化、组件化,使应用系统可灵活配置,适应不同的情况。
⑶安全可靠性原则应用软件与数据库系统的设计要做到安全可靠,防止非法用户的入侵。
数据库的备份策略恰当,以防止灾难性事故发生,这个由于目前水平有限,难以实施进行,所以作略。
⑷用户界面设计原则不必设计,只要在dos环境下运行即可。
⑸数据库设计原则:做到一致性和有效性即可。
3程序设计课程设计第一章、C语言课程设计的目的1、课程设计是对学生进行实践操作训练的重要环节,通过课程设计加深对本课程基本知识的理解和提高本课程基本知识的应用能力。
2、掌握本课程工程设计的主要内容、步骤和方法。
3、提高操作能力,学会应用有关资料进行程序设计的方法。
4、提高独立分析问题、解决问题的能力,逐步增强设计训练。
5、学生要认真读教材,阅读有关规范、设计手册等资料,独立按时完成任务。
6、掌握程序设计逻辑与设计报告单的格式书写。
第二章、总体设计(程序设计组成框图、流程图)(一)、系统功能分析1、设计图书信息管理系统,使之能提供以下功能:A、图书信息录入功能(图书信息用文件保存)--输入B、图书信息浏览功能--输出C、图书信息查询功能--算法2、查询方式A、按书名查询B、按作者名查询图书馆管理系统的管理远权限分为3级:系统管理员、图书馆管理员和一般管理员。
尽管他们具有不同模块的管理权限,但为简单起见,又因为图书馆管理系统的主要实体是书籍和图书,所以。
不再仔细对管理员进行设计。
书籍参数具体包括书籍类型、书名、作者名、图书编号、出版单位、出版时间、价格七个方面的基本信息。
4程序设计课程设计(二)、程序设计组成框图、流程图1、本程序的最大框架设计设计如下:此乃计算机课程设计的要求5程序设计课程设计2、本程序的次级框架设计(1)、大体框架程序设计课程设计(2(3)、图书档案管理系统(4)、程序设计的部分流程图图书查询模块流程程序设计课程设计8是第三章、详细设计思路一、函数功能、入口及出口参数说明,函数调用关系描述1、# include <stdio.h>提供与程序编写有关的函数信息,例如对输入输出函数的声明和宏的定义、全局量的定义等,是系统提供的文件名。
2、# include <stdlib.h>(网上摘录)包含了库函数之后就可以使用很多应用运算,类型转换,程序环境处理等了,比如可以使用sin,cos.sqrt 这些函数什么的stdlib.h 里面定义了五种类型、一些宏和通用工具函数。
类型例如size_t 、wchar_t 、div_t 、ldiv_t 和lldiv_t ;宏例如EXIT_FAILURE 、EXIT_SUCCESS 、RAND_MAX 和MB_CUR_MAX 等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。
3、# include <string.h>string 是C 标准库中声明的一个字符串类型,用来定义字符串变量。
4、结构体比如struct Student { …… }就是一个用户自己建立的结构体类型。
所谓结构体就是,C 语言允许用户建立又不同类型数据组成的组合型的数据结构。
注意:typedef 声明新的类型来代替已有的类型的名字。
5、文件的打开fopen 函数程序设计课程设计用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);其中,“文件指针名”必须是被说明为FILE 类型的指针变量;“文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求。
“文件名”是字符串常量或字符串数组6、strcpy把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间7、C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。
(1)有返回值函数此类函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。
如数学函数即属于此类函数。
由用户定义的这种要返回函数值的函数,必须在函数定义和函数说明中明确返回值的类型。
(2)无返回值函数此类函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。
这类函数类似于其它语言的过程。
由于函数无须返回值,用户在定义此类函数时可指定它的返回为“空类型”,空类型的说明符为“void”。
8. C语言提供了极为丰富的库函数,这些库函数又可从功能角度作以下分类。
(1)字符类型分类函数(2)转换函数(3)目录路径函数(4)诊断函数(5)图形函数(6)输入输出函数(7)接口函数(8)字符串函数(9)内存管理函数(11)日期和时间函数(12)进程控制函数(13)其它函数9程序设计课程设计第四章、调试与测试一、使用软件:1、Visual c++ 6.02、超级屏捕专业版(试用版)二、调试结果系统主界面10功能菜单图书信息录入菜单图书查询菜单第五章、源程序代码及调试结果详细表单#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#define N 100struct book //图书信息基本情况{char num[13]; //图书编号char name[20]; //图书名char publish[100]; //出版社float price; //图书单价char status[100]; //图书状态char author[100]; //作者char time[100]; //出版时间}em[N];int b=0;char password[7]="123456";int pass();void jiemian();void input();void display();void search();void main(){char key;if(pass()==1){jiemian();do{printf("\t\t请选择操作类型:\n");printf("***********\t\t***********\n"); printf("\t\t1 进入录入图书信息\n");printf("\t\t2 进入输出图书信息\n");printf("\t\t3 进入查询图书信息\n");printf("\t\t4 进入保存图书信息\n");printf("\t\t0 退出系统\n");printf("***********\t\t***********\n"); key=getch();switch(key){case'0':{printf("谢谢您的使用\n再见!");exit(0);}case'1':input(); //输入图书信息break;case'2':display(); //显示图书信息break;case'3':search(); //查询图书信息break;default:printf("输入有错误,请按操作要求进行操作");}}while(1);}}int pass(void)//密码验证{char passwor[7];int i,j=2;printf("请输入客户登录密码(提示:六位数字):\n"); gets(passwor);if(!strcmp(passwor,password))//若密码正确{for(i=1;i<=27;i++)printf("*");printf("\n");printf("欢迎进入图书管理系统!\n");return 1;}else//重新输入密码{do{j--;printf("密码错误请重新输入:");gets(password);if(!strcmp(password,password))//若密码正确{for(i=1;i<=27;i++)printf("*");printf("\n");printf("欢迎进入图书管理系统!");return 1;break;}elsecontinue;}while(j>0);printf("抱歉,你的输入次数已到");//只能输入规定的次数return 0;}}voidjiemian() //进入时的界面{int i;for(i=1;i<=27;i++)printf("%");//作者printf("制作人:杜晓宁\t专业:电力工程\n");printf("联系地址:兰州交通大学\n");for(i=1;i<=27;i++)printf("%");}void input()//输入图书信息{char ch;printf("你现在的位置是:\n\t\t输入图书信息栏\n");for(;b <=N; b++)//要输入的选项{printf("请输入图书号:\n"); //图书号scanf("%s",em[b].num);printf("请输入图书名:\n"); //图书名scanf("%s",em[b].name);printf("请输入作者名:\n"); //作者名scanf("%s",em[b].author);printf("请输入时间:\n"); //时间scanf("%s",em[b].time);printf("请输入图书状态:\n"); //图书状态scanf("%s",em[b].status);printf("请输入图书出版商:\n"); //出版商scanf("%s",em[b].publish);printf("按n键退出,其他键继续\n"); //是否继续输入图书信息 ch=getch();if(ch=='N'||ch=='n'){break;}elseprintf("你的位置是:\n\t\t输入图书信息栏 \n");}}void display()//显示图书信息{int i,j;printf("所有的图书信息如下:\n");{for(j=1;j<=80;j++)printf("*");printf("\t图书号\t图书名\t作者名\t时间\n");printf("%-16s%-16s%-8s%s\n",em[i].num,em[i].name,em[i].author,em[i].time); printf("图书状态\t\t出版商\t\t\n");printf("%-24s%-8s%-16s\n",em[i].status,em[i].publish);printf("图书单价:\n");printf("%d\n",em[i].price);for(j=1;j<=80;j++)printf("*");printf("\n");}printf("所有图书信息如上;");}void search(){int i;char nnum[20];char ch;do{printf("请输入要查询的图书号:\n");scanf("%s",nnum);getchar();for(i=0;i<= b;i++){if(strcmp(em[i].num,nnum)==0){printf("该图书信息如下:\n");printf("图书号\t\t图书名\t\t作者名\t时间\n");printf("%-16s%-16s%-8s%s\n",em[i].num,em[i].name,em[i].author,em[i].time); printf("图书状态\t\t\t出版商\t\t\n");printf("%-24s%-8s%-16s\n",em[i].status,em[i].publish);printf("图书单价:\n");printf("%d\n",em[i].price);break;}elseprintf("抱歉,你所找的图书不存在!\n");}printf("请按y键继续查询其他图书信息,其他键结束\n");ch=getchar();getchar();}while(ch=='y'||ch=='Y');return 0;}第六章、心得体会经过五天的编译原理课程设计,我终于顺利的完成该课程设计了。