用C编写的图书管理系统.docx
- 文档编号:30380353
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:32
- 大小:19.29KB
用C编写的图书管理系统.docx
《用C编写的图书管理系统.docx》由会员分享,可在线阅读,更多相关《用C编写的图书管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
用C编写的图书管理系统
#include
#include
#include
#include
#defineError0
#defineOk1
typedefintStatus;
#defineBookaddress"c:
\\book.txt"
#defineStuaddress"c:
\\stu.txt"
typedefstructbook
{
charISBN[50];
chartitle[30];
charauthor[40];
chardate[30];
charpublisher[40];
intprice;
intinventory;
};
typedefstructstu
{
charcard[40];
charpsw[40];
inttotal;
};
typedefstructbookElemType;
typedefstructstuDataType;/*存放用户信息*/
typedefstruct
{
structstu*data;
intlength;
intlistsize;
}SqList;
typedefstructLNode
{
ElemTypeelem;
structLNode*next;
}LNode,*LinkList;
SqListSL;/*存放学生信息*/
LinkListLL;/*存放书籍信息*/
intEXIT=0;/*退出系统*/
FILE*fp;
intLListEmpty(LinkListL)
{
if(L->next)
return0;
return1;
}
StatusLListInit(LinkList*L)
{
*L=(LinkList)malloc(sizeof(LNode));
if(!
*L)exit(0);
(*L)->next=NULL;
returnOk;
}
intLListLength(LinkListL)
{
inti=0;
LinkListp=L->next;
while(p)
{
p=p->next;
++i;
}
returni;
}
intLListInsert(LinkListL,inti,ElemTypeelem)
{
intj=0;
LinkListp=L,s=NULL;
while(p&&j { ++j; p=p->next; } if(! p||j>i-1) returnError; s=(LinkList)malloc(sizeof(structLNode)); s->elem=elem; s->next=p->next; p->next=s; returnOk; } StatusLListTraverse(LinkListL,void(*vi)(ElemType)) { LinkListp=L->next; while(p) { vi(p->elem); p=p->next; } returnOk; } StatusGetElem(LinkListL,inti,ElemType*e) { intj=1; LinkListp=L->next; while(p&&j { ++j; p=p->next; } if(! p||j>i)returnError; *e=p->elem; returnOk; } StatusSqListInit(SqList*L) { L->data=(DataType*)malloc(sizeof(DataType)); if(! L->data)exit(-2); L->length=0; L->listsize=100; returnOk; } StatusSqListEmpty(SqListL) { if(L.length==0) return1; return0; } intSqListLength(SqListL) { returnL.length; } StatusSqListInsert(SqList*L,inti,DataTypedata) { DataType*p,*q; if(i<1||i>L->length+1) returnError; q=&L->data[i-1]; for(p=&L->data[L->length-1];p>=q;--p) *(p+1)=*p; *q=data; ++L->length; returnOk; } StatusSqListTraverse(SqListL,void(*vi)(DataType)) { inti=1; DataType*p=L.data; while(i<=L.length) { vi(*p++); ++i; } returnOk; } intLocateElem_Sq(SqListL,DataTypedata,Status(*compare)(DataType,DataType)) { inti=1; DataType*p=L.data; while(i<=L.length&&! compare(*p,data)) { ++i; ++p; } if(i<=L.length) returni; return0; } voidConFun() { printf("请按任意键继续...."); getch(); } voidcls() { system("cls"); } voidlogo() {system("color1e"); printf("\t\t\t************************\n"); printf("\t\t\t南京工程学院图书馆欢迎您\n"); printf("\n"); printf("\t\t\t算通091伊海波制作\n"); printf("\t\t\t************************\n"); printf("\n"); printf("\t\t\t书是人类进步的阶梯! ! ! \n"); printf("\n"); printf("\t\t欢迎您的使用! \n"); printf("\n"); printf("\t\t\t\t\t\t|.мīss.чou"); printf("\n"); } voidvist_sq(DataTypedata) { system("color2e"); printf("\t卡号: %-10s",data.card); printf("\t密码: %-10s",data.psw); printf("\t已借: %-10d",data.total); printf("\n"); }/*查看用户信息*/ voidvist_l(ElemTypeelem) { system("color3e"); printf("\t编号: %-10s\n",elem.ISBN); printf("\t标题: %-20s\n",elem.title); printf("\t作者: %-10s\n",elem.author); printf("\t出版日期: %-20s\n",elem.date); printf("\t出版商: %-10s\n",elem.publisher); printf("\t价格: %-10d\n",elem.price); printf("\t库存: %-10d\n",elem.inventory); printf("\n"); }/*查看书籍信息*/ StatusReadFromFile_Sq(DataType*data) { if(fread(data,sizeof(DataType),1,fp)==1) returnOk; returnError; } voidWriteToFile_Sq(DataTypedata) { fwrite(&data,sizeof(DataType),1,fp); } StatusReadFromFile_L(ElemType*elem) { if(fread(elem,sizeof(ElemType),1,fp)==1) returnOk; returnError; } voidWriteToFile_L(ElemTypeelem) { fwrite(&elem,sizeof(ElemType),1,fp); } Statusequal_sq(DataTyped1,DataTyped2) { if(strcmp(d1.card,d2.card)||strcmp(d1.psw,d2.psw)) return0; return1; } StatusFindCard(DataTypedata) { inti; DataType*p=SL.data; for(i=1;i<=SL.length;++i) { if(! strcmp((*p).card,data.card)) returnOk; ++p; } returnError; }/*查找卡号,如果重复不能办理*/ StatusFindISBN(ElemTypeelem) { LinkListp=LL->next; while(p) { if(! strcmp(p->elem.ISBN,elem.ISBN)) return1; p=p->next; } return0; }/*查找书号,如果重复只将数的库存量增加*/ voidSearch() { ElemTypee; LinkListp; cls(); logo(); if(LListEmpty(LL)) { printf("对不起,库中暂时没书\n"); printf("请按任意键继续...."); getch(); return; } printf("库中现有图书如下: \n"); LListTraverse(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(); } voidBorrow() { DataTypedata; ElemTypeelem; LinkListp; cls(); logo(); system("color4e"); printf("输入卡号: "); scanf("%s",data.card); printf("输入密码: "); scanf("%s",data.psw); if(! LocateElem_Sq(SL,data,equal_sq)) { printf("账号或密码错误\n"); ConFun(); } else { 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,elem.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(); } } } voidGetRank() { cls(); system("color5e"); printf("\t\t\t最近热门图书如下: \n"); printf("\n"); printf("(☆_☆)\n"); printf("☆☆\n"); printf("☆☆\n"); printf("☆☆\n"); printf("☆☆\n"); printf("☆☆\n"); printf("☆☆\n"); printf("☆☆\n"); printf("☆\n"); printf("\t\t\t大学英语\n"); printf("\n"); printf("\t\t\tC程序设计\n"); printf("\n"); printf("\t\t\t朝花夕拾\n"); printf("\n"); printf("\t\t\t钢铁是怎样炼成的\n"); printf("\n"); printf("\t\t\t中国近代史\n"); printf("\n"); printf("\t\t\t我的家乡淮安\n"); printf("\n"); printf("\t\t\t总理故居....\n"); ConFun(); } voidReturn() { inti; DataTypedata; ElemTypeelem; LinkListp; cls(); logo(); system("color6e"); 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 { cls(); logo(); if(SL.data[i-1].total==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.data[i-1].total; printf("\t还书成功\n"); ConFun(); break; } p=p->next; } if(! p) { printf("\t对不起,您的输入出现错误\n"); ConFun(); } } } voidModifyPsw2() { charname1[30]; charpsw1[30]; 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(); } } voidModifyPsw() { inti; DataTypedata; cls(); 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.data[i-1].psw); printf("\t密码修改成功\n"); ConFun(); } } voidStuModel() { inti; do { cls(); logo(); fflush(stdin); system("color5e"); 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("\t\t请选择服务: "); scanf("%d",&i); switch(i) { case1: Search();break; case2: Borrow();break; case3: Return();break; case4: ModifyPsw();break; case5: GetRank();break; case6: return; default: printf("\t请输入1-6\n"); ConFun(); break; } }while (1); } voidViewAll() { cls(); logo(); if(LListEmpty(LL)) { printf("\t对不起,库中暂时没书\n"); ConFun(); return; } LListTraverse(LL,vist_l); ConFun(); } voidAddBook() { ElemTypee; LinkListp,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("color2e"); printf("\t请输入标题: "); scanf("%s",e.title); printf("\t请输入作者: "); scanf("%s",e.author); printf("\t请输入出版日期: "); scanf("%s",e.date); printf("\t请输入出版商: "); scanf("%s",e.publisher); printf("\t请输入价格: "); scanf("%d",&e.price); printf("\t请输入库存: "); scanf("%d",&e.inventory); while(p&&atoi(p->elem.ISBN) { q=p; p=p->next; } q->next=(LinkList)malloc(sizeof(LNode)); q->next->elem=e; q->next->next=p; printf("\t添加成功\n"); ConFun(); } voidoff() { LinkListp,q; ElemTypee; q=LL; p=LL->next; cls(); logo(); 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(); } voidApplyMem() { DataTypedata; intlen; do { cls(); logo(); fflush(stdin); printf("\t请输入新卡号: "); scanf("%s",data.card); if(FindCard(data)) { printf("\t对不起,该卡号已经存在\n"); ConFun(); } else { printf("\t请输入密码: "); scanf("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编写 图书 管理 系统