图书管理系统VC60程序设计_第1页
图书管理系统VC60程序设计_第2页
图书管理系统VC60程序设计_第3页
图书管理系统VC60程序设计_第4页
图书管理系统VC60程序设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、福建农林大学计算机与信息学院计算机类课程设计报告课程名称:程序设计基础课程设计题目:图书管理系统姓 名:曾碧滢系:数学系专 业:信息与计算科学年 级:13级学 号:3136003038指导教师:林耀海福建农林大学计算机与信息学院计算机类课程设计结果评定评语: 成绩:指导教师签字:任务下达日期:评定日期:目 录一、课程设计的目的:4二、课程设计的要求:4三、实习地点:个人电脑4四、主要仪器设备(实验用的软硬件环境):4五、算法的思想4六、设计流程图6七、程序代码:6八、程序运行的结果:41参考文献47致谢:47两图书管理系统一、课程设计的目的:1. 了解并掌握C语言的程序设计方法,具备初步的独立

2、分析和设计能力;2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;二、课程设计的要求:1. 了解并掌握C语言程序设计的一般方法,具备初步的独立分析和设计能力;2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;三、实习地点:个人电脑四、主要仪器设备(实验用的软硬件环境):硬件环境:PC机 ,软件环境:vc 6.0

3、五、算法的思想本程序用文件来储存图书信息和读者信息。· Step1:程序运行预处理,读取图书库文件和读者库文件信息,获取系统时间。读取文件的方法:通过函数fread()每次读取一个结点的信息,同时储存进链表的结点中,然后每读取一个结点,就依次在链表后面添加一个结点。· Step2:弹出菜单o Step2.1:1.  浏览图书信息         Step2.2:2. 浏览读者信息o Step2.3:3.  图书登记入库    

4、     Step2.4:4. 读者证件办理o Step2.5:5.  读者图书借阅         Step2.6:6. 读者图书归还o Step2.7:7.  读者信息查询         Step2.8:8. 读者信息修改o Step2.9:9.  图书信息修改      

5、   Step2.10:10. 图书资源搜索· Step3:浏览图书信息o 通过遍历单链表来实现打印所有的图书信息· Step4:浏览读者信息o 通过遍历单链表来实现打印所有读者信息,浏览前验证管理员权限· Step5:图书登记入库o 图书登记入库相当于单链表结点的添加,每登记一本图书,就插入一个结点。· Step6:读者证件办理o 读者证件办理相当于往读者链表里头添加结点,新增一个读者信息,就在读者链表尾部添加一个结点。办理证件前先验证管理员权限。· Step7:读者信息查询o 先读者登录,登录相当于在读者链表中

6、找与之登录匹配的信息,匹配成功则登录成功,登录完成后,打印出读者的所有注册和借书信息。· Step8:读者信息修改o 先登录,完成后,进行读者信息修改。· Step9:图书信息修改o 同读者信息修改一样的实现方法。不过在修改前先验证管理员权限。· Step10:图书信息搜索o 这里支持图书名搜索,图书作者搜索,索书号搜索。实现原理:遍历图书链表。· Step11:退出图书系统o 退出前调用图书信息保存函数和读者信息保存函数。将链表信息储存进文件中。然后调用退出函数exit(0)。六、设计流程图七、程序代码:/ 图书管理系统#include <std

7、io.h>#include <stdlib.h>#include <string.h>#include <windows.h>#include <conio.h>#include <time.h> /*定义图书有关的数据结构*/struct book int BookNum; /*图书编号*/ charBookName20; /*图书名字*/ char BookAuthor15;/*图书作者*/ int nowCount; /*图书现存量*/ int allCount; /*图书库存量*/; /*定义与读者有关的数据结构*/st

