图书借阅管理_第1页
图书借阅管理_第2页
图书借阅管理_第3页
图书借阅管理_第4页
图书借阅管理_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 计算机学院课程设计报告书课程名称: C语言课程设计 班 级: 学 号: 姓 名: 指导教师: C语言课程设计-图书借阅管理系统一、总体设计1概述 (1)总体设计目标使用者可以利用本系统进行对图书馆借阅的各项运算操作,如根据用户的需求自动的进行添加图书,删除图书,借书还书。查找所要的图书,查阅图书的详细资料,查阅读者的详细资料。最后清晰完整的结果于屏幕中。大大方便使用者对图书借阅的操作,不仅节省时间,而且提高准确性,可以达到事半功倍的效果。(2)总体设计策本系统采用的是自顶向下、层次化的模块结构。对高层模块,采用以事务为中心的设计策略,把一个大的模块逐步分解成较小的相对简单的模块。对低层模块,

2、采用以变换为中心的设计策略。为了提高每个模块的内聚性、降低模块间的耦合性,将每个模块设计成具有单一功能的模块(即功能内聚),使模块间的联系完全是通过主模块的控制和调用来实现(即非直接耦合)。2计算机系统配置(1)硬件配置(2)软件配置操作系统:windowsXP;C语言编译系统:WIN-TC。3系统结构(1)系统结构图图书馆借阅管理系统的系统结构图如下所示,总共由9个模块组成,其中一个是总控模块,另外8个是分别实现不同功能的子模块:图书馆借阅管理系统总控模块添加图 书 子模块查找图 书子模块借阅图 书子模块归还图 书子模块查找注册会员信 息子模块其他子模块(2)模块说明书A图书馆借阅管理系统总

3、控模块的模块说明书模块名称:图书馆借阅管理系统总控模块输入:主菜单选择项输出:相对应的信息处理:1按以下格式显示主菜单和提示使用者选择: 欢迎来到图书馆借阅管理系统 (1)添加图书 (2)查找图书 (3)借阅图书 (4)归还图书 (5)图书信息 (6)读者信息 (7)注册会员 (8)删除会员 (0)结束操作,退出本系统 请选择(1,2,3,4,5,6,7,8,0):2接收主菜单选择项 如果选择项的值为1,调用添加图书子模块。 如果选择项的值为2,调用查找图书子模块。 如果选择项的值为3,调用借阅图书子模块。 如果选择项的值为4,调用归还图书子模块。 如果选择项的值为5,调用图书信息子模块。 如

4、果选择项的值为6,调用读者信息子模块。如果选择项的值为7,调用添加会员子模块。如果选择项的值为8,调用删除会员子模块。 如果选择项的值为0,调用结束操作,退出本系统子模块。 B添加图书子模块的模块说明书模块名称:添加图书子模块输入:根据给定图书的编号、书名、作者进行添加输出:整个所有图书的信息处理:1按以下格式显示子菜单和提示使用者选择:添加图书子系统 (1)请输入要添加的图书的信息 C查找图书子模块的模块说明书模块名称:查找图书子模块输入:图书的编号输出:图书信息,相对应书的状态处理:1按以下格式显示子菜单和提示使用者选择:借阅图书子系统 (1)请输入图书的编号 D借阅图书子模块的模块说明书

5、模块名称:借阅图书子模块输入:读者的卡号输出:卡号信息,相对应书的状态处理:1按以下格式显示子菜单和提示使用者选择:借阅图书子系统 (1)请输入读者的卡号 E归还图书子模块的模块说明书模块名称:归还图书子模块输入:读者的卡号输出:卡号信息,还书状态处理:1按以下格式显示子菜单和提示使用者选择:归还图书子系统(1) 请输入读者的卡号信息 F图书信息子模块的模块说明书模块名称:图书信息子模块输入:图书的编号输出:相对应图书的信息 处理:1按以下格式显示子菜单和提示使用者选择:图书信息子系统 (1)进行操作G读者信息子模块的模块说明书模块名称:读者信息子模块输入:读者的编号输出:相对应读者的信息处理

6、:1按以下格式显示子菜单和提示使用者选择:读者信息子系统 (1)进行操作。 H注册会员子模块的模块说明书模块名称:注册会员子模块输入:会员的相关信息输出:会员的相关信息处理:1按以下格式显示子菜单和提示使用者选择:注册会员子系统 (1)进行操作 I删除会员子模块的模块说明书模块名称:删除会员信息子模块输入:会员的信息输出:删除相对应会员的信息处理:1按以下格式显示子菜单和提示使用者选择:删除会员子系统 (1)进行操作。 二、详细设计1“图书馆借阅管理系统总控模块”的详细设计(1)概述本模块的详细设计的依据是:总体设计中的“A图书馆借阅管理系统总控模块”的模块说明书。(2) 程序流程图如下:开始

