c语言最全的图书管理系统程序
C语言程序课程设计图书管理系统方案
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 */添加图书类型并显示用户信息*/添加图书状态并显示用户信息。
C语言课程设计图书馆管理系统程序代码
#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语言
/*12. bookfunction.c源程序*//*** bookfunction.c***//*添加图书*/#include "c13_book.c"void BookAdd(){FILE *fp;Book consultbook;fp=fopen("book.txt","rb");/*读方式打开文件*/if(fp==NULL)fp=fopen("book.txt","wb"); /*写方式打开文件*/else/*如果有书就添加*/{fclose(fp);fp=fopen("book.txt","ab");/*追加方式打开文件*/}ClrScr();/*清屏*/printf("Intput new book num: ");/*逐个输入新图书的资料*/ gets(consultbook.num);gotoxy(2,4);printf("Input new book name: ");gets();gotoxy(2,5);printf("Please input new book's price: ");scanf("%d%*c",&consultbook.price);strcpy(consultbook.person,"");consultbook.yes=1;/*表示书存在未借出*/consultbook.next=NULL;fwrite(&consultbook,sizeof(Book),1,fp);/*块写*/fclose(fp); /*关闭文件*/ClrScr();}/*图书查询*/void BookConsult(){FILE *fp;Book consultbook;char bookname[20]; /*书名*/int flag=0,i=0;ClrScr();gotoxy(2,3);printf("Input the book name: ");gets(bookname); /*输入要查询的图书名*/fp=fopen("book.txt","rb");{ClrScr();gotoxy(2,3);printf("Error!");fclose(fp);return;}elsewhile(!feof(fp))/*查询图书资料*/{fread(&consultbook,sizeof(Book),1,fp);if(strcmp(,bookname)==0)/*如果查找到*/{ClrScr();gotoxy(2,3+i*5);printf("This book %s information as follow:",); gotoxy(2,4+i*5);printf("This book num is %s",consultbook.num);gotoxy(2,5+i*5);printf("This book's price is %d",consultbook.price);gotoxy(2,6+i*5);printf("This book's is browwed by %s",consultbook.person); gotoxy(2,7+i*5);printf("This book's state is %d",consultbook.yes);i++;flag=1; /*查找数据标志*/}}if(flag==0){ClrScr();gotoxy(2,3);printf("No found this book");}fclose(fp);}/*删除图书资料*/void BookDel(){FILE *fp;Book *head,*p,*q;char bookname[20];fp=fopen("book.txt","rb");/*读方式打开文件*/{gotoxy(2,3);printf("Error!");fclose(fp);return;}head=p=q=(Book*)malloc(sizeof(Book));/*将文件内容放入链表*/ fread(p,sizeof(Book),1,fp); /*读第一条记录*/while(!feof(fp)){q=p;p=(Book*)malloc(sizeof(Book));fread(p,sizeof(Book),1,fp); /*读记录*/q->next=p;/*新记录插入到链表的尾*/}p->next=NULL;/*最后一个结点的后继为空*/fclose(fp);ClrScr();printf("Input the book name: ");gets(bookname); /*输入图书名*/p=head;while(p!=NULL)/*按名字查找要删除的图书*/{if(strcmp(p->name,bookname)==0)/*找到要删除的图书*/{if(p==head) /*如果是第一个结点*/head=head->next;elseq->next=p->next;/*不是第一个结点*/break;}q=p; /*指针后移*/p=p->next;}fp=fopen("book.txt","wb");/*删除后从链表的头开始重新保存*/ while(head!=NULL){fwrite(head,sizeof(Book),1,fp);/*块写*/head=head->next;}fclose(fp);ClrScr();}/*借书*/void BookBorrow(){FILE *fp;Book consultbook;Member consultmember;char bookname[20],membername[20];int flag=0,mflag=0;ClrScr();gotoxy(2,3);printf("Input the mermber name: ");gets(membername); /*输入会员名*/if((fp=fopen("member.txt","rb"))==NULL)/*没找到文件*/{gotoxy(3,3);printf("Cannot open file\n!");return;}elsewhile(!feof(fp))/*查询会员资料*/{fread(&consultmember,sizeof(Member),1,fp);if(strcmp(,membername)==0){mflag=1; /*是会员标志*/break;}}fclose(fp);if(mflag==0){gotoxy(2,4);printf("You not is a member,pleas register!");/*不是会员不能借书*/ return;}gotoxy(3,5);printf("Input the book name: ");gets(bookname); /*输入图书名*/ClrScr();if((fp=fopen("book.txt","rb+"))==NULL)/*没找到文件*/{gotoxy(2,3);printf("Cannot open file\n!");return;}while(!feof(fp))/*查询图书资料*/{fread(&consultbook,sizeof(Book),1,fp);if(strcmp(,bookname)==0){if(consultbook.yes==0)/*图书已经借出的判断*/{gotoxy(2,3);printf("This book has borrowed\n!");break;}else{consultbook.yes=0; /*作借出标志*/strcpy(consultbook.person,membername);/*登记借书会员*/ fseek(fp,-1L*sizeof(Book),1);/*从当前位置前移一条记录指针*/ fwrite(&consultbook,sizeof(Book),1,fp);/*写记录*/gotoxy(2,3);printf("Borrowed succ!");flag=1;/*借出书标志*/break;}}}if(flag!=1){ClrScr();gotoxy(2,3);printf("Borrowed fail!\n");/*借书失败*/}fclose(fp);}/*还书*/void BookReturn(){FILE *fp;Book consultbook;char bookname[20];int flag=0;ClrScr();if((fp=fopen("book.txt","rb+"))==NULL)/*没找到文件*/{gotoxy(2,3);printf("cannot open file\n!");return;}printf("Input the book name: ");gets(bookname); /*输入图书名*/ClrScr();while(!feof(fp))/*查询图书资料*/{fread(&consultbook,sizeof(Book),1,fp);if(strcmp(,bookname)==0){if(consultbook.yes==0)/*图书已经借出的判断*/{consultbook.yes=1;/*作图书未借书标志,表示已还书*/strcpy(consultbook.person,"");fseek(fp,-1L*sizeof(Book),1);fwrite(&consultbook,sizeof(Book),1,fp);gotoxy(2,3);printf("Return book succ!");flag=1;break;}}}if(flag!=1)printf("Return fail!\n");fclose(fp);}/*清除屏幕*/void ClrScr(){int i,j;puttext(2,3,78,23,c);/*刚开始已经用gettext把蓝色的一块地方保存下来,现在再还原*/ gotoxy(2,3);}/*会员注册*/void MemberAdd(){FILE *fp;Member consultmember;fp=fopen("member.txt","rb");if(fp==NULL)/*如果没会员就新建*/fp=fopen("member.txt","wb");else/*如果有会员就添加*/{fclose(fp);fp=fopen("member.txt","ab");/*追加方式打开*/}ClrScr();gotoxy(2,3);printf("Intput new member name: ");/*逐个输入会员的资料*/ gets();gotoxy(2,4);printf("Input member sex: ");gets(consultmember.sex);gotoxy(2,5);printf("Please input member age: ");scanf("%d%*c",&consultmember.age);fwrite(&consultmember,sizeof(Member),1,fp);/*写入记录*/ fclose(fp);ClrScr();}/*查询会员*/void MemberConsult(){FILE *fp;Member consultmember;char membername[20];int flag=0;ClrScr();gotoxy(2,3);printf("Input the member name: ");/*输入要查询的会员名*/ gets(membername);fp=fopen("member.txt","rb");if(fp==NULL)/*没找到文件*/{ClrScr();gotoxy(2,3);printf("Error!");fclose(fp);return;}while(!feof(fp))/*查询会员资料*/{fread(&consultmember,sizeof(Member),1,fp);if(strcmp(,membername)==0)/*比较*/{ClrScr();gotoxy(2,3);printf("This member %s information as follow:",); gotoxy(2,4);printf("This member'sex is %s",consultmember.sex);gotoxy(2,5);printf("This member 's age is %d",consultmember.age);flag=1;break;}}if(flag==0){ClrScr();gotoxy(2,3);printf("No found this member!");}fclose(fp);}/*删除会员资料*/void MemberDel(){FILE *fp;Member *head,*p,*q;char membername[20];fp=fopen("member.txt","rb");if(fp==NULL)/*没找到文件*/{gotoxy(2,3);printf("Error!");fclose(fp);return;}head=p=q=(Member*)malloc(sizeof(Member));/*将文件内容放入链表*/ fread(p,sizeof(Member),1,fp);while(!feof(fp)){q=p;p=(Member*)malloc(sizeof(Member));fread(p,sizeof(Member),1,fp);/*读记录*/q->next=p;/*链入到链表的尾部*/}p->next=NULL;fclose(fp);ClrScr();printf("Input the member name: ");/*输入会员名*/gets(membername);p=head;while(p!=NULL)/*按名字查找要删除的书*/{if(strcmp(p->name,membername)==0)/*查找会员*/{if(p==head)head=head->next;/*如果是第一条记录*/elseq->next=p->next;/*不是第一条记录*/break;}q=p; /*没找到,则指针后移继续找*/p=p->next;}fp=fopen("member.txt","wb");/*删除后重新保存*/while(head!=NULL){fwrite(head,sizeof(Member),1,fp);/*块写*/head=head->next;}fclose(fp);ClrScr();}/*查询会员所借的图书*/void MemberBook(){FILE *fp;Book consultbook;Member consultmember;char bookname[20],membername[20];int flag=0,mflag=0,i=0;ClrScr();gotoxy(2,3);printf("Input the mermber name: ");/*输入会员名*/ gets(membername);if((fp=fopen("member.txt","rb"))==NULL)/*没找到文件*/ {gotoxy(3,3);printf("Cannot open file\n!");return;}elsewhile(!feof(fp))/*查询会员资料,确认会员*/{fread(&consultmember,sizeof(Member),1,fp);if(strcmp(,membername)==0){mflag=1;break;}}fclose(fp);if(mflag==0){gotoxy(2,4);printf("Not the member!");return;}ClrScr();if((fp=fopen("book.txt","rb+"))==NULL)/*没找到文件*/{gotoxy(2,3);printf("Cannot open file\n!");return;}while(!feof(fp))/*查询图书资料*/{fread(&consultbook,sizeof(Book),1,fp);gotoxy(2,3);printf("This member %s has borrowed book as follow:",membername); gotoxy(2,4);printf("********************************************");if(strcmp(consultbook.person,membername)==0)/*借阅人比较*/{gotoxy(2,5+i*4);printf("Book name is %s",);gotoxy(2,6+i*4);printf("This book num is %s",consultbook.num);gotoxy(2,7+i*4);printf("This book's price is %d",consultbook.price);printf("\n");i++;flag=1;}}if(flag!=1)。
图书管理系统 C语言程序
#include<stdio.h>/*输入输出函数*/#include<string.h>/*字符串操作函数*/#include<stdlib.h>/*数值转换函数*///#include<conio.h>/*控制台输入输出函数*/#define MAX 100/*宏定义,参数为形参*/struct book/*图书信息结构定义*/{intnum;/*图书编号*/char name[100];/*书名*/char author[100];/*作者名*/char fn[100];/*分类号*/char place[100];/*出版单位*/char day[100];/*出版时间*/float money;/*价格*/}book[MAX],temp;main()/*主函数*/{void Input();/*输入*/void Output();/*输出*/void Find();/*查找*/void Delete();/*删除*/void Change();/*修改*/void Paixu();/*排序*/int n;printf("\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※欢迎来河南工业大学图书信息管理系统※\n");printf("※※\n");printf("※※\n");printf("※★1.图书管理员系统★※\n");printf("※※\n");printf("※★2.读者系统★※\n");printf("※※\n");printf("※▲退出(输入其他数字)※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("请输入选择项(1-2):");scanf("%d",&n);printf("\n\n\n\n");if(n==1){int m;printf("请输入图书管理系统的密码:");scanf("%d",&m);if(m==1002){for(;;)/*省略"初始化"、"条件表达式"和"增量"*/{int s;printf("\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※欢迎来河南工业大学图书信息管理系统※\n");printf("※※\n");printf("※※\n");printf("※主菜单※\n");printf("※※\n");printf("※★1.图书信息录入★※\n");printf("※※\n");printf("※★2.图书信息浏览★※\n");printf("※※\n");printf("※★3.图书信息查询★※\n");printf("※※\n");printf("※★4.图书信息删除★※\n");printf("※※\n");printf("※★5.图书信息修改★※\n");printf("※※\n");printf("※★6.图书排序★※\n");printf("※※\n");printf("※★7.退出系统★※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n");printf("请输入选择项(1-7):");scanf("%d",&s);printf("\n\n\n\n");if(s>0&&s<8){switch(s){case 1:Input();break;case 2:Output();break;case 3:Find();break;case 4:Delete();break;case 5:Change();break;case 6:Paixu();break;case 7:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※谢谢使用! ※\n");printf("※再见! ※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");exit(0);}}}}elseprintf("密码错误,请您重新进入系统\n");return 0;}else if(n==2){int t;printf("请输入读者密码:");scanf("%d",&t);if(t==.320){for(;;)/*省略"初始化"、"条件表达式"和"增量"*/{int h;printf("\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※欢迎来河南工业大学图书服务系统※\n");printf("※※\n");printf("※※\n");printf("※主菜单※\n");printf("※※\n");printf("※★1.图书信息浏览★※\n");printf("※※\n");printf("※★2.图书信息查询★※\n");printf("※※\n");printf("※★3.图书排序★※\n");printf("※※\n");printf("※★4.退出系统★※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n");printf("请输入选择项(1-4):");scanf("%d",&h);printf("\n\n\n\n");if(h>0&&h<5){switch(h){case 1:Output();break;case 2:Find();break;case 3:Paixu();break;case 4:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※谢谢使用! ※\n");printf("※再见! ※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");exit(0);}}}}elseprintf("密码错误,请您重新进入系统\n");return 0;}else return 0;}void Find()/*查找*/{int i;intchoose,t;charans[100];do{printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※ 1.按书名查找※\n");printf("※ 2.按作者名查找※\n");printf("※▲返回主菜单(输入其他数字)※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("输入选项代号:");scanf("%d",&choose);if(choose==1){printf("输入所查书名:\n");scanf("%s",ans);t=-1;if(choose==1){for(i=0;i<MAX;i++)if(strcmp(ans,book[i].name)==0){t=i;printf("%d %s %s %s %s %s %2f\n",book[t].num,book[t].name,book[t].author,bo ok[t].fn,book[t].place,book[t].day,book[t].money);}}if(t==-1)printf("不存在该信息\n");}else if(choose==2){printf("输入所查作者名:\n");scanf("%s",ans);t=-1;if(choose==2){for(i=0;i<MAX;i++)if(strcmp(ans,book[i].author)==0){t=i;printf("%d %s %s %s %s %s %2f\n",book[t].num,book[t].name,book[t].author,bo ok[t].fn,book[t].place,book[t].day,book[t].money);}}if(t==-1) printf("不存在该信息\n");}else return;}while(1);}void Output()/*输出*/{FILE *fp;int i;fp=fopen("book","rb");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 图书列表\n");printf("-----------------------------------------------------------\n");printf("图书编号书名作者名分类号出版单位出版时间价格\n");printf("-----------------------------------------------------------\n");for(i=0;fread(&book[i],sizeof(struct book),1,fp)==1;i++){printf("%6d %8s %8s %8s %8s %8s %10.2f\n",book[i].num,book[i].name,book[i]. author,book[i].fn,book[i].place,book[i].day,book[i].money);}fclose(fp);}void Input()/*输入*/{FILE *fp;int n;fp=fopen("book","ab");/*建立一个新二进制文件*/for(n=0;n<MAX;n++){printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++);scanf("%d",&n);if(n==-1){fclose(fp);return;/*默认不返回值*/}else{printf("请输入图书编号书名作者名分类号出版单位出版时间价格\n");scanf("%d%s%s%s%s%s%f",&book[n].num,book[n].name,book[n].author,book[n ].fn,book[n].place,book[n].day,&book[n].money);fwrite(&book[n],sizeof(struct book),1,fp);/*写入文件*/}}fclose(fp);}void Delete()/*删除*/{FILE *fp;inti,flag,n,s,j;fp=fopen("book","rb+");rewind(fp);printf(" 图书列表\n");printf("-----------------------------------------------------------\n");printf("图书编号书名作者名分类号出版单位出版时间价格\n");printf("-----------------------------------------------------------\n");for(i=0;fread(&book[i],sizeof(struct book),1,fp)==1;i++){printf("%6d %8s %8s %8s %8s %8s %10.2f\n",book[i].num,book[i].name,book[i].auth or,book[i].fn,book[i].place,book[i].day,book[i].money);printf("\n");}n=i;printf("输入待删除图书编号:\n");scanf("%d",&s);for(i=0,flag=1;flag&&i<n;i++){if(s==book[i].num){for(j=i;j<n-1;j++){book[j].num=book[j+1].num;strcpy(book[j].name,book[j+1].name);strcpy(book[j].author,book[j+1].author);strcpy(book[j].fn,book[j+1].fn);strcpy(book[j].place,book[j+1].place);strcpy(book[j].day,book[j+1].day);book[j].money=book[j+1].money;}flag=0;}}if(!flag)n=n-1;elseprintf("没有此号\n");fp=fopen("book","wb");for(i=0;i<n;i++)fwrite(&book[i],sizeof(struct book),1,fp);fclose(fp);fp=fopen("book","r");printf(" 图书列表\n");printf("-----------------------------------------------------------\n");printf("图书编号书名作者名分类号出版单位出版时间价格\n");printf("-----------------------------------------------------------\n");for(i=0;i<n;i++){fread(&book[i],sizeof(struct book),1,fp);printf("%6d %8s %8s %8s %8s %8s %10.2f\n",book[i].num,book[i].name,book[i].auth or,book[i].fn,book[i].place,book[i].day,book[i].money);printf("\n");}fclose(fp);}void Change()/*修改*/{FILE *fp;inti,num,n;int flag=0;printf("请输入要修改的图书编号:");scanf("%d",&num);for(i=0;i<=MAX;i++)if(book[i].num==num){printf(" 图书列表\n");printf("-----------------------------------------------------------\n");printf("图书编号书名作者名分类号出版单位出版时间价格\n");printf("-----------------------------------------------------------\n");printf("%6d %8s %8s %8s %8s %8s %10.2f\n",book[i].num,book[i].name,book[i].auth or,book[i].fn,book[i].place,book[i].day,book[i].money);printf("-----------------------------------------------------------\n\n");n=i;flag=1;break;}if(flag==0){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※输入错误! ※\n");printf("※请返回! ※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");return;}printf("\n\n\n");fp=fopen("book","rb+");fseek(fp,n*sizeof(struct book),0);printf("图书编号书名作者名分类号出版单位出版时间价格\n");scanf("%d%s%s%s%s%s%f",&book[n].num,book[n].name,book[n].author,book[n].fn, book[n].place,book[n].day,&book[n].money);fwrite(&book[i],sizeof(struct book),1,fp);fclose(fp);fp=fopen("book","rb");printf(" 图书列表\n");printf("-----------------------------------------------------------\n");printf("图书编号书名作者名分类号出版单位出版时间价格\n");printf("-----------------------------------------------------------\n");for(i=0;fread(&book[i],sizeof(struct book),1,fp)==1;i++){printf("%6d %8s %8s %8s %8s %8s %10.2f\n",book[i].num,book[i].name,book[i].auth or,book[i].fn,book[i].place,book[i].day,book[i].money);}printf("-----------------------------------------------------------\n\n");fclose(fp);}void Paixu()/*排序*/{FILE *fp;inti,max,s;fp=fopen("book","rb");for(s=0;fread(&book[s],sizeof(struct book),1,fp)==1;s++);for(i=0;i<s-i;i++){if(book[i].money>book[i+1].money){max=i;temp=book[i];book[i]=book[i+1];book[i+1]=temp;}}printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 图书列表\n");printf("-----------------------------------------------------------\n");printf("图书编号书名作者名分类号出版单位出版时间价格\n");for(i=0;i<s;i++){printf("%6d %8s %8s %8s %8s %8s %10.2f\n",book[i].num,book[i].name,book[i]. author,book[i].fn,book[i].place,book[i].day,book[i].money);}printf("-----------------------------------------------------------\n");getchar();}。
图书信息管理系统c语言程序设计流程图
图书信息管理系统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语言)课程设计报告题目:图书管理系统学院:专业:班级:学号:姓名:指导教师:设计日期:2013年06月24日一、选题背景:设计一个图书管理系统,管理员通过登陆账号来进行下一步,使用错误账号和密码会被视为非法登陆。
图书信息包括:每种图书都有书名、ISBN、一名或多名作者(译者)、出版社、定价和内容简介等;读者信息包括:借书证记录有借阅者的姓名、密码、所在单位和类别等;读者凭借书证借书二、设计思想:(1)整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。
主要实现了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。
(2)、Cbook();这是一个指针函数,它主要实现了链表的创建,并且在创建过程中从文件读取信息到链表中,以用于后面其他函数的操作。
它返回的时一个单向链表的头。
其他函数调用时只需调用它返回的头即可。
(3)、mainmenu();、menu1();、glm enu();、cxmenu();、jhmenu();这五个函数时整个图书管理系统的全部菜单函数,mainmenu();为系统主界面,进入时可选择进入程序和退出程序。
menu1();为进程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。
glmenu();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。
cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。
jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。
操作完成后按提示信息进行文件的保存操作。
三、程序流程图会员登陆系统系统管理界面收银系统管理系统报表系统退出系统四、主要解决问题的方法及技术关键通过自己定义的函数和声明一个结构,主要方法是先使用int函数定义,不同的选择进入不同的定义函数,通过for语句进行判断,然后使用heart数组的各种方式打开此文件,然后通过while函数和for函数关闭文件,在不同的取用数值里,分别使用for,while语句进行判断是否进行下条语句。
c语言图书管理系统
int86(0x16, &rg,&rg);
return rg。h。ah;
}
int choose(int bot,int top)/*根据Y的值选择操作*/
{
int ky,y = 7;
gotoxy(30,bot);
do
{
ky = key();
switch(ky)
{
case Key_UP:
gotoxy(x + 1, y + high - 3);
for (i = 1; i < width - 1; i++)
{
putchar(0xc4);
}
gotoxy(x + width—1,y + high —1);
putchar(0xd9);
}
int key()/*读键盘*/
{
union REGS rg;
int halfw(int sum,bbasic binfo[100],char *find);
void sta();
void blist();
void bmoney();
int main(void)
{
menu();
}
void menu()
{
int y;
_window();/*显示窗口*/
words();/*显示菜单文字*/
gotoxy(30,16);
cprintf(”Book Statistic");
gotoxy(30,19);
cprintf(”Exit”);
gotoxy(35,22);
textcolor(LIGHTGRAY);
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语言课程设计图书馆管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程基础,能够运用C语言设计简单的图书馆管理系统。
具体分为三个维度:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.技能目标:学生能够运用C语言进行程序设计,具备编写、调试和运行C语言程序的能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生的创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础,以及图书馆管理系统的项目实践。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史、特点和基本语法。
2.第二章:数据类型和运算符,学习基本数据类型、字符串、运算符及其优先级。
3.第三章:控制结构,学习条件语句、循环语句和跳转语句。
4.第四章:函数,学习函数的定义、声明和调用,以及常用标准库函数。
5.第五章:数组和字符串,学习一维数组、多维数组、字符串的基本操作。
6.第六章:指针,学习指针的概念、运算和应用。
7.第七章:结构体和文件,学习结构体的定义和应用,以及文件的读写操作。
8.第八章:图书馆管理系统项目实践,运用所学知识设计并实现一个简单的图书馆管理系统。
三、教学方法本课程采用多种教学方法相结合的方式,包括:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.案例分析法:通过分析典型的图书馆管理场景,引导学生运用C语言进行程序设计。
3.实验法:让学生动手编写、调试和运行C语言程序,提高学生的实践能力。
4.小组讨论法:分组进行项目实践,培养学生的团队合作意识和问题解决能力。
四、教学资源1.教材:《C程序设计语言》(K&R)或《C语言 Primer》(第五版)。
2.参考书:《C语言编程思想》、《C语言深度探索》。
3.多媒体资料:课件、教学视频、在线教程。
图书馆管理系统C语言程序设计
HUNAN UNIVERSITYC语言程序训练报告【设计目的】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等.图书信息管理系统,使之能提供以下功能: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.no,c1,c2,c3,b);if(i){ 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=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 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: ;}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){ case 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("请输入姓名:\n");gets();default: ;}system("cls");}void eros(int i) //错误函数{ 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;case -12: printf("error12 !您已经归还此书\n\n");break;case -13: printf("error13 !您所增加的图书编号已存在\n\n");break;case -14: printf("error14 !搜索不到此书的相关信息\n\n");break;case -15: printf("error15 !搜索不到该作者的信息\n\n");break;case -16: printf("error16 !打不开文件,保存失败\n\n");break;case -17: printf("error17 !该图书信息已存在\n\n");break;case -18: printf("error18 !您没有借过这本书\n\n");break;case -19: printf("error19 !您已经借阅了这本书,不能再借\n\n");break;; case -20: printf("error20 !抱歉,图书已经借完了\n\n");break;case -21: printf("error21 !账号已存在\n\n") ; break;case -22: printf("error22 !还有图书未还,不能删除该条信息\n\n");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 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;case 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();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;case 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}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; //当文件打不开时返回-1}else{j=0;while(!feof(fp)){fscanf(fp,"%s %s %s",ad[j].name,ad[j].no,ad[j].key); //将文档里面的数据格式化读取到结构体数组里面j++;}j=j-1;}fclose(fp);fp=fopen("book.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{k=0;while(!feof(fp)){fscanf(fp,"%d %s %s %s %d %d ",&bb[k].bh,bb[k].name,bb[k].classic,bb[k].writer,&bb[k].zn,&bb[k].jn); //将文档里面的数据格式化读取到结构体数组里面k++;}k=k-1;}fclose(fp);fp=fopen("show.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{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);return 0; //当操作全部正确时返回0}int xzc(char no[12],char key1[10],char key2[10],char name[10]) //读者注册函数{ int x=0;for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断读者输入的账号与结构体里面的账号是否相同{return -21;break;}if(x==i && strcmp(no,stu[x].no))//判断读者输入的账号与结构体里面的账号是否相同{if(!strcmp(key1,key2)) //判断读者两次输入的密码是否一致{i=i+1;strcpy(stu[i].name,name);strcpy(stu[i].no,no);strcpy(stu[i].key,key1);fp=fopen("reader.txt","a"); //对文件以写的方式将注册的信息保存到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%s\t\t%s\t\t%s\n",stu[i].name,stu[i].no,stu[i].key);}fclose(fp);return 0;}else{return -5;}}}}int exam(char no[10],char key[10],int n) //密码账号检验函数{ int x;if(n==0) //对读者的密码和账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断该账号是否存在{if(!strcmp(key,stu[x].key)) //当账号存在时判断与之相应的密码是否相同{return 0;break;}else{return -4;break;}}if(x==i && strcmp(no,stu[x].no)){return -3;}}}if(n==1) //对管理员的密码账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,ad[x].no)) //判断该账号是否存在{if(!strcmp(key,ad[x].key)) //判断与之相应的密码是否存在{return 0;break;}else{return -4;break;}}if(x==j && strcmp(no,ad[x].no)){return -3;}}}}int zj(struct book b) //管理员增加图书信息函数{ int x;for(x=0;x<=k;x++){ if(bb[x].bh==b.bh) //判断所增加的图书编号是否已存在{return -13;break;}if(!strcmp(,bb[x].name)&&!strcmp(b.writer,bb[x].writer)) //判断所增加的图书是否存在{ return -17;break;}if(x==k){ if(strlen(bb[0].name)==0) //判断文档的第一行是否为空k=k;elsek=k+1;bb[k].bh=b.bh; //将所增加的图书信息添加到结构体里面strcpy(bb[k].name,);strcpy(bb[k].classic,b.classic);strcpy(bb[k].writer,b.writer);bb[k].zn=b.zn;bb[k].jn=b.jn;fp=fopen("book.txt","a"); //将增加的图书信息追加到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[k].bh,bb[k].name,bb[k].classi c,bb[k].writer,bb[k].zn,bb[k].jn);}fclose(fp);return 0;}}}int sc(int bh) //管理员删除图书信息函数{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断所删除图书的编号是否存在{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{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].classi c,bb[x].writer,bb[x].zn,bb[x].jn);}}fclose(fp);return 0;break;}}}int mp(char no[12],char key1[10],char key2[10],char key3[10],int n) //密码修改函数{ int x;if(n==0) //读者密码修改{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //定位读者账号位置{if(!strcmp(stu[x].key,key1)) //判断输入的原密码是否正确{ if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(stu[x].key,key3);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);return 0;}else{return -5;}}elsereturn -11;}}}if(n==1) //管理员密码修改{for(x=0;x<=j;x++){if(!strcmp(no,ad[x].no)) //定位管理员账号位置{if(!strcmp(key1,ad[x].key)) //判断输入的原密码是否正确{if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(ad[x].key,key3);fp=fopen("ad.txt","w+"); //将修改后的信息保存在文件里面 if(fp==NULL)return -16;else{for(x=0;x<=j;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",ad[x].name,ad[x].no,ad[x].key);}fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}}int xg(struct book b) //管理员修改图书信息函数{ int x;if(strlen()==0) //判断所输入的要修改的图书名字是否为空{return -7;}else{if(strlen(b.writer)==0) //判断所输入的要修改的图书作者是否为空{return -8;}else{for(x=0;x<=k;x++){if((bb[x].bh==b.bh)) //定位要修改的图书编号位置{strcpy(bb[x].name,); //将修改后的信息保存在结构体里 strcpy(bb[x].classic,b.classic);strcpy(bb[x].writer,b.writer);bb[x].zn=b.zn;bb[x].jn=b.jn;fp=fopen("book.txt","w+"); //将修改后的所有信息保存在文件里if(fp==NULL)return -16;else{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].classi c,bb[x].writer,bb[x].zn,bb[x].jn);}}fclose(fp);return 0;}}}}}void copy(int bh) // 按编图书编号将图书信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh){strcpy(,bb[x].name);strcpy(bk.classic,bb[x].classic);strcpy(bk.writer,bb[x].writer);bk.zn=bb[x].zn;bk.jn=bb[x].jn;bk.bh=bb[x].bh;}}}void copy2(char no[12]) //按管理员账号将管理员信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=j;x++){if(!strcmp(ad[x].no,no)){strcpy(,ad[x].name);strcpy(aa.key,ad[x].key);}}}void copy3(char no[12]) //按读者账号将读者信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=i;x++){if(!strcmp(stu[x].no,no)){strcpy(,stu[x].name);strcpy(rr.key,stu[x].key);}}}int js(int bh,char no[12]) //借书函数{ int x,y,z;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断借书编号是否存在{if(bb[x].zn>0) //判断在馆数是否为0{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].name1,stu[y].name); //将借书后的信息保存在结构体数组里面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++){if((ss[y].bh==bh )&&!strcmp(ss[y].no,no)) //定位与输入的编号和账号一致的借书记录{if(ss[y].o==2) //判断是否已借过该书return -19;else{--bb[x].zn; //修改借书后的信息++bb[x].jn;ss[y].o=2;}break;}else{if(y==s){s++;for(z=0;z<=i;z++){if(!strcmp(stu[z].no,no)) //定位读者信息 {bb[x].zn--; //修改借书后的信息bb[x].jn++;strcpy(ss[s].name1,stu[z].name);strcpy(ss[s].name2,bb[x].name);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);fp=fopen("show.txt","w+"); //将借书记录写入文件if(fp==NULL)return -16;else{for(y=0;y<=s;y++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[y].name1,ss[y].no,ss[y].bh,ss[y].name2,ss[y].writer,ss[y].o);} }fclose(fp);return 0;}elsereturn -20;}}}int hs(int bh,char no[12]) //还书函数{ int x,p;for(x=0;x<=s;x++){if(ss[x].bh==bh && !strcmp(ss[x].no,no)) //判断其借书记录是否存在{ if(ss[x].o==2) //判断该书是否被借过{ 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+"); //将还书后的所有图书信息重新写入文件 if(fp==NULL)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].classi c,bb[p].writer,bb[p].zn,bb[p].jn);}}fclose(fp);fp=fopen("show.txt","w+"); //将还书后的所有借书记录重新写入文件 if(fp==NULL)return -16;else{for(p=0;p<=s;p++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[p].name1,ss[p].no,ss[p].bh,ss [p].name2,ss[p].writer,ss[p].o);}}fclose(fp);return 0;}else{return -12;}}elseif(x==s)return -18;}}void paixu() //对图书按照编号从小到大的顺序进行排列{ int x,flag;struct book a;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].classi c,bb[x].writer,bb[x].zn,bb[x].jn);fclose(fp);}5.登陆界面所有函数源代码为// picture.h 登陆界面所有函数void pica(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:管理员\n",aa.no,);printf("------------------------------------------------------------------------\n\n");}void picb(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:读者\n",rr.no,);printf("------------------------------------------------------------------------\n\n");}void pic0() //登陆界面{ printf("\n\t\t\t欢迎登陆湖南大学图书管理系统\n");printf("------------------------------------------------------------------------\n\n");printf("1.登陆\n2.读者注册\n3.退出系统\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=1;break;case 2: n=45;break;case 3: n=50;break;default:;}}void pic1() //管理员登陆界面{ int i;printf("\n\t\t\t\t登陆\n");printf("------------------------------------------------------------------------\n\n");printf("1.管理员登陆\n2.读者登陆\n3.返回系统界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs2(1,1,0);i=exam(aa.no,aa.key,1);if(i){ eros(i);n=3;}else n=2;break;case 2: inputs3(1,1,0);i=exam(rr.no,rr.key,0);if(i){ eros(i);n=30;}else n=29;break;case 3: n=0;break;default: ;}}void pic2() //管理员管理界面{ copy2(aa.no);pica();printf("1.增加图书\n2.修改图书\n3.删除图书\n4.查看图书信息\n");printf("5.修改密码\n6.返回到系统登陆界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=4;break;case 2: n=8;break;case 3: n=15;break;case 4: n=21;break;case 5: n=25;break;case 6: n=0;break;default: ;}}void pic3() //管理员登陆错误提示{ printf("1.返回重新输入\n2.返回系统登陆界面\n");examine(&x,1);switch(x){ case 1: n=1;break;case 2: n=0;break;default: ;}}void pic4() //管理员添加图书界面{ pica();printf("1.录入新的图书信息\n2.返回上一层\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs1(1,1,1,1,1);n=5; break;case 2: n=2;break;default: ;}}void pic5() //添加图书确认界面{ int i;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.z n,bk.jn);printf("------------------------------------------------------------------------\n\n");printf("1.录入以上信息\n2.返回重新输入图书信息\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: i=zj(bk);if(i){ eros(i);n=7;}else n=6;break;case 2: n=4;break;default: ;}}void pic6() //添加图书成功提示界面{ printf("添加图书成功!!\n");printf("1.返回继续添加图书\n2.返回管理图书界面\n");examine(&x,1);switch(x){ case 1: n=4;break;case 2: n=2;break;default: ;}}void pic7() // 添加图书失败提示界面{ printf("1.重新输入图书信息\n2.返回管理图书界面\n");examine(&x,1);switch(x){ case 1: n=4;break;case 2: n=2;break;default: ;}}void pic8() //修改图书界面{ pica();printf("1.进行修改图书操作\n2.返回管理图书界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=9;break;case 2: n=2;break;default: ;}}void pic9() //输入编号以选择修改相应的图书{ int i;pica();printf("以下是在馆所有图书信息:\n\n");gck23();printf("------------------------------------------------------------------------\n\n");printf("1.输入编号修改图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,0);switch(x){ case 1: inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){ eros(i);n=11;}else{ n=10;}break;case 2: system("cls");n=2;break;default: system("cls");}}void pic10() //按需求修改图书界面{ pica();printf("编号为%d的图书信息:\n\n",bk.bh);copy(bk.bh);bh2(bk.bh);printf("------------------------------------------------------------------------\n\n");printf("1.修改书名\n2.修改作者名字\n3.修改图书在馆的数量\n4.修改图书所属的类别\n");printf("5.修改图书所有信息\n6.返回上一层选择其他编号的书\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs1(0,1,0,0,0);n=12;break;case 2: inputs1(0,0,1,0,0);n=12;break;case 3: inputs1(0,0,0,1,0);n=12;break;case 4: inputs1(0,0,0,0,1);n=12;break;case 5: inputs1(0,1,1,1,1);n=12;break;case 6: n=9;break;default: ;}}void pic11() //获取相应的图书失败提示界面{ printf("1.重新输入图书编号\n2.返回图书管理界面\n");examine(&x,1);switch(x){ case 1: n=9;break;case 2: n=8;break;default: ;}}void pic12() //修改图书信息确认界面{ int i;pica();printf("你要修改的图书信息为:\n\n");bh2(bk.bh);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.返回选择修改其他信息\n3.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: i=xg(bk);if(i){ eros(i);n=14;}else n=13;break;case 2: n=10;break;case 3: n=8;break;default: ;}}void pic13() //修改图书提示成功界面{ printf("修改图书成功!!\n");printf("1.返回继续修改图书\n2.返回管理图书界面\n");examine(&x,1);switch(x){ case 1: n=8;break;case 2: n=2;break;default: ;}}void pic14() //修改图书失败提示界面{ printf("1.重新输入图书修改信息\n2.图书管理界面\n");examine(&x,1);switch(x){ case 1: n=10;break;case 2: n=8;break;default: ;}}void pic15() //删除图书选择界面{ pica();printf("1.进行删除图书操作\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=16; break;case 2: n=2;break;default: ;}}void pic16() //输入相应编号删除图书{ int i;pica();;printf("以下是在馆所有图书信息:\n\n");gck23();printf("------------------------------------------------------------------------\n\n");printf("1.输入编号删除图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,0);switch(x){ case 1: inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){ eros(i);n=18;}else{n=17;system("cls");};break;case 2: system("cls");n=2;break;default: system("cls"); ;}}void pic17() //删除图书确认界面{ int i;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){ case 1: i=sc(bk.bh);if(i){ eros(i);n=20;}else n=19;break;case 2: n=2;break;default: ;}}void pic18() //获取特定编号图书失败界面{ printf("1.返回重新输入图书编号\n2.返回选择不同类别的图书\n");examine(&x,1);switch(x){ case 1: n=16;break;case 2: n=15;break;default: ;}}void pic19() //删除图书成功提示界面{ printf("删除图书操作成功!!!\n");printf("1.返回选择其他的图书\n2.返回管理图书界面\n");examine(&x,1);switch(x){ case 1: n=15;break;case 2: n=2;break;default: ;}}void pic20() // 删除图书失败提示界面{ printf("1.返回重新输入图书编号\n2.返回重新选择类别\n");examine(&x,1);switch(x){ case 1: n=16;break;case 2: n=15;break;default: ;}}void pic21() //管理员查看借阅记录界面。
图书馆管理系统(C语言程序设计)
图书管理系统/*图书数据由编号、书名、出版社、单价和图书状态(库存用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后面的改变的是文本背景色。
图书管理系统c语言
图书管理系统C语言1. 简介图书管理系统是一种用于管理图书馆藏书和借阅记录的软件系统。
它通常包括图书的录入、借阅、归还、查询等功能,能够提高图书馆的工作效率和服务质量。
本文将使用C语言编写一个简单的图书管理系统,实现基本的图书信息录入、修改、查询、借阅、归还等功能。
2. 功能实现2.1 数据结构我们首先需要定义合适的数据结构来存储图书信息和借阅记录。
以下是一个简单的数据结构示例:struct Book {int id; // 图书编号char title[100]; // 图书标题char author[50]; // 图书作者char category[50]; // 图书分类int isBorrowed; // 图书是否已借阅,0表示未借阅,1表示已借阅char borrowerName[100]; // 借阅者姓名// 可根据需求扩展其他字段};struct BorrowRecord {int bookId; // 图书编号char borrowerName[100]; // 借阅者姓名char borrowDate[20]; // 借阅日期char returnDate[20]; // 归还日期// 可根据需求扩展其他字段};2.2 图书信息录入和修改我们可以通过实现相应的函数来实现图书信息的录入和修改。
以下是一个简单的示例:void addBook(struct Book *library, int *count) {// 输入图书信息,将其存入library数组中,同时更新count}void updateBook(struct Book *library, int count, int bookId) { // 根据图书编号bookId,更新library数组中对应图书的信息}2.3 图书查询我们可以根据图书的不同字段来实现不同的查询功能,比如根据图书标题、作者、分类等进行模糊查询,或根据图书编号进行精确查询。
图书管理系统的设计(C语言)
图书管理系统设计图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等功能描述: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语言)
C程序设计报告图书管理系统设计题目:图书管理系统设计要求:利用C语言实现小型的图书管理系统,能够满足基本的借阅功能。
1.1问题提出:本人计划编写一个图书管理系统,主要是提供具有图书管理的程序。
本人的主要工作就是,编写出一个正确的程序,使其正常运行,实现图书管理功能!1.2本系统主要会涉及的知识点:结构,数组,循环,函数,判断,指针等语句的应用。
1.3主要功能要求:功能分析:从图书馆的管理功能上分析,图书馆一共有三个方面的需求。
1 对用户的管理。
2 对图书的管理。
3 对借阅的管理。
因此,本系统也从以上三个方面进行了设计,以实现上面的功能。
具体分析如下1 注册用户管理(以学校为样体,用户为学生)学生信息包括:学生ID,学生姓名,学生学号,所在院系,所在班级,性别,年龄。
(1)学生加入需要依次输入学生ID,学生姓名,学生学号,所在院系,所在班级,性别,年龄。
不能为空。
(2)学生删除此处用一个查询功能,是你方便的找到要删除的学生,同时显示该学生的信息,并要求删除确认。
(3)学生信息修改使用系统提供的查找功能可以迅速的找到要修改的学生,并提示修改的信息。
2 图书信息管理图书信息包括:图书ID,图书名字,图书作者,在馆状态。
(1)新书入库需要填入图书ID,图书名字,图书作者,在馆状态;其中在馆状态需要填:true,表示图书在馆。
(2)旧书删除对不用的旧书可以执行该操作。
可以使用系统提供的查找符合条件的图书,并可以同步显示该图书的信息,以便确认所删图书的正确性。
(3)图书信息修改当图书的信息发生改变的时候可以使用该功能来更新图书的信息,以保证图书信息的正确性。
操作是只要用系统提供的查找功能找到该图书,就可以在信息显示栏中对图书信息做修改。
3 图书借阅管理:图书借阅信息包括:借阅号,图书ID,学生ID,是否借出,借出日期,是否归还,归还日期。
(1)图书借阅:需要图书ID,学生ID。
(2)图书归还:需要图书ID,学生ID。
c语言图书馆管理系统(codeblocks版)
printf("\t--------PASS: %40s--------\n", p1->pass);
printf("\t--------LEVEL:%40d--------\n", p1->level);
/*
*图书馆管理系统
*@author琴卓
*@time 2015-12-10
*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<windows.h>
#define PASS_LEN 20 //密码长度
int lendsum;
struct user *next;
}user;
//用户结构体简写为bokk
typedef struct book {
char name[20];
char author[20];
char publish[20];
char year[10];
char ISBN[40];
char state[10];
char choice;
//程序入口
void main()
{
system("color 8b");
system("mode con cols=100 lines=50");
printf("\t\t\t图书馆系统细则:\n\t\t1.新用户注册由系统管理员操作\n\t\t2.图书由图书管理员负责\n\t\t3.普通用户最多借3本书为期30天,可续借一次,\n\t\t超期不换将每天扣除0.1元,超过10元账户将冻\n\t\t结,届时无法完成登录,需要找系统管理员解冻\n\t\t4.密码输入支持退格,访问级别1代表普通用户\n\t\t5.单项数据输入不支持空格\n\t\t6.程序每关闭开启一次经过6天\n");
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目名称:图书管理系统算法分析:1用结构体标出信息系统的成员:图书书号,书名,作者姓名,出版社,价格2 利用c语言的文件知识将系统的信息存放在c盘下的“project choose.txt”的文件夹下3 定义各个子函数(1)定义输入信息函数,将图书信息按一定格式用scanf函数输入(统计M本的信息);(2)定义输出函数,每3个表一页直到最后一个;(3)定义信息查询函数。
a,定义按书号查询函数,如果输入的数字等于图书编号则输出要查询的信息;b,定义按姓名查询函数,如果输入的姓名字符串等于其中一个作者姓名字符串则输出信息;c,定义按出版社名称查找函数,如果输入的字符串等于其中出版社名称,则输出该信息; e,定义查找总函数,输入一个数选择查找方式,1-4分别对应调用abc四个函数。
(4)定义删除信息函数。
输入的数字作为要删除的图书编号,输出要删除的图书信息后选择是否删除,删除后将第g+1个的信息赋给第g个,输出删除后的信息表。
(5)定义信息修改函数。
输入的数字等于要修改的图书编号,输出要修改的图书信息后选择是否修改,用switch,case语句选择要修改的项目,输入n,y决定是否继续直到不继续修改,输出图书信息。
(6)定义信息统计函数。
输入一个字符串作为出版社,比较M 本书的出版社字符串是否等于输入的字符串,统计相等的个数n输出。
(7)定义图书编号排序函数。
用冒泡排序法将M本的书的图书编号按从大到小的顺序排列后输出。
4 定义主函数。
调用读取文件函数,输入数字1-5分别对应调用修改图书信息函数,删除图书信息函数,查找图书信息函数,统计图书信息函数,图书排行信息函数,0表示退出系统。
最后调用保存文件函数。
结束程序。
流程设计:代码设计:#include<stdio.h>#include<stdlib.h>#include<string.h>#define M 2#define PAGE 3/*图书结构体类型*/typedef struct{int num; /*图书号*/char name[20]; /*书名*/char zuozhe[20]; /*作者姓名*/char chubanshe[20]; /*出版社*/int price; /*价格*/}BOOKS;int read_file(BOOKS books[]){ FILE *fp;int i=0;if((fp=fopen("project choose.txt","rt"))==NULL){ printf("\n\n*****库存文件不存在!请创建");return 0;}while(feof(fp)!=1){ fread(&books[i],sizeof(BOOKS),1,fp);if(books[i].num==0)break;elsei++;}fclose(fp);return i;}void save_file(BOOKS books[],int sum){ FILE *fp;int i;if((fp=fopen("project choose.txt","wb"))==NULL){ printf("读文件错误!\n");return;}for(i=0;i<sum;i++)if(fwrite(&books[i],sizeof(BOOKS),1,fp)!=1)printf("写文件错误!\n");fclose(fp);}/*输入模块*/int input(BOOKS books[]){ int i=0;printf("\n\n 录入图书信息(最多%d 种)\n",M);printf("----------------------------------------------------\n");do{ printf("\n 第%d本图书",i+1);printf("\n 图书编号:");scanf("%d",&books[i].num); if(books[i].num==0) break;printf("\n 图书名称:");scanf("%s",books[i].name);printf("\n 作者:");scanf("%s",books[i].zuozhe);printf("\n 出版社:");scanf("%s",&books[i].chubanshe);printf("\n 图书价格:");scanf("%d",&books[i].price);i++;}while(i<M);printf("\n --%d种图书信息输入完毕!--\n",i);printf("\n 按任意键返回主菜单!");getchar();return i;}/*输出模块*/void output(BOOKS books[]){int i=0,j=0,page=1;printf("\n\n --图书信息表-- 第%d页\n\n",page);printf("图书编号----图书名称-----作者----- 出版社-----图书价格\n");printf("-------------------------------------------------------\n");do{ if(books[i].num!=0){ j++;if(j%PAGE!=0){ printf("%4d %10s %10s %10s %8d \n",books[i].num,books[i].name,books[i].zuozhe, books[i].chubanshe,books[i].price);printf("------------------------------------------------------\n");}else{ printf("按任意键继续!");getchar();printf("\n\n --图书信息表-- 第%d页\n\n",++page);printf("图书编号--图书名称--作者-- 出版社--图书价格\n");printf("------------------------------------------\n");printf("%4d %10s %10s %10s %8d \n",books[i].num,books[i].name,books[i].zuozhe, books[i].chubanshe,books[i].price);printf("---------------------------------------------\n");}}i++;}while(books[i].num!=0);printf("按任意键返回主菜单!");getchar( );}/*给定编号,作者,出版社查找信息模块*/void find_by_num(BOOKS books[],int sum){ int i,find_num;printf("\n 请输入要查找的图书编号:");scanf("%d",&find_num);for(i=0;i<sum;i++)if(books[i].num==find_num){printf("这是您所查找到的图书:\n");printf("图书编号----图书名称----作者---- 出版社---图书价格\n");printf("------------------------------------------\n");printf("%4d %10s %10s %10s %8d \n",books[i].num,books[i].name,books[i].zuozhe,books[i].chubanshe,books[i].price);printf("---------------------------------------------\n");break;}else{printf("\n 未找到要查找的图书信息,按任意键返回!");getchar();}}void find_by_zuozhe(BOOKS books[],int sum){int i;char find_zuozhe[20];printf("\n 请输入要查找的作者姓名:");scanf("%s",find_zuozhe);for(i=0;i<sum-1;i++)if(strcmp(books[i].zuozhe,find_zuozhe)==0){printf("这是您所查找到属于该作者的图书:");printf("图书编号--图书名称--作者-- 出版社--图书价格\n");printf("------------------------------------------\n");printf("%8d %10s %10s %10s %8d \n",books[i].num,books[i].name,books[i].zuozhe, books[i].chubanshe,books[i].price);printf("---------------------------------------------\n");}else{printf("\n 未找到要查找的图书信息,按任意键返回!");}}void find_by_chubanshe(BOOKS books[],int sum){int i;char find_chubanshe[20];printf("\n 请输入要查找的出版社名称:");scanf("%s",find_chubanshe);for(i=0;i<sum;i++)if(strcmp(books[i].chubanshe,find_chubanshe)==0){printf("这是您所查找到属于该出版社的图书:");printf("图书编号--图书名称--作者-- 出版社--图书价格\n");printf("------------------------------------------\n");printf("%8d %10s %10s %10s %8d \n",books[i].num,books[i].name,books[i].zuozhe, books[i].chubanshe,books[i].price);printf("---------------------------------------------\n");}else{printf("\n 未找到要查找的图书信息,按任意键返回!");getchar();}}void find(BOOKS books[],int sum){ int choice;printf("\n 您要按照哪种方式查找? \n");printf("\n 1.按图书编号查找\n");printf("\n 2.按图书作者查找\n");printf("\n 3.按出版社查找\n");printf("\n 0. 退出\n");printf("\n 请选择(0-3): \n");scanf("%d",&choice);switch(choice){ case 1: find_by_num(books,sum); break;case 2: find_by_zuozhe(books,sum); break;case 3: find_by_chubanshe(books,sum); break;case 0: break;}}/*删除信息模块*/void del(BOOKS books[]){ int i,sum;int del_num;printf("\n 请输入要删除的图书编号:");scanf("%d",&del_num);for(i=0;i<sum;i++)if(books[i].num==del_num){printf("这是您所要删除图书信息:\n");printf("图书编号----图书名称----作者---- 出版社----图书价格\n");printf("----------------------------------------------------\n");printf("%8d %10s %10s %10s %8d \n",books[i].num,books[i].name,books[i].zuozhe, books[i].chubanshe,books[i].price);printf("-----------------------------------------------------\n");printf("您确认要删除吗?");printf("按任意键继续!");getchar();printf("已成功删除图书信息!");}}/*信息修改模块*/void modify(BOOKS books[],int sum){int i=0,choice,modify_num,flag;do{printf("请输入要修改的图书编号:");scanf("%d",&modify_num);for(i=0;i<sum;i++)if(books[i].num==modify_num){ printf("\n\n --图书信息-- \n\n");printf("图书编号----图书名称----作者---- 出版社----图书价格\n");printf("------------------------------------------\n");printf("%8d %10s %10s %10s %8d \n",books[i].num,books[i].name,books[i].zuozhe, books[i].chubanshe,books[i].price);printf("---------------------------------------------\n");printf("\n 您要修改哪一项?\n");printf("\n 1.图书名称\n");printf("\n 2.作者\n");printf("\n 3.出版社\n");printf("\n 4.图书价格\n");printf("\n 请选择(1-4):\n");scanf("%d",&choice);switch(choice){ case 1: printf("\n 请输入修改后的图书名称:");scanf("%s",books[i].name); break;case 2: printf("\n 请输入修改后的作者姓名:");scanf("%s",books[i].zuozhe); break;case 3: printf("\n 请输入修改后的出版社名称:");scanf("%s",books[i].chubanshe); break;case 4: printf("\n 请输入修改后的图书价格:");scanf("%d",&books[i].price); break;}printf("\n\n --图书信息-- \n\n");printf("图书编号----图书名称----作者---- 出版社----图书价格\n"); printf("--------------------------------------------\n");printf("%8d %10s %10s %10s %8d \n",books[i].num,books[i].name, books[i].zuozhe, books[i].chubanshe,books[i].price); printf("---------------------------------------------\n");break;}else{printf("\n 该书不存在!");getchar();}printf("\n 修改成功!\n");printf("您要继续修改吗?(Y/N)");if (choice=='Y'||choice=='y'){ flag=1;printf("\n 继续!\n");}else flag=0;}while( flag==1);printf("\n 按任意键返回主菜单!");getchar();}/*图书信息统计模块*/void count(BOOKS books[],int sum) /*统计某个出版社的图书数*/ { int i;char count_chubanshe[20];int n=0;printf("请输入一个出版社名称:\n");scanf("%s",count_chubanshe);for(i=0;i<sum;i++){if( strcmp(books[i].chubanshe,count_chubanshe)==0)n++;break;}printf("统计出属于该出版社一共有%d本书\n",n);}/*排序模块*/void sort(BOOKS books[],int sum) /*按图书编号排序模块*/{BOOKS t;int i,j;printf("\n --图书信息-- \n");printf("\n 排名图书编号图书名称作者出版社图书价格\n");for(i=1;i<sum-1;i++)for(j=i+1;j<sum;j++)if(books[j].num>books[i].num){t=books[j];books[j]=books[i];books[i]=t;}for(i=0;i<sum;i++){ printf("%2d %8d %12s %12s %12s %6d \n",i+1,books[i].num,books[i].name,books[i].zuozhe, books[i].chubanshe,books[i].price);}}void main(){ BOOKS books[M];int choice,sum;sum=read_file(books);if (sum==0){printf("请录入基本图书信息!*******\n");sum=input(books);}do{printf("\n\n\n *******图书馆理系统******* \n\n");printf(" 1.修改图书信息\n\n");printf(" 2.删除图书信息\n\n");printf(" 3.查找图书信息\n\n");printf(" 4.统计图书信息\n\n");printf(" 5.图书排行信息\n\n");printf(" 0.退出系统\n\n");printf(" 请选择\n\n");scanf("%d",&choice);switch(choice){ case 1 : modify(books,sum); break;case 2 : del(books); break;case 3 : find(books,sum); break;case 4 : count(books,sum); break;case 5 : sort(books,sum); break;case 0 : break;}}while(choice!=0);save_file(books,sum);}运行结果:。