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

上传人:b****6 文档编号:7113632 上传时间:2023-01-18 格式:DOCX 页数:30 大小:167.60KB
下载 相关 举报
C语言课程设计图书管理系统.docx_第1页
第1页 / 共30页
C语言课程设计图书管理系统.docx_第2页
第2页 / 共30页
C语言课程设计图书管理系统.docx_第3页
第3页 / 共30页
C语言课程设计图书管理系统.docx_第4页
第4页 / 共30页
C语言课程设计图书管理系统.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

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

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

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

C语言课程设计图书管理系统语言课程设计图书管理系统C语言课程设计一、需求分析1、依据题目要求以及中国书的需求,应将该系统分为两大模块:

图书管理和会员管理。

图书管理模块中包括对图书的增加、修改、删除、查询、统计等操作,以及对图书借入借出服务。

会员管理包括会员卡号的申请、删除、统计等操作。

2、界面应该具有友善、直观、易操作等特点,本系统采用数字输入选择操作。

二、概要设计1、整体设计经过需求分析,本系统分为两大模块:

书籍管理模块和会员管理模块。

但是从易用性方面考虑,将书籍管理模块中的借书和还书模块放到主界面中。

结构图如下:

三、程序代码#include/*标准输入输出函数库*/#include/*标准函数库*/#include/*字符串函数库*/#include/*屏幕操作函数库*/#defineHEADER1-BOOK-n#defineHEADER2|number|name|price|author|publishingcompany|number|n#defineHEADER3|-|-|-|-|-|n#defineHEADER4-Member-n#defineHEADER5|number|name|telephone|n#defineHEADER6|-|-|-|n#defineHEADER7|mnumber|membername|bnumber|bookname|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#defineN100typedefstructbookcharnum10;/*书号*/charname15;/*书名*/intprice;/*定价*/charauthor15;/*作者*/charpub20;/*出版社*/intnumber;/*数量*/;typedefstructMembercharmnum10;/*会员号*/charmname15;/*会员姓名*/chartel15;/*联系电话*/;typedefstructborrowcharmnum10;/*会员号*/charmname15;/*会员姓名*/charnum10;/*书号*/charname15;/*书名*/;typedefstructnode/*定义图书信息链表的结点结构*/structbookdata;/*数据域*/structnode*next;/*指针域*/Node,*Link;/*定义node类型的结构变量及指针变量*/typedefstructmnode/*定义会员信息链表的结点结构*/structMemberinf;structmnode*next;Mnode,*Mlink;typedefstructbnode/*定义借书信息链表的结点结构*/structborrowbinf;structbnode*next;Bnode,*Blink;voidmenu()/*主菜单*/system(cls);/*清屏*/printf(BookManagementSystemn);printf(t*Menu*n);printf(t*1Addbook2deletebook*n);printf(t*3searchbook4modifyrecord*n);printf(t*5Addmember6borrowbook*n);printf(t*7returnbook8savebook*n);printf(t*9savemember0quitsystem*n);printf(t*n);voidprintheader()/*格式化输出表头*/printf(HEADER1);printf(HEADER2);printf(HEADER3);voidprintdata(Node*pp)/*格式化输出表中数据*/Node*p;p=pp;printf(FORMAT,DATA);voidWrong()/*输出按键错误信息*/printf(nnnnn*Error:

inputhaswrong!