8、ruct reader int ReaderNum; /*读者编号*/ charReaderName20; /*读者的姓名*/ charReaderSex8; /*读者的性别*/ int ReaderAge; /*读者的年龄*/ charReaderTel15; /*读者的电话*/ int ReaderCount; /*读者目前已经借阅的数目*/ charpassword16; /*读者证件密码*/ chardate10100; /*读者借阅日期*/ intReaderBorrow10; /*当前已经借阅的图书编号*/ charBorrowName1040;/*已经借阅的图书名字*/; /*定

9、义与每条图书纪录有关的数据结构*/typedef struct booknode struct book data; /*数据域*/ struct booknode*next; /*指针域*/BookNode; /*定义与每条读者纪录有关的数据结构*/typedef struct readernode struct readerdata; /*数据域*/ struct readernode*next; /*指针域*/ReaderNode; /*定义图书馆中读者和藏书的总数目*/struct rbnum int rnum; /*读者总个数*/ int bnum; /*书籍总本数*/allRBnu

10、m; /*/*函数声明*/BookNode *OpenBook(); /*打开图书库文件*/ReaderNode *OpenReader(); /*打开读者库文件*/void InBook(BookNode *pbook); /*图书录入*/void SaveBook(BookNode *pbook); /*图书信息保存*/void SaveReader(ReaderNode *preader); /*读者信息保存*/void BorrowBook(BookNode *pbook, ReaderNode *preader); /*图书借阅*/void ReturnBook(BookNode *

11、pbook, ReaderNode *preader); /*图书归还*/void LookBook(BookNode *pbook); /*浏览图书库*/void LookReader(ReaderNode *preader); /*浏览读者库*/void InReader(ReaderNode *preader); /*借书证办理*/void FindReaderAll(ReaderNode *preader); /*读者信息查询*/ReaderNode *LoginReader(ReaderNode *preader); /*读者登陆验证*/int LoginAdmin(); /*管理员

12、登陆验证*/void ModifyReader(ReaderNode *preader); /*修改读者信息*/void ModifyBook(BookNode *pbook); /*修改图书信息*/void GotoXY(int x, int y); /*光标定位*/void erase(int n); /*擦除菜单选项*/void menu(int n); /*菜单选项*/void FindBook(BookNode *pbook); /*图书搜索*/void LocalTime(char *strTime); /*获取系统本地时间*/*/*打开图书文件book,将其存入链表中*/Book