7、定义整型变量c1显示主菜单,让使用者选择操作内容,给变量c1赋值(16)C1=6switch(c1)注册会员子模块归还图书子模块c1=1 c1=2 c1=3 c1=4 c1=5 添 加图 书子模块借阅图 书子模块查找图 书子模块其他子模块 结束2“添加图书子模块”的详细设计(1)概述本模块的详细设计的依据是:总体设计中的“B添加图书子模块”的模块说明书。(2)程序流程图如下:开始定义整型变量 i示操作项目,显让使用者选择请输入所要添加的图书的信息继续添加书本请输入所要添加的图书的信息请输入所要添加的图书的信息返回3“查找图书子模块”的详细设计(1)概述本模块的详细设计的依据是:总体设计中的“C

8、查找图书子模块”的模块说明书。(2)程序流程图如下:开始定义整型变量 i,n显示示操作项目,显让使用者选择请输入图书的编号相对应图书的信息显示出来返回4“借阅图书子模块”的详细设计(1)概述本模块的详细设计的依据是:总体设计中的“D借阅图书子模块”的模块说明书。(2)程序流程图如下:开始定义整型变量 i,n显示示操作项目,显让使用者选择请输入读者的卡号读者借阅的相关信息显示出来返回5“归还图书子模块”的详细设计(1)概述本模块的详细设计的依据是:总体设计中的“E归还图书子模块”的模块说明书。(2)程序流程图如下:开始定义整型变量 i,n显示操作项目,显让使用者选择输入读者的卡号显示读者还书的相

9、关状态返回6“会员注册子模块”的详细设计(1)概述本模块的详细设计的依据是:总体设计中的“H会员注册子模块”的模块明书。(2)程序流程图如下:开始定义整型变量 i,n等显示操作项目,显让使用者选择请输入会员相关信息保存读者的相关信息返回7“删除会员子模块”的详细设计(1)概述本模块的详细设计的依据是:总体设计中的“I删除会员子模块”的模块明书。(2)程序流程图如下:开始定义整型变量 i,n等显示操作项目,显让使用者选择请输入要删除的会员相关信息删除对应会员的相关信息返回三、编码1说明“图书馆借阅管理系统总控模块”的功能由main函数实现,根据“图书馆借阅管理系统总控模块”的程序流程图编写mai

10、n函数。“添加图书子模块”的功能由BookAdd函数实现,根据“添加成绩子模块”的程序流程图编写addbook函数。 “查找图书子模块”的功能由BookConsult函数实现,根据“查找图书子模块”的程序流程图编写findbook函数。“借阅图书子模块”的功能由BookBorrow函数实现,根据“借阅图书子模块”的程序流程图编写lendbook函数。“归还图书子模块”的功能由BookReturn函数实现,根据“归还图书子模块”的程序流程图编写returnbook函数。 “注册会员子模块”的功能由MemberAdd函数实现,根据“注册会员子模块” 程序流程图编写memberadd函数。“删除会员

11、子模块”的功能由MemberDel函数实现,根据“删除会员子模块” 程序流程图编写memberdel函数。2选择编写程序语言-C语言四、图书馆借阅管理程序代码:#include#include#include#include#include#include#include#defineLEFT0x4b00/*左*/#defineRIGHT0x4d00/*右*/#defineDOWN0x5000/*下*/#defineUP0x4800/*上*/#defineSPACE0x3920/*空格*/#defineESC0x011b/*ESC键*/#defineENTER0x1c0d/*回车键*/#def

12、ineBackspace0xe08/*擦除键*/#defineALT_B12288/*组合键ALT_B*/#defineALT_M12800/*组合键ALT_M*/#defineALT_H8960/*组合键ALT_H*/intkey;/*按键变量*/inttextx,texty;/*光标坐标,x行,y列*/structmenustruct/*菜单用的结构体*/charname10;/*主菜单名*/charstr1020;/*选项*/intn;/*选项数*/ml3;/*使用了3个,可根据需要增删*/typedefstructBookList/*书的结构体*/charnum20;/*图书编号*/c

13、harname20;/*书名*/intprice;/*书的价格*/charperson20;/*借阅人*/intyes;/*判断书是否存在或者已经借出,1存在,0借出*/structBookList*next;Book;typedefstructMemberList/*会员的结构体*/charname20;/*会员的姓名*/charsex2;/*会员的性别*/intage;/*会员的年龄*/structMemberList*next;Member;charsave4096;/*保存文本区域空间*/*charsav14096;*/charc4096;/*清屏专用空间*/inti,j;/*常用变量

14、*/voidMenu();/*初始化界面*/voidSelectitem();/*定义菜单*/voidDrawSelectitem();/*显示主菜单*/voidBlackText(intx,inty,char*z);/*选中菜单*/voidRedText(intx,inty,char*z);/*正常菜单*/voidRun();/*具体操作过程*/voidDrawMl(intn);/*显示下拉菜单*/voidMoveMl(intn,intx);/*菜单选项的控制*/voidEnter(intm,intn);/*菜单选项的具体功能*/voidBookAdd();/*添加图书*/voidBookC

