C大作业图书管理系统实验报告.pdf
《C大作业图书管理系统实验报告.pdf》由会员分享,可在线阅读,更多相关《C大作业图书管理系统实验报告.pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、附件 1:学学号:号:0121213640126面向对象面向对象程程序设计序设计大作业大作业题题目目学生学生成成绩绩管管理理系统系统学学院院文法文法学学院院教育教育学学专专业业班班级级教育教育学学12011201杨欣杨欣姓姓名名指导指导教教师师鄢红鄢红国国2013 年12 月20日目目录录一设计目的.1二大作业的内容.2三大作业的要求与数据.3四大作业应完成的工作.4五总体设计(包含几大功能模块).5六详细设计(各功能模块的具体实现算法流程图).6七调试分析(包含各模块的测试用例,及测试结果).7八总结.8十参考资料.9一大作业的目的面向对象程序设计是一门实践性很强的课程,通过大作业不仅可以全
2、方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用 C+语言独立地编写、调试应用程序和进行其它相关设计的技能。二大作业的内容对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数等)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.将图书的信息进行记录,信息内容包含:(1)图书的编号(2)图书的书名(3)图书的库存量。假设,现收集到了一个图书馆的所有图书信息,要求用C 语言编写一个简单的图书管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,
3、熟悉系统建设过程。三大作业的要求与数据1、用C语言实现系统;2、对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.3、图书信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:(1)每一条记录包括一本图书的编号、书名、库存量(2)图书信息录入功能:(图书信息用文件保存,可以一次完成若干条记录的输入。)(3)图书信息显示浏览功能:完成全部图书记录的显示。(4)查询功能:完成按书名查找图书记录,并显示。(5)图书信息的删除:按编号进行图书某图书的库存量.(6)借书登记系统:可以输入读者编号和所借书号来
4、借书。(7)还书管理系统:可以输入读者编号和所借书号来还书。(8)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!四大作业应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写大作业报告。内容包括:1)封面扉页2)设计任务书3)目录4)总体设计方案(包括流程图)5)使用说明及运行实例(包括界面)6)成员设计内容简介7)项目源程序代码(注意注释的使用)8)指导教师评语五总体设计(包含几大功能模块)1、新书入库模块;2、查询模块;3、借阅管理模块;4、借书登记模块;5、还书管理模块;6、输出信息模块;7、退出系统模块;六详细设计(各功能模
5、块的具体实现算法流程图)6.1 各函各函数数的的功功能和能和实实现现1、新书入库模块:形参分别为:书名,书号,以及有多少本书要入库,再根据要求将信息写入文件 boot.dat 中。又由于最开始要输入三本新书,故可以加一个初始化函数init_book(),但是初始化函数只执行一次,也就是在系统第一次运行的时候执行,此时可以根据判断是否存在 boot.dat 这个文件来决定是否执行初始化函数。开始Y根据数量修改库存if(还有新书)输入新书名、新书号和新书数量Y已存在此新书N结束Nbook.dat 中增加此新书,根据数量设置库存2、查询模块:可用一个函数 voidfind_book(charbook
6、_num)来实现。找到就输出此书全部信息,找不到就输出查找失败信息。3、成绩查询功能开始输入要查询的书号是否存在此书NY输入信息:此书不存在输入此书的全部信息结束N是否继续查询Y3、借阅管理模块:用初始化函数 init_reader()来实现对读者的初始化。因为读者初始化函数也只是在系统第一次运行的时候执行一次,故也可以根据是否存在reader.dat文件来确定是否执行此函数。(到 现在可以发现在系统初始化函数里,至少已经需要调用两个初始化函数了)4、借书登记模块:可用一个函数 borrow_book(char reader_num,char book_num)来实现。在函数中要分别判断A 该
7、读者的编号是否已经存在,如果不存在,则提示错误。B 该读者的借阅书是否已满(即最多只能借 1 本书)如果是,则提醒该用户先去还书C 输出的书号对应的书是否存在,如果不存在,则提醒读者不存在此书。借书过程完成后,则对读者信息里的借书信息写上所借书号,并修改库存量。输入读者编号YN是否存在编号N输出出错信息Y是否重输否满Y借书卡是否满提示不能借书是否还书NNY输入需要借的书号书号存在否进入还书模块N结束N还有读者借书YY借书登记,修改 book.dat中的现存信息,reader.dat中的借书卡信息5、还书管理模块:可用一个函数 return_book(char reader_num,char b
8、ook_num)来实现。在实现此函数时要判断:A 该读者的姓名是否已经存在,如果不存在,则提示错误。B 该读者是否已经借阅此书。如果没有,则提示错误。C 还书过程完成后,则对读者信息里的借书信息清零,并修改库存量。开始输入读者编号YN是否存在编号输出出错信息是否重输否满Y还书将读者信息借书卡清 0修改 book.dat 现存信息输入还书的书的编号核对书号正确是否重输N错误进入查询模块还有读者还书NY结束6、输出信息模块:可分别用模块 print_book()和print_reader()来实现直接从 book.dat 文件和 reader.dat 文件中读取信息并输出。选择输出图书还是读者信息
9、图书输出全部读者信息图书输出全部图书信息结束7、退出系统模块:可用一个函数 exit()来实现。首先将信息保存到文件,释放动态创建的内存空间,再退出此程序。如图 6.1图书管理系统新书入库图书查询借书登记还书登记输出图书信息输出读者信息退出系统七调试分析(包含各模块的测试用例,及测试结果)7.1 源程序#include#include#include typedef struct bk char book_num11;char book_name41;intbook_kc;intbook_xc;struct bk*next;book;/*图书信息*/typedef struct rd char
10、 reader_num11;char reader_name11;char reader_book_num11;struct rd*next;reader;/*读者信息*/struct bk*h_book,*h_reader;/*全局变量,分别为指向图书信息链表和读者信息链表的头指针*/void Form_Insert_New_Book();/*新书入库菜单*/void Form_Find_Book();/*查询图书菜单*/void Form_Borrow_Book();/*借书菜单*/void Form_Return_Book();/*还书菜单*/void Find_Book(char*);
11、/*查询图书*/void Insert_New_Book(char*,char*,int);/*新书入库,即在链表中插入一个新节点*/void Borrow_Book(char*,char*);/*借书,修改读者借阅信息和图书的现存信息*/void Return_Book(char*,char*);/*还书,修改读者借阅信息和图书的现存信息*/void print_book(struct bk*);/*输出全部图书信息*/void print_reader(struct rd*);/*输出全部读者信息*/void load_data();/*从文件中读取数据,链表头指针指向第一个节点*/voi
12、d init_reader();/*第一次运行程序时对三个读者的初始化*/void init_book();/*第一次运行程序时对三本图书的初始化*/void save();/*将链表中的信息保存到文件中*/void M_Form()/*主菜单*/char ch;printf(n图书管理系统主窗口);printf(n0:退出系统);printf(n1:新书入库);printf(n2:图书查询);printf(n3:借书登记);printf(n4:还书管理);printf(n5:输出全部信息);do/*此循环用来保证选择正确的数字键执行相应的功能*/printf(nn请选择相应的功能代码:);s
13、canf(%c,&ch);fflush(stdin);/*用于清除键盘缓冲区中的多余字符*/while(ch!=0&ch!=1&ch!=2&ch!=3&ch!=4&ch!=5);switch(ch)/*根据输入的字符进行选择执行相应的模块*/case 0:exit(0);case 1:Form_Insert_New_Book();break;case 2:Form_Find_Book();break;case 3:Form_Borrow_Book();break;case 4:Form_Return_Book();break;case5:load_data();print_book(h_boo
14、k);print_reader(h_reader);M_Form();default:printf(errorn);exit(0);void Form_Find_Book()char ch;char book_num11;printf(n图书查询功能模块,请选择相应的功能代码:n);printf(0:返回到主菜单n);printf(1:图书查询);doprintf(nn请选择相应的功能代码:);scanf(%c,&ch);fflush(stdin);while(ch!=0&ch!=1);switch(ch)case 0:M_Form();break;/*选择 0,则返回到上一级目录,即主菜单*
15、/case 1:printf(n 请输入需要需要查询的书的编号:);scanf(%s,book_num);fflush(stdin);Find_Book(book_num);/*执行查询*/Form_Find_Book();/*查询完毕后继续返回到查询窗口,执行下一个查询*/default:printf(errorn);exit(0);void Find_Book(char book_num)/*查询图书模块,根据图书编号查询*/struct bk*p;p=h_book;while(p!=NULL&strcmp(p-book_num,book_num)!=0)p=p-next;/*此循环用于查
16、找,如果在中间找到,则 p 就不可能到末尾指向空*/if(p=NULL)printf(nt 此编号对应的图书不存在!n);else printf(nt图书编号t 图书名t 库存量t 现存量n);printf(%10st%10st%dt%dtn,p-book_num,p-book_name,p-book_kc,p-book_xc);getch();void init_book()/*初始化图书模块*/book ba3;FILE*fp;int i;printf(n系统即将进行初始化,图书初始化模块:n);printf(n请分别输入三本书的书号,书名,数量(以空格隔开):n);for(i=0;i3;
17、i+)/*输入 3 本图书进行初始化*/scanf(%s%s%d,bai.book_num,bai.book_name,&bai.book_kc);for(i=0;i3;i+)bai.book_xc=bai.book_kc;/*开始时库存=现存*/if(fp=fopen(book.dat,wb)=NULL)/*建立新文件 book.dat 准备写入数据*/printf(不能建立图书文件,初始化失败!请重新启动系统!n);return;for(i=0;ibook_num,book_num)!=0)q=p;p=p-next;if(strcmp(p-book_num,book_num)=0)prin
18、tf(ntt 此编号已经存在,请重新输入!n);return;t=(struct bk*)malloc(sizeof(struct bk);strcpy(t-book_num,book_num);strcpy(t-book_name,book_name);t-book_kc=t-book_xc=number;q-next=t;t-next=NULL;if(book_fp=fopen(book.dat,ab)=NULL)printf(不能建立图书文件,初始化失败!请重新启动系统!n);return;/*将新书信息添加到文件中*/fwrite(t,sizeof(struct bk),1,book_
19、fp);fclose(book_fp);void print_book(struct bk*h)/*输出图书信息*/struct bk*p;p=h;printf(nt 图书编号t 图书名t 库存量t 现存量n);while(p!=NULL)printf(%10st%10s%10dt%10dn,p-book_num,p-book_name,p-book_kc,p-book_xc);p=p-next;void print_reader(struct rd*h)/*输出读者信息*/struct rd*p;p=h;printf(nt 读者编号t 读者姓名t 所借书号n);while(p!=NULL)p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业 图书 管理 系统 实验 报告
限制150内