1、47两图书管理系统1. 了解并掌握C语言的程序设计方法,具备初步的独立分析和设计能力;2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;1. 了解并掌握C语言程序设计的一般方法,具备初步的独立分析和设计能力;个人电脑硬件环境:PC机 ,软件环境:vc 6.0五、算法的思想本程序用文件来储存图书信息和读者信息。 Step1:程序运行预处理,读取图书库文件和读者库文件信息,获取系统时间。读取文件的方法:通过
2、函数fread()每次读取一个结点的信息,同时储存进链表的结点中,然后每读取一个结点,就依次在链表后面添加一个结点。 Step2:弹出菜单o Step2.1:1. 浏览图书信息 Step2.2:2.浏览读者信息o Step2.3:3. 图书登记入库 Step2.4:4.读者证件办理o Step2.5:5. 读者图书借阅Step2.6:6.读者图书归还o Step2.7:7. 读者信息查询 Step2.8:8.读者信息修改o Step2.9:9. 图书信息修改 Step2.10:10.图书资源搜索 Step3:浏览图书信息o 通过遍历单链表来实现打印所有的图书信息 Step4:o 通过遍历单链表
3、来实现打印所有读者信息,浏览前验证管理员权限 Step5:图书登记入库o 图书登记入库相当于单链表结点的添加,每登记一本图书,就插入一个结点。 Step6:o 读者证件办理相当于往读者链表里头添加结点,新增一个读者信息,就在读者链表尾部添加一个结点。办理证件前先验证管理员权限。 Step7:读者信息查询o 先读者登录,登录相当于在读者链表中找与之登录匹配的信息,匹配成功则登录成功,登录完成后,打印出读者的所有注册和借书信息。 Step8:o 先登录,完成后,进行读者信息修改。 Step9:图书信息修改o 同读者信息修改一样的实现方法。不过在修改前先验证管理员权限。 Step10:图书信息搜索o
4、 这里支持图书名搜索,图书作者搜索,索书号搜索。实现原理:遍历图书链表。 Step11:退出图书系统o 退出前调用图书信息保存函数和读者信息保存函数。将链表信息储存进文件中。然后调用退出函数exit(0)。六、设计流程图/ 图书管理系统#include stdlib.hstring.hwindows.hconio.htime.h /*定义图书有关的数据结构*/struct book int BookNum; /*图书编号*/ charBookName20; /*图书名字*/ char BookAuthor15;/*图书作者*/ int nowCount; /*图书现存量*/ int allCo
5、unt; /*图书库存量*/;/*定义与读者有关的数据结构*/struct reader int ReaderNum; /*读者编号*/ charReaderName20; /*读者的姓名*/ charReaderSex8; /*读者的性别*/ int ReaderAge; /*读者的年龄*/ charReaderTel15; /*读者的电话*/ int ReaderCount; /*读者目前已经借阅的数目*/ charpassword16; /*读者证件密码*/ chardate10100; /*读者借阅日期*/ intReaderBorrow10; /*当前已经借阅的图书编号*/ char
6、BorrowName1040;/*已经借阅的图书名字*/*定义与每条图书纪录有关的数据结构*/typedef struct booknode struct book data; /*数据域*/ struct booknode*next; /*指针域*/BookNode;/*定义与每条读者纪录有关的数据结构*/typedef struct readernode struct readerdata; /*数据域*/ struct readernode*next; /*指针域*/ReaderNode;/*定义图书馆中读者和藏书的总数目*/struct rbnum int rnum; /*读者总个数*
7、/ int bnum; /*书籍总本数*/allRBnum;/*/*函数声明*/BookNode *OpenBook(); /*打开图书库文件*/ReaderNode *OpenReader(); /*打开读者库文件*/void InBook(BookNode *pbook); /*图书录入*/void SaveBook(BookNode *pbook); /*图书信息保存*/void SaveReader(ReaderNode *preader); /*读者信息保存*/void BorrowBook(BookNode *pbook, ReaderNode *preader); /*图书借阅*
8、/void ReturnBook(BookNode *pbook, ReaderNode *preader); /*图书归还*/void LookBook(BookNode *pbook); /*浏览图书库*/void LookReader(ReaderNode *preader); /*浏览读者库*/void InReader(ReaderNode *preader); /*借书证办理*/void FindReaderAll(ReaderNode *preader); /*读者信息查询*/ReaderNode *LoginReader(ReaderNode *preader); /*读者登陆
9、验证*/int LoginAdmin(); /*管理员登陆验证*/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); /*获取系统本地时间*/
10、*打开图书文件book,将其存入链表中*/BookNode *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+ /*追加的方式打开一个二进制文件*/fpbook
11、)文件打开失败n while (!feof(fpbook) pb = (BookNode*)malloc(sizeof(BookNode); /*申请空间*/ if (!pb) printf( exit(0); if (fread(pb,sizeof(BookNode),1,fpbook)= 1) pb-next =NULL; rb-next =pb; rb = pb; /*rb指针向后移一位*/ allRBnum.bnum+= pb-data.allCount; /*总图书数目统计*/ fclose(fpbook); /*关闭文件*/ printf(打开文件成功!图书馆总共藏书:%d本n,a
12、llRBnum.bnum); return pbook;/*打开读者文件reader,将其存入链表中*/ReaderNode *OpenReader() FILE *fpreader; ReaderNode *pr = NULL,*rr = NULL; allRBnum.rnum =0; /*初始化读者人数0位*/ ReaderNode *preader =(ReaderNode *)malloc(sizeof(ReaderNode); /*头指针*/preader) preader- rr = preader; fpreader =fopen(.reader.txt /*追加的方式打开一个二
13、进制文件*/fpreader) while(!feof(fpreader) pr = (ReaderNode*)malloc(sizeof(ReaderNode);pr) if(fread(pr,sizeof(ReaderNode),1,fpreader) = 1) pr- rr-next =pr; rr = pr; /*rr指针向后移一位*/ +allRBnum.rnum; /*读者数目+1*/ fclose(fpreader);拥有有所读者数:%d位n,allRBnum.rnum); return preader;/*图书录入*/void InBook(BookNode *pbook) p
14、rintf( 图书登记入库 next !=NULL) /*找到链表的尾部 开始添加书目*/ pb = pb-next; int i = 1; /*用于临时报号*/提示:当书号为0时,结束图书录入!_n现在正在进行第 %d 本书登记.n,i+);书号: scanf(%d,&(pr-data.BookNum); /*书号*/ while(pr-data.BookNum != 0)书名: scanf(%s,pr-data.BookName); /*书名*/作者名:data.BookAuthor); /*作者名*/ pr-data.nowCount= 1; /*现存量初始化为1*/data.allCo
15、unt= 1; /*总存储量初始化为1*/ while (pt-next!= NULL) if(pr-= pt-data.BookNum) pt =pt- else /*说明该图书已经存在*/ pt-data.nowCount+= 1; /*现存书目+1*/data.allCount+= 1; /*总数目+1*/ break; if (pt-next =NULL) /*图书还未入库 则入库*/ pr-next= NULL; pb-next= pr; /*将新建的结点插入链表尾部*/ pb = pr; else操作成功.n pr = (BookNode*)malloc(sizeof(BookNo
16、de); /*申请下一个空间*/ pt = pbook; /*pt临时指针移动到头指针位置*/ SaveBook(pbook); /*图书信息保存*/n图书入库完毕 getch(); system(cls return;/*图书保存*/void SaveBook(BookNode *pbook) BookNode *pb =pbook-w /*只写的方式打开文件*/ while (pb ! if(fwrite(pb,sizeof(BookNode),1,fpbook) = 1) /*每次写一条记录*/ pb =pb-/*读者信息保存*/void SaveReader(ReaderNode *p
17、reader) ReaderNode *pr =preader- while (pr ! if(fwrite(pr,sizeof(ReaderNode),1,fpreader) = 1) /*每次写一条记录*/ pr =pr-/*图书借阅*/void BorrowBook(BookNode *pbook, ReaderNode *preader) 读者图书借阅 int booknum = 0, flag= 0,time = 3, i = 2; /*图书临时指针*/ ReaderNode *rt =NULL; /*读者临时指针*/ ReaderNode *rr =(ReaderNode *)malloc(sizeof(ReaderNode); /*读者登陆临时节点*/ /*
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2