15、onsult();/*图书查询*/voidBookDel();/*删除图书资料*/voidBookBorrow();/*借书*/voidBookReturn();/*还书*/voidMemberAdd();/*增加会员*/voidMemberConsult();/*查询会员*/voidMemberDel();/*删除会员*/voidMemberBook();/*查询会员借书信息*/voidHelp();/*帮助*/voidVer();/*版本信息*/voidClrScr();/*自定义清屏函数*/voidDrawFrame(intleft,intup,intright,intdown,intt

16、extcolor,intbackgroundcolor);/*画边框*/*主函数*/voidmain(void)Menu();/*初始化界面*/Run();/*具体操作过程*/*初始化界面*/voidMenu()system(cls);/*调用系统的清屏命令*/textbackground(BLUE);/*将背景设置为蓝色*/window(1,1,25,80);clrscr();textx=3;/*光标初始化位置*/texty=2;gotoxy(1,2);printf(%c,218);/*画左上角*/for(i=0;i78;i+)printf(%c,196);/*画水平直线*/printf(%

17、c,191);/*画右上角*/for(i=3;i=23;i+)gotoxy(1,i);printf(%c,179);/*画垂直线*/gotoxy(80,i);printf(%c,179);printf(%c,192);/*画左下角*/for(i=0;i78;i+)printf(%c,196);printf(%c,217);/*画右下角*/gotoxy(1,1);textcolor(7);/*设置灰色*/for(i=0;i80;i+)cprintf(%c,219);/*用符号实现画主菜单的灰色背景区*/Selectitem();/*调用选项函数*/DrawSelectitem();/*画选项*/

18、gettext(2,3,78,23,c);/*保存当前文本区域*/*定义菜单*/voidSelectitem()strcpy(,Book);/*下面的具体选项补空格是为了各菜单黑色背景相同*/strcpy(ml0.str0,Add);/*添加图书*/strcpy(ml0.str1,Consult);/*查询图书*/strcpy(ml0.str2,Del);/*删除图书资料*/strcpy(ml0.str3,Borrow);/*借书*/strcpy(ml0.str4,Return);/*还书*/strcpy(ml0.str5,Exit);/*退出系统*/ml0.n=6;/*保存菜

19、单的项数*/strcpy(,Member);strcpy(ml1.str0,Add);/*添加新会员*/strcpy(ml1.str1,Consult);/*查询会员资料*/strcpy(ml1.str2,Del);/*删除会员资料*/strcpy(ml1.str3,Member&book);ml1.n=4;strcpy(,Help);/*系统帮助*/strcpy(ml2.str0,ThisSystem);strcpy(ml2.str1,Ver);ml2.n=2;/*显示主单名*/voidDrawSelectitem()for(i=0;i3;i+)RedText

20、(i,1,);/*显示主菜单名,且首字母为红色*/*正常显示菜单*/voidRedText(intx,inty,char*z)textbackground(7);/*设置背景颜色为浅灰色*/gotoxy(3+x*20,y);for(j=0;zj;j+)if(j=0)textcolor(RED);/*第一个字母显示红色*/elsetextcolor(BLACK);/*设置黑色*/cprintf(%c,zj);/*输出菜单名*/*显示选中菜单*/voidBlackText(intx,inty,char*z)textbackground(0);/*设置背景颜色为黑色*/textcol

21、or(15);/*设置文本颜色为白色*/gotoxy(3+20*x,y);/*定位坐标*/cputs(z);/*输出菜单名字符串*/*按键操作过程*/voidRun()while(1)gotoxy(texty,textx);key=bioskey(0);/*接收按键*/switch(key)caseALT_B:caseESC:DrawMl(0);break;/*显示下拉菜单1*/caseALT_M:DrawMl(1);break;/*显示下拉菜单2*/caseALT_H:DrawMl(2);/*显示下拉菜单3*/caseUP:/*上光标键的操作控制*/if(textx=3)textx=23;t