pressanykeytocontinue*n);getchar();voidNofind()/*输出未查找此学生的信息*/printf(n=Notfindthisrecord!

n);voidDisp(Linkl)/*显示单链表l中存储的图书记录*/Node*p;p=l-next;if(!

p)/*p=NULL则说明暂无记录*/printf(n=Notrecord!

n);getchar();return;printf(nn);printf(HEADER1);printf(HEADER2);printf(HEADER3);while(p)/*逐条输出链表中存储图书信息*/printf(FORMAT,DATA);p=p-next;printf(HEADER3);getchar();voidMdisp(Mlinkm)/*显示单链表中存储的会员信息*/Mnode*p;p=m-next;if(!

p)/*p=NULL证明没有会员记录*/printf(n=Notrecord!

n);getchar();return;printf(nn);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)/*输入字符串,并进行长度验证*/charn50;doprintf(notice);/*显示提示信息*/scanf(%s,n);/*输入字符串*/if(strlen(n)lens)printf(nexceedtherequiredlength!

n);/*进行长度是否超过规定值*/while(strlen(n)lens);strcpy(t,n);/*将输入的字符串拷贝到字符串t中*/intnumberinput(char*notice)intt=0;doprintf(notice);/*显示提示信息*/scanf(%d,&t);/*输入图书数量*/if(t0!

n);while(tnext;system(cls);Disp(l);/*先输出已有的图书信息*/while(r-next!

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

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

(1)stringinput(num,10,inputnumber(press0returnmenu):

);/*输入书号*/flag=0;if(strcmp(num,0)=0)/*输入0退出操作,返回菜单界面*/return;s=l-next;while(s)/*查询输入的书号是否已经存在*/if(strcmp(s-data.num,num)=0)flag=1;break;s=s-next;if(flag=1)/*提示用户是否重新输入*/getchar();printf(=Thenumber%sisexisting,tryagain?

(y/n):

num);scanf(%c,&ch);if(ch=y|ch=Y)continue;elsereturn;elsebreak;p=(Node*)malloc(sizeof(Node);/*申请内存空间*/if(!

p)printf(nallocatememoryfailure);/*如没有申请到,输出提示信息*/return;/*返回菜单界面*/strcpy(p-data.num,num);/*将字符串拷贝到p-data.num中*/stringinput(p-data.name,15,Name:

);/*输入图书名称到p-data.name中*/p-data.price=numberinput(price:

);/*输入定价到p-data.price中*/stringinput(p-data.author,15,author:

);/*输入作者名到p-data.author中*/stringinput(p-data.pub,20,publishingcompany:

);/*输入出版社名称到p-data.pub中*/p-data.number=numberinput(number:

);/*输入图书数量到p-data.number中*/p-next=NULL;r-next=p;/*将新结点插入链表中*/r=p;return;voidAddmember(Mlinkm)FILE*fp;Mnode*p,*r,*s,*q;charch,qu,flag=0,num10;r=m;s=m-next;system(cls);Mdisp(m);/*将原有记录输出*/while(r-next!

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

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

(1)stringinput(num,10,inputthenumberofthemember(press0returnmenu):

);/*输入会员号*/flag=0;if(strcmp(num,0)=0)/*输入为0,则退出添加操作,返回菜单界面*/return;s=m-next;while(s)/*查询该会员号是否已经存在*/if(strcmp(s-inf.mnum,num)=0)flag=1;break;s=s-next;if(flag=1)/*提示用户是否重新输入*/getchar();printf(=Thenumber%sisexisting,tryagain?

(y/n):

num);scanf(%c,&ch);if(ch=y|ch=Y)continue;elsereturn;elsebreak;p=(Mnode*)malloc(sizeof(Mnode);/*申请内存空间*/if(!

p)printf(nallocatememoryfailure);/*如没有申请到,输出提示信息*/return;/*返回主界面*/strcpy(p-inf.mnum,num);/*将会员号拷贝到p-data.num中*/stringinput(p-inf.mname,15,Name:

);stringinput(p-inf.tel,15,Telephone:

);p-next=NULL;r-next=p;/*将新结点插入链表中*/r=p;return;voidsearch(Linkl)/*图书查询*/intselect;charsearchinput20;Node*p;if(!

l-next)/*若链表为空*/system(cls);printf(n=Norecord!

n);getchar();return;system(cls);printf(nt1Searchbynumbernt2Searchbynamen);printf(pleasechoice1,2:

);scanf(%d,&select);if(select=1)/*按书号查询*/stringinput(searchinput,10,inputtheexistingstudentnumber:

);p=Locate(l,searchinput,num);if(p)/*若p!

=NULL*/printheader();printdata(p);printf(END);printf(pressanykeytoreturn);getchar();elseNofind();getchar();elseif(select=2)/*按书名查询*/stringinput(searchinput,15,inputtheexistingbookname:

);p=Locate(l,searchinput,name);if(p)printheader();printdata(p);printf(END);printf(pressanykeytoreturn);getchar();elseNofind();getchar();elseWrong();getchar();voidDel(Linkl)/*删除指定的图书记录*/intsel;Node*p,*r;charfindmess20;if(!

l-next)system(cls);printf(n=Norecord!

n);getchar();return;system(cls);Disp(l);printf(n=1Deletebynumber=2Deletebynamen);printf(pleasechoice1,2:

);scanf(%d,&sel);if(sel=1)stringinput(findmess,10,inputtheexistingstudentnumber:

);p=Locate(l,findmess,num);if(p)/*p!

=NULL*/r=l;while(r-next!

=p)r=r-next;r-next=p-next;/*将p所指节点从链表中去除*/free(p);/*释放内存空间*/printf(n=deletesuccess!

n);getchar();elseNofind();getchar();elseif(sel=2)/*先按书名查询*/stringinput(findmess,15,inputtheexistingbookname);p=Locate(l,findmess,name);if(p)r=l;while(r-next!

=p)r=r-next;r-next=p-next;free(p);printf(n=deletesuccess!

n);getchar();elseNofind();getchar();elseWrong();getchar();voidModify(Linkl)/*修改图书信息*/Node*p;charfindmess20;if(!

l-next)system(cls);printf(n=Nobookrecord!

n);getchar();return;system(cls);printf(modifybookrecorder);Disp(l);stringinput(findmess,10,inputtheexistingbooknumber:

);p=Locate(l,findmess,num);/*查询到该节点*/if(p)/*若p!

=NULL,表明已经找到该节点*/printf(Number:

%s,n,p-data.num);printf(Name:

%s,p-data.name);stringinput(p-data.name,15,inputbookname:

);printf(price:

%d,p-data.price);p-data.price=numberinput(thepriceofbook:

);printf(Author:

%s,p-data.author);stringinput(p-data.author,15,Author:

);printf(Publishingcompany:

%s,p-data.pub);stringinput(p-data.pub,15,Publishingcompany:

);printf(number:

%d,p-data.number);p-data.number=numberinput(thenumberofbook:

);printf(n=modifysuccess!

n);Disp(l);elseNofind();getchar();voidSave(Linkl)/*将数据存盘*/FILE*fp;Node*p;intcount=0;fp=fopen(f:

book,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+;elsebreak;if(count0)getchar();printf(nnntsavefilecomplete,totalsavedsrecordnumberis:

%dn,count);getchar();elsesystem(cls);printf(thecurrentlinkisempty,nostudentrecordissaved!

n);getchar();fclose(fp);voidSavemember(Mlinkm)FILE*fp;Mnode*p;intcount=0;fp=fopen(f:

member,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+;elsebreak;if(count0)getchar();printf(nnntsavefilecomplete,totalsavedsrecordnumberis:

%dn,count);getchar();elsesystem(cls);getchar();fclose(fp);voidSaveoi(Blinkb)FILE*fp;Bnode*p;intcount=0;fp=fopen(f:

borrow,wb);/*以只写方式打开二进制文件*/if(fp=NULL)/*打开文件失败*/printf(n=openfileerror!

n);getchar();return;p=b-next;while(p)if(fwrite(p,sizeof(Bnode),1,fp)=1)/*每次写一条记录或一个节点信息至文件*/p=p-next;count+;elsebreak;if(count0)getchar();printf(nnnnn=savefilecomplete,totalsavedsrecordnumberis:

%dn,count);getchar();elsesystem(cls);getchar();fclose(fp);voidborrow(Linkl,Mlinkm,Blinkb)/*借书*/Mnode*p;Node*q;Bnode*t,*s,*k;charnumber10,booknum10;system(cls);t=b-next;if(!

t)printf(n=Notrecord!

n);printf(nn);printf(HEADER9);printf(HEADER7);printf(HEADER8);while(t)printf(FORMAT2,t-binf.mnum,t-binf.mname,t-binf.num,t-binf.name);t=t-next;printf(HEADER8);while

(1)s=b;p=m-next;q=l-next;while(s-next!

=NULL)s=s-next;stringinput(number,10,pleaseinputthenumberofmember:

);/*输入会员号*/if(strcmp(number,0)=0)break;doif(strcmp(p-inf.mnum,number)=0)/*查看该会员号是否存在*/break;elsep=p-next;while(p!

=NULL);stringinput(booknum,10,pleaseinputthenumberofbook:

);/*输入书号*/doif(strcmp(q-data.num,booknum)=0)/*查看书号是否存在*/break;elseq=q-next;while(q!

=NULL);if(p=NULL)printf(youarenotamember!

);return;elseif(q=NULL)printf(thebookisnotexist!

);return;elseif(q-data.number!

=0)q-data.number-;k=(Bnode*)malloc(sizeof(Bnode);/*申请内存空间*/if(!

k)printf(nallocatememoryfailure);/*如没有申请到,输出提示信息*/return;/*返回菜单界面*/strcpy(k-binf.num,q-data.num);strcpy(k-binf.name,q-data.name);strcpy(k-binf.mnum,p-inf.mnum);strcpy(k-binf.mname,p-inf.mname);k-next=NULL;s-next=k;/*将新结点插入链表中*/s=k;elseprintf(nobook!

);Saveoi(b);/*写记录到磁盘文件中*/getch();voidret(Linkl,Blinkb)/*还书*/Bnode*p,*q;Node*t;charmemnum10,booknum10;q=b;p=q-next;t=l-next;stringinput(memnum,10,pleaseinputthenumberofmember:

);if(strcmp(memnum,0)=0)return;stringinput(booknum,10,pleaseinputthenumberofbook:

);while(p!

=N

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1