图书管理系统课程设计C语言.docx

上传人:b****4 文档编号:6743831 上传时间:2023-05-10 格式:DOCX 页数:33 大小:55.67KB
下载 相关 举报
图书管理系统课程设计C语言.docx_第1页
第1页 / 共33页
图书管理系统课程设计C语言.docx_第2页
第2页 / 共33页
图书管理系统课程设计C语言.docx_第3页
第3页 / 共33页
图书管理系统课程设计C语言.docx_第4页
第4页 / 共33页
图书管理系统课程设计C语言.docx_第5页
第5页 / 共33页
图书管理系统课程设计C语言.docx_第6页
第6页 / 共33页
图书管理系统课程设计C语言.docx_第7页
第7页 / 共33页
图书管理系统课程设计C语言.docx_第8页
第8页 / 共33页
图书管理系统课程设计C语言.docx_第9页
第9页 / 共33页
图书管理系统课程设计C语言.docx_第10页
第10页 / 共33页
图书管理系统课程设计C语言.docx_第11页
第11页 / 共33页
图书管理系统课程设计C语言.docx_第12页
第12页 / 共33页
图书管理系统课程设计C语言.docx_第13页
第13页 / 共33页
图书管理系统课程设计C语言.docx_第14页
第14页 / 共33页
图书管理系统课程设计C语言.docx_第15页
第15页 / 共33页
图书管理系统课程设计C语言.docx_第16页
第16页 / 共33页
图书管理系统课程设计C语言.docx_第17页
第17页 / 共33页
图书管理系统课程设计C语言.docx_第18页
第18页 / 共33页
图书管理系统课程设计C语言.docx_第19页
第19页 / 共33页
图书管理系统课程设计C语言.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

图书管理系统课程设计C语言.docx

《图书管理系统课程设计C语言.docx》由会员分享,可在线阅读,更多相关《图书管理系统课程设计C语言.docx(33页珍藏版)》请在冰点文库上搜索。

图书管理系统课程设计C语言.docx

图书管理系统课程设计C语言

#include

#include

#include

#include/*屏幕操作函数库*/

#defineHEADER1"------------------------------图书信息----------------------------------------\n"

#defineHEADER2"|编号|书名|价格|作者|出版社|数量|\n"

#defineHEADER3"|----------|---------------|-----|---------------|--------------------|------|\n"

#defineHEADER4"------------------------------会员信息---------------------------------------\n"

#defineHEADER5"|编号|姓名|电话|\n"

#defineHEADER6"|----------|---------------|---------------|\n"

#defineHEADER7"|会员编号|会员姓名|图书编号|图书名称|\n"

#defineHEADER8"|----------|---------------|----------|---------------|\n"

#defineHEADER9"|-----------------borrowbook-------------------------|\n"

#defineFORMAT"|%-10s|%-15s|%5d|%-15s|%-20s|%5d|\n"

#defineFORMAT1"|%-10s|%-15s|%-15s|\n"

#defineFORMAT2"|%-10s|%-15s|%-10s|%-15s|\n"

#defineDATAp->data.num,p->data.name,p->data.price,p->data.author,p->data.pub,p->data.number

#defineEND"------------------------------------------------------------------------\n"

#defineN100

typedefstructbook

{

charnum[10];/*书号*/

charname[15];/*书名*/

intprice;/*定价*/

charauthor[15];/*作者*/

charpub[20];/*出版社*/

intnumber;/*数量*/

intbnumber;/*借出次数*/

};

typedefstructMember

{

charmnum[10];/*会员号*/

charmname[15];/*会员姓名*/

chartel[15];/*联系电话*/

};

typedefstructborrow

{

charmnum[10];/*会员号*/

charmname[15];/*会员姓名*/

charnum[10];/*书号*/

charname[15];/*书名*/

};

typedefstructnode/*定义图书信息链表的结点结构*/

{

structbookdata;/*数据域*/

structnode*next;/*指针域*/

}Node,*Link;/*定义node类型的结构变量及指针变量*/

typedefstructmnode/*定义会员信息链表的结点结构*/

{

structMemberinf;

structmnode*next;

}Mnode,*Mlink;

typedefstructbnode/*定义借书信息链表的结点结构*/

{

structborrowbinf;

structbnode*next;

}Bnode,*Blink;

voidmenu()/*主菜单*/

{

system("cls");/*清屏*/

printf("图书管理系统\n");

printf("\t*************************菜单**********************************\n");

printf("\t*1添加图书信息2删除图书信息*\n");

printf("\t*3查询图书信息4修改图书信息*\n");

printf("\t*5添加会员6借书*\n");

printf("\t*7还书8按借出次数查看图书*\n");

printf("\t*9按入馆时间查看图书0退出系统*\n");

printf("\t***************************************************************\n");

}

voidprintheader()/*格式化输出表头*/

{

printf(HEADER1);

printf(HEADER2);

printf(HEADER3);

}

voidprintdata(Node*pp)/*格式化输出表中数据*/

{

Node*p;

p=pp;

printf(FORMAT,DATA);

}

voidprintbdata(Node*pp)