13、Node *OpenBook() FILE *fpbook; BookNode *pb = NULL,*rb = NULL; allRBnum.bnum =0; /*初始化藏书0本*/ BookNode *pbook =(BookNode *)malloc(sizeof(BookNode); /*头指针*/ if (!pbook) printf("空间申请失败n"); exit(0); pbook->next = NULL; rb = pbook; fpbook =fopen(".book.txt","a+"); /*追加的方式

14、打开一个二进制文件*/ if (!fpbook) printf("文件打开失败n"); exit(0); while (!feof(fpbook) pb = (BookNode*)malloc(sizeof(BookNode); /*申请空间*/ if (!pb) printf("空间申请失败n"); exit(0); if (fread(pb,sizeof(BookNode),1,fpbook)= 1) pb->next =NULL; rb->next =pb; rb = pb; /*rb指针向后移一位*/ allRBnum.bnum+=

15、pb->data.allCount; /*总图书数目统计*/ fclose(fpbook); /*关闭文件*/ printf("打开文件成功!图书馆总共藏书:%d本n",allRBnum.bnum); return pbook; /*打开读者文件reader,将其存入链表中*/ReaderNode *OpenReader() FILE *fpreader; ReaderNode *pr = NULL,*rr = NULL; allRBnum.rnum =0; /*初始化读者人数0位*/ ReaderNode *preader =(ReaderNode *)malloc

16、(sizeof(ReaderNode); /*头指针*/ if (!preader) printf("空间申请失败n"); exit(0); preader->next =NULL; rr = preader; fpreader =fopen(".reader.txt","a+"); /*追加的方式打开一个二进制文件*/ if (!fpreader) printf("文件打开失败n"); exit(0); while(!feof(fpreader) pr = (ReaderNode*)malloc(sizeo

17、f(ReaderNode); /*申请空间*/ if (!pr) printf("空间申请失败n"); exit(0); if(fread(pr,sizeof(ReaderNode),1,fpreader) = 1) pr->next =NULL; rr->next =pr; rr = pr; /*rr指针向后移一位*/ +allRBnum.rnum; /*读者数目+1*/ fclose(fpreader); /*关闭文件*/ printf("打开文件成功!拥有有所读者数:%d位n",allRBnum.rnum); return preade

18、r; /*图书录入*/void InBook(BookNode *pbook) printf(">>>>>>>>>>>>>>>>>>>>>>>> 图书登记入库 <<<<<<<<<<<<<<<<<<<<<<<<<<n"); BookNode *pb = pbook; BookNod

19、e *pt =pbook; /*pt临时指针用于遍历整个图书库*/ BookNode *pr =(BookNode *)malloc(sizeof(BookNode); while (pb->next !=NULL) /*找到链表的尾部 开始添加书目*/ pb = pb->next; int i = 1; /*用于临时报号*/ printf("提示:当书号为0时,结束图书录入!n"); printf("_n"); printf("现在正在进行第 %d 本书登记.n",i+); printf("书号:")

20、; scanf("%d",&(pr->data.BookNum); /*书号*/ while(pr->data.BookNum != 0) printf("书名:"); scanf("%s",pr->data.BookName); /*书名*/ printf("作者名:"); scanf("%s",pr->data.BookAuthor); /*作者名*/ pr->data.nowCount= 1; /*现存量初始化为1*/ pr->data.allC

21、ount= 1; /*总存储量初始化为1*/ while (pt->next!= NULL) if(pr->data.BookNum != pt->data.BookNum) pt =pt->next; else /*说明该图书已经存在*/ pt->data.nowCount+= 1; /*现存书目+1*/ pt->data.allCount+= 1; /*总数目+1*/ break; if (pt->next =NULL) /*图书还未入库 则入库*/ if(pr->data.BookNum != pt->data.BookNum) pr

22、->next= NULL; pb->next= pr; /*将新建的结点插入链表尾部*/ pb = pr; else pt->data.nowCount+= 1; /*现存书目+1*/ pt->data.allCount+= 1; /*总数目+1*/ printf("操作成功.n"); pr = (BookNode*)malloc(sizeof(BookNode); /*申请下一个空间*/ printf("现在正在进行第 %d 本书登记.n",i+); printf("书号:"); scanf("%d

23、",&(pr->data.BookNum); /*书号*/ pt = pbook; /*pt临时指针移动到头指针位置*/ printf("_n"); SaveBook(pbook); /*图书信息保存*/ printf("n>>>图书入库完毕<<<-按任意键回主菜单>>>>>>>>>>"); getch(); system("cls"); return;/*图书保存*/void SaveBook(BookNode *

24、pbook) BookNode *pb =pbook->next; FILE *fpbook; fpbook =fopen(".book.txt","w"); /*只写的方式打开文件*/ if (!fpbook) printf("文件打开失败n"); exit(0); while (pb != NULL) if(fwrite(pb,sizeof(BookNode),1,fpbook) = 1) /*每次写一条记录*/ pb =pb->next; fclose(fpbook); return;/*读者信息保存*/void S

25、aveReader(ReaderNode *preader) ReaderNode *pr =preader->next; FILE *fpreader; fpreader =fopen(".reader.txt","w"); /*只写的方式打开文件*/ if (!fpreader) printf("文件打开失败n"); exit(0); while (pr != NULL) if(fwrite(pr,sizeof(ReaderNode),1,fpreader) = 1) /*每次写一条记录*/ pr =pr->next;

26、 fclose(fpreader); return; /*图书借阅*/void BorrowBook(BookNode *pbook, ReaderNode *preader) printf(">>>>>>>>>>>>>>>>>>>>>>>> 读者图书借阅 <<<<<<<<<<<<<<<<<<<<<<<&l

27、t;<<n"); int booknum = 0, flag= 0,time = 3, i = 2; BookNode *pt =pbook; /*图书临时指针*/ ReaderNode *rt =NULL; /*读者临时指针*/ ReaderNode *rr =(ReaderNode *)malloc(sizeof(ReaderNode); /*读者登陆临时节点*/ /*/ if(rt=LoginReader(preader) = NULL) /*读者登陆验证*/ printf("读者验证失败.n"); return; /*/ printf(&quo

28、t;_n"); printf("输入要借阅书籍的索书号:"); scanf("%d",&booknum); while(pt->next!=NULL) if(pt->data.BookNum = booknum) if(pt->data.nowCount >= 1) printf("该书现存量:%d 本,可以借阅.n",pt->data.nowCount); LocalTime(rt->data.datert->data.ReaderCount); /*登记当前借阅图书的日期

29、*/ rt->data.ReaderBorrowrt->data.ReaderCount= pt->data.BookNum; /*纪录当前图书编号*/ strcpy(rt->data.BorrowNamert->data.ReaderCount,pt->data.BookName);/*纪录当前图书名字*/ -pt->data.nowCount; /*图书现在库存-1*/ +rt->data.ReaderCount;/*读者借阅本数+1*/ printf(">>>借书成功<<<n"); p

30、rintf("提醒:请在30天之内归还本书!超期按每天0.1元收费!n"); SaveBook(pbook); /*图书信息保存*/ SaveReader(preader); /*读者信息保存*/ printf("_n"); printf("n>>>图书借阅完毕<<<-按任意键回主菜单>>>>>>>>>>"); getch(); system("cls"); return; printf(">>&g

31、t;很遗憾!该本图书库存目前为空,不可借阅<<<n"); printf("_n"); printf("n>>>图书借阅失败<<<-按任意键回主菜单>>>>>>>>>>"); getch(); system("cls"); return; pt =pt->next; /*遍历图书库*/ if (pt->next =NULL) printf(">>>很遗憾!没有找到该图书<

32、;<<n"); printf("_n"); printf("n>>>图书借阅失败<<<-按任意键回主菜单>>>>>>>>>>"); getch(); system("cls"); return;/*图书归还*/void ReturnBook(BookNode *pbook, ReaderNode *preader) printf(">>>>>>>>>>

33、;>>>>>>>>>>>>>> 读者图书归还 <<<<<<<<<<<<<<<<<<<<<<<<<<n"); int booknum = 0, i =0; BookNode *pt = pbook; ReaderNode *pr =preader; printf("_n"); printf("归还索书号:");

34、 scanf("%d",&booknum); while (pt->next !=NULL) /*遍历图书库*/ if(pt->next->data.BookNum = booknum) while(pr->next != NULL) /*读者借书信息修改*/ for (i =0; i < pr->data.ReaderCount; +i) /*遍历每个读者所借的所有书籍*/ if(pr->data.ReaderBorrowi = pt->next->data.BookNum) +pt->next->

35、data.nowCount; /*归还图书现在库存+1*/ pr->data.ReaderBorrowi= 0; /*借书号注销*/ strcpy(pr->data.datei,""); /*借书时间注销*/ strcpy(pr->data.BorrowNamei,""); /*借书名字注销*/ -pr->data.ReaderCount; /*借书量-1*/ printf("归还成功n"); printf("_n"); printf("n>>>图书归还完毕<

36、;<<-按任意键回主菜单>>>>>>>>>>"); SaveBook(pbook); /*图书信息保存*/ SaveReader(preader); /*读者信息保存*/ getch(); system("cls"); return; pr =pr->next; break; pt = pt->next; if (pt->next=NULL) printf("非本图书馆图书.n"); printf("_n"); printf("

37、;n>>>图书归还失败<<<-按任意键回主菜单>>>>>>>>>>"); getch(); system("cls"); return; printf(">>>请确认图书索书号输入正确<<<n"); printf("本馆该书没有被借出.n"); printf("n>>>图书归还失败<<<-按任意键回主菜单>>>>>>

38、;>>>>"); getch(); system("cls"); return;/*浏览图书信息*/void LookBook(BookNode *pbook) printf(">>>>>>>>>>>>>>>>>>>>>>>> 浏览图书信息 <<<<<<<<<<<<<<<<<<<

39、;<<<<<<<n"); BookNode *pt = pbook; printf("_n"); printf("n书号tt书名tt作者tt现存量t库存量n"); while (pt->next !=NULL) printf("%dtt",pt->next->data.BookNum); /*书号*/ printf("%stt",pt->next->data.BookName); /*书名*/ printf("%stt&qu

40、ot;,pt->next->data.BookAuthor);/*作者*/ printf("%dt",pt->next->data.nowCount); /*现存量*/ printf("%dtn",pt->next->data.allCount); /*库存量*/ pt = pt->next; printf("_n"); printf("n>>>浏览完毕<<<-按任意键回主菜单>>>>>>>>>

41、>"); getch(); system("cls"); return;/*浏览读者信息*/void LookReader(ReaderNode *preader) printf(">>>>>>>>>>>>>>>>>>>>>>>> 浏览读者信息 <<<<<<<<<<<<<<<<<<<<&l

42、t;<<<<<n"); /*管理员权限验证*/ if (LoginAdmin() = 0) printf("管理员验证失败.n"); printf("n>>>没有管理员权限<<<-按任意键回主菜单>>>>>>>>>>"); getch(); system("cls"); return; printf("管理员验证成功.n"); /*/ ReaderNode *pt =preader

43、; printf("_n"); printf("n借书证号t姓名t性别t年龄t电话t已借阅图书本数n"); while (pt->next !=NULL) printf("%dt",pt->next->data.ReaderNum); /*证件号*/ printf("%st",pt->next->data.ReaderName); /*姓名*/ printf("%st",pt->next->data.ReaderSex); /*性别*/ printf(&

44、quot;%dt",pt->next->data.ReaderAge); /*年龄*/ printf("%st",pt->next->data.ReaderTel); /*电话*/ printf("%dtn",pt->next->data.ReaderCount); /*当前借阅图书本数*/ pt = pt->next; printf("_n"); printf("n>>>浏览完毕<<<-按任意键回主菜单>>>>&

45、gt;>>>>>"); getch(); system("cls"); return; /*读者借书证办理*/void InReader(ReaderNode *preader) printf(">>>>>>>>>>>>>>>>>>>>>>>> 读者证件办理 <<<<<<<<<<<<<<<<

46、;<<<<<<<<<<n"); ReaderNode *pr =preader; ReaderNode *pt =preader; /*pt临时指针用于遍历整个读者库*/ ReaderNode *rr =(ReaderNode *)malloc(sizeof(ReaderNode); int i = 1; /*用于临时报号*/ /*管理员权限验证*/ if (LoginAdmin() = 0) printf("管理员验证失败.n"); printf("n>>>没有管理员权限&l

47、t;<<-按任意键回主菜单>>>>>>>>>>"); getch(); system("cls"); return; printf("管理员验证成功.n"); /*/ while (pr->next !=NULL) /*找到链表的尾部 开始添加读者*/ pr = pr->next; printf("提示:当证件号为0时,结束证件办理!n"); printf("_n"); printf("现在正在进行第 %d 位读

48、者证件办理.n",i+); printf("借书证号:"); scanf("%d",&(rr->data.ReaderNum); /*借书证号*/ while(rr->data.ReaderNum != 0) printf("姓名:"); scanf("%s",rr->data.ReaderName); /*姓名*/ printf("性别:"); scanf("%s",rr->data.ReaderSex); /*性别*/ print

49、f("年龄:"); scanf("%d",&(rr->data.ReaderAge); /*年龄*/ printf("电话:"); scanf("%s",rr->data.ReaderTel); /*电话*/ rr->data.ReaderCount= 0; /*已经借阅图书本数初始化为0*/ strcpy(rr->data.password,"123456"); /*证件密码默认为:123456*/ while (pt->next!= NULL) if(r

50、r->data.ReaderNum != pt->data.ReaderNum) pt =pt->next; else /*说明该读者已经存在*/ printf("该证件号已经存在,证件办理失败n"); printf("_n"); printf("n>>>办理失败<<<-按任意键回主菜单>>>>>>>>>>"); getch(); system("cls"); return; if (pt->next =NULL) /*该证件号可以办理*/ rr->ne

温馨提示

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

评论

0/150

提交评论