22、extx-;gotoxy(texty,textx);break;caseDOWN:/*下光标键的操作控制*/if(textx=23)textx=3;textx+;gotoxy(texty,textx);break;caseLEFT:/*左光标键的操作控制*/if(texty=2)texty=79;texty-;gotoxy(texty,textx);break;caseBackspace:/*擦除键的设置*/if(texty=2&textx=3)continue;elseif(texty!=2)texty-;/*擦除键的细节问题,先擦去东西,然后光标还要往后退一格*/elseif(texty=

23、2)texty=78;textx-;gotoxy(texty,textx);printf();gotoxy(texty,textx);break;/*endcase0xe08*/caseRIGHT:/*右光标键的操作控制*/if(texty=79)texty=2;texty+;gotoxy(texty,textx);break;caseSPACE:/*空格键的操作*/if(texty=79)continue;elsegotoxy(texty,textx);/*空格的细节操作*/printf();texty+;gotoxy(texty,textx);break;caseENTER:/*回车的控制

24、操作*/if(textx=23)continue;textx+;texty=2;gotoxy(texty,textx);break;default:/*非控制键的结果*/if(texty=79&textx=23)/*到达最后就不再输出*/continue;elseif(texty=79&textx!=23)/*到行的最后*/textx+;texty=2;gotoxy(texty,textx);/*输出结果*/printf(%c,key);if(texty=79)/*如果texty=79就不执行*/continue;else/*如果没到行尾就继续执行,使光标向前移动一位*/texty+;/*大循

25、环的大括号*/*画边框函数*/voidDrawFrame(intl,intu,intr,intd,inttcolor,intbcolor)textbackground(bcolor);/*背景颜色*/textcolor(bcolor);/*文本颜色*/for(i=l;i=r;i+)/*输出背景区域*/for(j=u;j=d;j+)gotoxy(i,j);printf(%c,219);/*输出背景字符*/textcolor(tcolor);/*边框颜色*/for(i=u+1;id;i+)/*在背景区域内输出边框线*/gotoxy(l,i);cprintf(%c,179);/*垂直线*/gotox

26、y(r,i);cprintf(%c,179);for(i=l+1;ir;i+)gotoxy(i,u);cprintf(%c,196);/*水平线*/gotoxy(i,d);cprintf(%c,196);gotoxy(l,u);cprintf(%c,218);/*左上角*/gotoxy(r,u);cprintf(%c,191);/*右上角*/gotoxy(l,d);cprintf(%c,192);/*左下角*/gotoxy(r,d);cprintf(%c,217);/*右下角*/*gettext(l+1,u+1,r-1,d-1,save1);*/*保存边框内区域*/*显示具体下拉选择项目*/v

27、oidDrawMl(intn)gettext(1,1,80,25,save);/*保存被掩盖的地方*/BlackText(n,1,);/*反选显示主菜单*/DrawFrame(3+20*n-1,2,3+20*n+19,3+mln.n,0,7);/*下拉菜单的边框*/for(i=3;inext=p;/*新记录插入到链表的尾*/p-next=NULL;/*最后一个结点的后继为空*/fclose(fp);ClrScr();printf(Inputthebookname:);gets(bookname);/*输入图书名*/p=head;while(p!=NULL)/*按名字查找要删除的

28、图书*/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();/*借书*/voidBookBorrow()FILE*fp;Boo

29、kconsultbook;Memberconsultmember;charbookname20,membername20;intflag=0,mflag=0;ClrScr();gotoxy(2,3);printf(Inputthemermbername:);gets(membername);/*输入会员名*/if(fp=fopen(member.txt,rb)=NULL)/*没找到文件*/gotoxy(3,3);printf(Cannotopenfilen!);return;elsewhile(!feof(fp)/*查询会员资料*/fread(&consultmember,sizeof(Mem

30、ber),1,fp);if(strcmp(,membername)=0)mflag=1;/*是会员标志*/break;fclose(fp);if(mflag=0)gotoxy(2,4);printf(Younotisamember,pleasregister!);/*不是会员不能借书*/return;gotoxy(3,5);printf(Inputthebookname:);gets(bookname);/*输入图书名*/ClrScr();if(fp=fopen(book.txt,rb+)=NULL)/*没找到文件*/gotoxy(2,3);printf(C

31、annotopenfilen!);return;while(!feof(fp)/*查询图书资料*/fread(&consultbook,sizeof(Book),1,fp);if(strcmp(,bookname)=0)if(consultbook.yes=0)/*图书已经借出的判断*/gotoxy(2,3);printf(Thisbookhasborrowedn!);break;elseconsultbook.yes=0;/*作借出标志*/strcpy(consultbook.person,membername);/*登记借书会员*/fseek(fp,-1L*

32、sizeof(Book),1);/*从当前位置前移一条记录指针*/fwrite(&consultbook,sizeof(Book),1,fp);/*写记录*/gotoxy(2,3);printf(Borrowedsucc!);flag=1;/*借出书标志*/break;if(flag!=1)ClrScr();gotoxy(2,3);printf(Borrowedfail!n);/*借书失败*/fclose(fp);/*还书*/voidBookReturn()FILE*fp;Bookconsultbook;charbookname20;intflag=0;ClrScr();if(fp=fopen(book.txt,rb+)=NULL)/*没找到文件*/gotoxy(2,3);printf(cannotopenfilen!);return;printf(Inputthebookname:);gets(bookn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论