《2022年用C编写的图书管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年用C编写的图书管理系统 .pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、#include#include#include#include#define Error 0#define Ok 1 typedef int Status;#define Bookaddress c:book.txt#define Stuaddress c:stu.txt typedef struct book char ISBN50;char title30;char author40;char date30;char publisher40;int price;int inventory;typedef struct stu char card40;char psw40;int tota
2、l;typedef struct book ElemType;typedef struct stu DataType;/*存放用户信息*/typedef struct struct stu*data;int length;int listsize;SqList;typedef struct LNode ElemType elem;struct LNode*next;LNode,*LinkList;SqList SL;/*存放学生信息*/LinkList LL;/*存放书籍信息*/int EXIT=0;/*退出系统*/名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 19 页 -FI
3、LE*fp;int LListEmpty(LinkList L)if(L-next)return 0;return 1;Status LListInit(LinkList*L)*L=(LinkList)malloc(sizeof(LNode);if(!*L)exit(0);(*L)-next=NULL;return Ok;int LListLength(LinkList L)int i=0;LinkList p=L-next;while(p)p=p-next;+i;return i;int LListInsert(LinkList L,int i,ElemType elem)int j=0;L
4、inkList p=L,s=NULL;while(p&jnext;if(!p|ji-1)return Error;s=(LinkList)malloc(sizeof(struct LNode);s-elem=elem;s-next=p-next;p-next=s;return Ok;Status LListTraverse(LinkList L,void(*vi)(ElemType)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 19 页 -LinkList p=L-next;while(p)vi(p-elem);p=p-next;return Ok;Status GetElem
5、(LinkList L,int i,ElemType*e)int j=1;LinkList p=L-next;while(p&jnext;if(!p|ji)return Error;*e=p-elem;return Ok;Status SqListInit(SqList*L)L-data=(DataType*)malloc(sizeof(DataType);if(!L-data)exit(-2);L-length=0;L-listsize=100;return Ok;Status SqListEmpty(SqList L)if(L.length=0)return 1;return 0;int
6、SqListLength(SqList L)return L.length;Status SqListInsert(SqList*L,int i,DataType data)DataType*p,*q;if(iL-length+1)名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 19 页 -return Error;q=&L-datai-1;for(p=&L-dataL-length-1;p=q;-p)*(p+1)=*p;*q=data;+L-length;return Ok;Status SqListTraverse(SqList L,void(*vi)(DataType)in
7、t i=1;DataType*p=L.data;while(i=L.length)vi(*p+);+i;return Ok;int LocateElem_Sq(SqList L,DataType data,Status(*compare)(DataType,DataType)int i=1;DataType*p=L.data;while(i=L.length&!compare(*p,data)+i;+p;if(i=L.length)return i;return 0;void ConFun()printf(请按任意键继续.);getch();void cls()system(cls);void
8、 logo()system(color 1e);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 19 页 -printf(ttt*n);printf(ttt南京工程学院图书馆欢迎您n);printf(n);printf(ttt 算通 091 伊海波制作 n);printf(ttt*n);printf(n);printf(ttt 书是人类进步的阶梯!n);printf(n);printf(tt 欢迎您的使用!n);printf(n);t|.ss.ou);printf(n);void vist_sq(DataType data)system(color 2e);printf(t卡号:
9、%-10s,data.card);printf(t密码:%-10s,data.psw);printf(t已借:%-10d,data.total);printf(n);/*查看用户信息*/void vist_l(ElemType elem)system(color 3e);printf(t编号:%-10sn,elem.ISBN);printf(t标题:%-20sn,elem.title);printf(t作者:%-10sn,elem.author);printf(t出版日期:%-20sn,elem.date);printf(t出版商:%-10sn,elem.publisher);printf(t
10、价格:%-10dn,elem.price);printf(t库存:%-10dn,elem.inventory);printf(n);/*查看书籍信息*/Status ReadFromFile_Sq(DataType*data)if(fread(data,sizeof(DataType),1,fp)=1)return Ok;return Error;void WriteToFile_Sq(DataType data)fwrite(&data,sizeof(DataType),1,fp);名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 19 页 -Status ReadFromFil
11、e_L(ElemType*elem)if(fread(elem,sizeof(ElemType),1,fp)=1)return Ok;return Error;void WriteToFile_L(ElemType elem)fwrite(&elem,sizeof(ElemType),1,fp);Status equal_sq(DataType d1,DataType d2)if(strcmp(d1.card,d2.card)|strcmp(d1.psw,d2.psw)return 0;return 1;Status FindCard(DataType data)int i;DataType*
12、p=SL.data;for(i=1;inext;while(p)if(!strcmp(p-elem.ISBN,elem.ISBN)return 1;p=p-next;return 0;/*查找书号,如果重复只将数的库存量增加*/void Search()ElemType e;LinkList p;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 19 页 -cls();logo();if(LListEmpty(LL)printf(对不起,库中暂时没书n);printf(请按任意键继续.);getch();return;printf(库中现有图书如下:n);LListTraverse
13、(LL,vist_l);printf(请输入您要查看数的编号:);scanf(%s,e.ISBN);p=LL-next;while(p)if(!strcmp(p-elem.ISBN,e.ISBN)vist_l(p-elem);break;p=p-next;if(!p)printf(对不起,找不到本书n);ConFun();void Borrow()DataType data;ElemType elem;LinkList p;cls();logo();system(color 4e);printf(输入卡号:);scanf(%s,data.card);printf(输入密码:);scanf(%s
14、,data.psw);if(!LocateElem_Sq(SL,data,equal_sq)printf(账号或密码错误n);ConFun();else 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 19 页 -cls();logo();if(LListEmpty(LL)printf(库中暂时没书n);ConFun();return;printf(库中现有图书如下:n);LListTraverse(LL,vist_l);printf(请输入借书的编号:);scanf(%s,elem.ISBN);p=LL-next;while(p)if(!strcmp(p-elem.ISBN,e
15、lem.ISBN)vist_l(p-elem);if(p-elem.inventory=0)printf(对不起,该书不能借n);else -p-elem.inventory;SL.data-total+;printf(借阅成功 n);ConFun();break;p=p-next;if(!p)printf(对不起,您所需要的书籍暂时没有n);ConFun();void GetRank()cls();system(color 5e);printf(ttt最近热门图书如下:n);名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 19 页 -printf(n);printf(_)n);
16、printf(n);printf(n);printf(n);printf(n);printf(n);printf(n);printf(n);printf(n);printf(ttt 大学英语 n);printf(n);printf(ttt C 程序设计 n);printf(n);printf(ttt 朝花夕拾 n);printf(n);printf(ttt 钢铁是怎样炼成的n);printf(n);printf(ttt 中国近代史 n);printf(n);printf(ttt 我的家乡淮安n);printf(n);printf(ttt 总理故居.n);ConFun();void Return
17、()int i;DataType data;ElemType elem;LinkList p;cls();logo();system(color 6e);printf(t请输入卡号:);scanf(%s,data.card);printf(t请输入密码:);scanf(%s,data.psw);i=LocateElem_Sq(SL,data,equal_sq);if(!i)名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 19 页 -printf(t对不起,您所输入的账号或密码出现错误n);ConFun();else cls();logo();if(SL.datai-1.total
18、=0)printf(t没可还的书 n);ConFun();return;printf(t请输入还书的编号:);scanf(%s,elem.ISBN);p=LL-next;while(p)if(!strcmp(p-elem.ISBN,elem.ISBN)vist_l(p-elem);+p-elem.inventory;-SL.datai-1.total;printf(t还书成功 n);ConFun();break;p=p-next;if(!p)printf(t对不起,您的输入出现错误n);ConFun();void ModifyPsw2()char name130;char psw130;名师资
19、料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 19 页 -cls();logo();printf(t请输入管理员用户名:);scanf(%s,name1);printf(t请输入原始密码:);scanf(%s,psw1);if(strcmp(name1,yihaibo)|strcmp(psw1,12345)printf(t对不起,用户名或密码出现错误n);ConFun();else printf(t请输入新密码:);scanf(%s,psw1);printf(t密码修改成功 n);ConFun();void ModifyPsw()int i;DataType data;cls();
20、logo();printf(t请输入卡号:);scanf(%s,data.card);printf(t请输入原始密码:);scanf(%s,data.psw);i=LocateElem_Sq(SL,data,equal_sq);if(!i)printf(t对不起,原帐号或密码出现错误n);ConFun();else printf(t请输入新密码:);scanf(%s,SL.datai-1.psw);printf(t密码修改成功 n);ConFun();名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 19 页 -void StuModel()int i;do cls();logo
21、();fflush(stdin);system(color 5e);printf(t(1):查询图书 n);printf(n);printf(t(2):借阅图书 n);printf(n);printf(t(3):归还图书 n);printf(n);printf(t(4):修改密码 n);printf(n);printf(t(5):最近热门图书n);printf(n);printf(t(6):返回上层 n);printf(n);printf(tt请选择服务:);scanf(%d,&i);switch(i)case 1:Search();break;case 2:Borrow();break;ca
22、se 3:Return();break;case 4:ModifyPsw();break;case 5:GetRank();break;case 6:return;default:printf(t请输入 1-6n);ConFun();break;while(1);void ViewAll()cls();logo();if(LListEmpty(LL)名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 19 页 -printf(t对不起,库中暂时没书n);ConFun();return;LListTraverse(LL,vist_l);ConFun();void AddBook()E
23、lemType e;LinkList p,q;cls();logo();q=LL;p=LL-next;fflush(stdin);printf(t请输入编号:);scanf(%s,e.ISBN);if(FindISBN(e)printf(t该编号已经存在n);ConFun();return;system(color 2e);printf(t请输入标题:);scanf(%s,e.title);printf(t请输入作者:);scanf(%s,e.author);printf(t请输入出版日期:);scanf(%s,e.date);printf(t请输入出版商:);scanf(%s,e.publi
24、sher);printf(t请输入价格:);scanf(%d,&e.price);printf(t请输入库存:);scanf(%d,&e.inventory);while(p&atoi(p-elem.ISBN)next;q-next=(LinkList)malloc(sizeof(LNode);q-next-elem=e;名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 19 页 -q-next-next=p;printf(t添加成功 n);ConFun();void off()LinkList p,q;ElemType e;q=LL;p=LL-next;cls();logo()
25、;if(LListEmpty(LL)printf(t对不起,库中暂时没书n);ConFun();return;printf(t库中现有图书如下:n);LListTraverse(LL,vist_l);printf(t请输入删除编号:);scanf(%s,e.ISBN);while(p)if(p&!strcmp(p-elem.ISBN,e.ISBN)q=p;p=p-next;if(!p)printf(t对不起,没找到该编号n);else q-next=p-next;printf(t删除成功 n);ConFun();void ApplyMem()DataType data;int len;do c
26、ls();logo();名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 19 页 -fflush(stdin);printf(t请输入新卡号:);scanf(%s,data.card);if(FindCard(data)printf(t对不起,该卡号已经存在n);ConFun();else printf(t请输入密码:);scanf(%s,data.psw);data.total=0;len=SqListLength(SL);SqListInsert(&SL,+len,data);printf(t办理成功 n);ConFun();return;while(1);void Vie
27、wMem()cls();logo();if(SqListEmpty(SL)printf(t暂无会员 n);ConFun();else SqListTraverse(SL,vist_sq);ConFun();void AdmModel()int i,j;char name30;名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 19 页 -char psw30;char ch;cls();logo();system(color 3e);printf(tttt 温馨提示:管理员帐号为yihaibo,密码为 12345);printf(n);printf(n);printf(t管理员账户
28、:);scanf(%s,name);printf(t管理员密码:);for(j=0;(ch=getch()!=r;j+)pswj=ch;putchar(*);pswj=0;if(strcmp(name,yihaibo)|strcmp(psw,12345)printf(n对不起,账号或密码出现错误n);ConFun();return;do cls();logo();i=0;fflush(stdin);system(color 4e);printf(t(1):查看图书 n);printf(n);printf(t(2):新增图书 n);printf(n);printf(t(3):删除图书 n);pr
29、intf(n);printf(t(4):查看会员 n);printf(n);printf(t(5):会员办理 n);printf(n);printf(t(6):修改密码 n);printf(n);printf(t(7):返回上层 n);printf(n);名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 19 页 -printf(tt请选择服务:);scanf(%d,&i);switch(i)case 1:ViewAll();break;case 2:AddBook();break;case 3:off();break;case 4:ViewMem();break;case 5:
30、ApplyMem();break;case 6:ModifyPsw2();break;case 7:return;default:printf(请输入 1-7n);ConFun();break;while(1);void introduction()cls();logo();system(color 4e);printf(南京工程学院是省属本科院校,坐落于属有“六朝古都”美誉的历史文化名城南京,);printf(逸夫图书馆现有馆舍面积31176.5 平方米,总阅览座位2500 多席,累计馆藏纸质书目 127.47);printf(万册,中文现刊1200 多种,外文现刊70 多种,等等。);pr
31、intf(图书馆现有在职职工51 人,全体馆员本着“读者之上服务第一”的宗旨,努力为读者);printf(营造文明有序开放的学习和信息利用环境。);ConFun();void SelectModel()int i;cls();logo();fflush(stdin);printf(t(1):逸夫图书馆简介n);printf(n);printf(t(2):学生登录 n);printf(n);名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 19 页 -printf(t(3):管理员登录 n);printf(n);printf(t(4):退出系统 n);printf(n);print
32、f(t 请选择序号:);scanf(%d,&i);if(i4)printf(请输入 1-4n);ConFun();if(i=2)StuModel();if(i=3)AdmModel();if(i=1)introduction();if(i=4)printf(感谢您的使用,欢迎下次再来n);ConFun();EXIT=1;void main()int l_len,sq_len;DataType data;ElemType elem;logo();SqListInit(&SL);LListInit(&LL);if(fp=fopen(Stuaddress,ab+)=NULL)printf(数据读取失
33、败 n);exit(0);else sq_len=SqListLength(SL);while(ReadFromFile_Sq(&data)SqListInsert(&SL,+sq_len,data);fclose(fp);名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 19 页 -if(fp=fopen(Bookaddress,ab+)=NULL)printf(数据读取失败 n);exit(0);else l_len=LListLength(LL);while(ReadFromFile_L(&elem)LListInsert(LL,+l_len,elem);fclose(fp);while(EXIT=0)SelectModel();if(fp=fopen(Stuaddress,wb+)=NULL)printf(对不起,数据存储失败n);exit(0);else SqListTraverse(SL,WriteToFile_Sq);fclose(fp);if(fp=fopen(Bookaddress,wb+)=NULL)printf(数据读取失败n);exit(0);else LListTraverse(LL,WriteToFile_L);fclose(fp);名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 19 页 -