{

}

voidWrong()/*输出按键错误信息*/

{

printf("\n\n\n\n\n***********Error:

inputhaswrong!

pressanykeytocontinue**********\n");

getchar();

}

voidNofind()/*输出未查找此学生的信息*/

{

printf("\n=====>Notfindthisrecord!

\n");

}

voidSavemember(Mlinkm)

{

FILE*fp;

Mnode*p;

intcount=0;

fp=fopen("f:

\\member.txt","wb");/*以只写方式打开二进制文件*/

if(fp==NULL)/*打开文件失败*/

{

printf("\n=====>openfileerror!

\n");

getchar();

return;

}

p=m->next;

while(p)

{

if(fwrite(p,sizeof(Mnode),1,fp)==1)/*写记录到磁盘文件中*/

{

p=p->next;

count++;

}

else

{

break;

}

}

if(count>0)

{

getchar();

printf("\n\n\n\t保存文件完成,总共保存的数量是:

%d\n",count);

getchar();

}

else

{system("cls");

getchar();

}

fclose(fp);

}

voidSave(Linkl)/*将数据存盘*/

{

FILE*fp;

Node*p;

intcount=0;

fp=fopen("f:

\\book.txt","wb");/*以只写方式打开二进制文件*/

if(fp==NULL)/*打开文件失败*/

{

printf("\n=====>openfileerror!

\n");

getchar();

return;

}

p=l->next;

while(p)

{

if(fwrite(p,sizeof(Node),1,fp)==1)/*写记录到磁盘文件中*/

{

p=p->next;

count++;

}

else

{

break;

}

}

if(count>0)

{

getchar();

printf("\n\n\n\t=====>保存文件完成,保存的图书信息数量是:

%d\n",count);

getchar();

}

else

{system("cls");

printf("thecurrentlinkisempty,nostudentrecordissaved!

\n");

getchar();

}

fclose(fp);

}

voidDisp(Linkl)/*显示单链表l中存储的图书记录*/

{

Node*p;

p=l->next;

if(!

p)/*p==NULL则说明暂无记录*/

{

printf("\n=====>Notrecord!

\n");

getchar();

return;

}

printf("\n\n");

printf(HEADER1);

printf(HEADER2);

printf(HEADER3);

while(p)/*逐条输出链表中存储图书信息*/

{

printf(FORMAT,DATA);

p=p->next;

printf(HEADER3);

}

getchar();

}

voidDisp1(Linkl)/*显示单链表l中存储的图书记录*/

{system("cls");

Node*p;

p=l->next;

if(!

p)/*p==NULL则说明暂无记录*/

{

printf("\n=====>Notrecord!

\n");

getchar();

return;

}

printf("\n\n");

printf(HEADER1);

printf(HEADER2);

printf(HEADER3);

while(p)/*逐条输出链表中存储图书信息*/

{

printf(FORMAT,DATA);

p=p->next;

printf(HEADER3);

}

printf("pressanykeytomenu");

fflush(stdin);

getchar();

return;

}

voidMdisp(Mlinkm)/*显示单链表中存储的会员信息*/

{

Mnode*p;

p=m->next;

if(!

p)/*p==NULL证明没有会员记录*/

{

printf("\n=====>Notrecord!

\n");

getchar();

return;

}

printf("\n\n");

printf(HEADER4);

printf(HEADER5);

printf(HEADER6);

while(p)/*逐条输出链表中存储的会员信息*/

{

printf(FORMAT1,p->inf.mnum,p->inf.mname,p->inf.tel);

p=p->next;

printf(HEADER6);

}

getchar();

}

Node*Locate(Linkl,charfindmess[],charnameornum[])

{

Node*r;

if(strcmp(nameornum,"num")==0)/*按书号查询*/

{

r=l->next;

while(r)

{

if(strcmp(r->data.num,findmess)==0)

returnr;/*返回与输入内容相匹配的结点*/

r=r->next;

}

}

elseif(strcmp(nameornum,"name")==0)/*按书名查询*/

{

r=l->next;

while(r)

{

if(strcmp(r->data.name,findmess)==0)

returnr;/*返回与输入内容相匹配的结点*/

r=r->next;

}

}

return0;/*若未找到,返回一个空指针*/

}

voidstringinput(char*t,intlens,char*notice)/*输入字符串,并进行长度验证*/

{

charn[50];

do{

printf(notice);/*显示提示信息*/

scanf("%s",n);/*输入字符串*/

if(strlen(n)>lens)printf("\n超过长度规定值!

\n");/*进行长度是否超过规定值*/

}while(strlen(n)>lens);

strcpy(t,n);/*将输入的字符串拷贝到字符串t中*/

}

intnumberinput(char*notice)

{

intt=0;

do{

printf(notice);/*显示提示信息*/

scanf("%d",&t);/*输入图书数量*/

if(t<0)printf("\npricemust>0!

\n");

}while(t<0);

returnt;

}

voidAdd(Linkl)/*增加图书记录*/

{

Node*p,*r,*s;

charch,flag=0,num[10];

r=l;

s=l->next;

system("cls");/*清屏*/

Disp(l);/*先输出已有的图书信息*/

while(r->next!

=NULL)

r=r->next;/*将指针移至于链表最末尾,准备添加记录*/

while

(1)/*可输入多条记录,输入0时退出添加操作*/

{

while

(1)

{

stringinput(num,10,"输入新增图书编号(输入'0'returnmenu):

");/*输入书号*/

flag=0;

if(strcmp(num,"0")==0)/*输入0退出操作,返回菜单界面*/

{Save(l);return;}

s=l->next;

while(s)/*查询输入的书号是否已经存在*/

{

if(strcmp(s->data.num,num)==0)

{

flag=1;

break;

}

s=s->next;

}

if(flag==1)/*提示用户是否重新输入*/

{getchar();

printf("=====>输入的书号%s错误,是否重新输入?

(y/n):

",num);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

continue;

else

return;

}

else

{break;}

}

p=(Node*)malloc(sizeof(Node));/*申请内存空间*/

if(!

p)

{

printf("\nallocatememoryfailure");/*如没有申请到,输出提示信息*/

return;/*返回菜单界面*/

}

strcpy(p->data.num,num);/*将字符串拷贝到p->data.num中*/

stringinput(p->data.name,15,"书名:

");/*输入图书名称到p->data.name中*/

p->data.price=numberinput("价格:

");/*输入定价到p->data.price中*/

stringinput(p->data.author,15,"作者:

");/*输入作者名到p->data.author中*/

stringinput(p->data.pub,20,"出版社:

");/*输入出版社名称到p->data.pub中*/

p->data.number=numberinput("数量:

");/*输入图书数量到p->data.number中*/

p->data.bnumber=0;

p->next=NULL;

r->next=p;/*将新结点插入链表中*/

r=p;

}

return;

}

voidAddmember(Mlinkm)

{

FILE*fp;

Mnode*p,*r,*s,*q;

charch,qu,flag=0,num[10];

r=m;

s=m->next;

system("cls");

Mdisp(m);/*将原有记录输出*/

while(r->next!

=NULL)

r=r->next;/*将指针移至于链表最末尾,准备添加记录*/

while

(1)/*可输入多条记录,输入0时退出添加操作*/

{

while

(1)

{

stringinput(num,10,"输入新增会员编号(press'0'returnmenu):

");/*输入会员号*/

flag=0;

if(strcmp(num,"0")==0)/*输入为0,则退出添加操作,返回菜单界面*/

{Savemember(m);return;}

s=m->next;

while(s)/*查询该会员号是否已经存在*/

{

if(strcmp(s->inf.mnum,num)==0)

{

flag=1;

break;

}

s=s->next;

}

if(flag==1)/*提示用户是否重新输入*/

{getchar();

printf("=====>输入的这个编号%s错误,是否重新输入?

(y/n):

",num);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

continue;

else

return;

}

else

{break;}

}

p=(Mnode*)malloc(sizeof(Mnode));/*申请内存空间*/

if(!

p)

{

printf("\nallocatememoryfailure");/*如没有申请到,输出提示信息*/

return;/*返回主界面*/

}

strcpy(p->inf.mnum,num);/*将会员号拷贝到p->data.num中*/

stringinput(p->inf.mname,15,"姓名:

");

stringinput(p->inf.tel,15,"电话:

");

p->next=NULL;

r->next=p;/*将新结点插入链表中*/

r=p;

}

return;

}

voidsearchbnum(Linkl)

{

Node*p;

intcount=0;

intcount1=0;

intbnum[100];

intmaxnum=0;

intthismax=0;

p=l->next;

system("cls");

if(!

l->next)/*若链表为空*/

{

system("cls");

printf("\n=====>Norecord!

\n");

getchar();

return;

}

printf("------------------------------图书信息----------------------------------------\n");

printf("|借出次数|编号|书名|价格|作者|出版社|数量|\n");

while(p)

{

if(p->data.bnumber>=maxnum){

//bnum[i]=p->data.bnumber;

maxnum=p->data.bnumber;

}

count1++;

p=p->next;

}

while(true)

{

p=l->next;

while(p)

{

if(p->data.bnumber==maxnum){

printf("|%-8d|%-10s|%-15s|%-5d|%-11s|%-16s|%-6d|\n",p->data.bnumber,p->data.num,p->data.name,p->data.price,p->data.author,p->data.pub,p->data.number);

count++;

}

if(p->data.bnumberdata.bnumber>thismax)

{

thismax=p->data.bnumber;

}

p=p->next;

}

if(count==count1)

{

break;

}

maxnum=thismax;

thismax=0;

}

printf("|--------|----------|---------------|-----|-----------|----------------|------|\n");

printf("pressanykeytoreturn");

fflush(stdin);

getchar();

return;

}

voidsearch(Linkl)/*图书查询*/

{

intselect;

charsearchinput[20];

Node*p;

if(!

l->next)/*若链表为空*/

{

system("cls");

printf("\n=====>Norecord!

\n");

getchar();

return;

}

system("cls");

printf("\n\t1按书号查询\n\t2按书

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2