1、一 设计目的.1二 大作业的内容.2三 大作业的要求与数据.3四 大作业应完成的工作.4五 总体设计(包含几大功能模块).5六 详细设计(各功能模块的具体实现算法流程图).6七 调试分析(包含各模块的测试用例,及测试结果).7八 总结.8十 参考资料.9一 大作业的目的面向对象程序设计是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C+语言独立地编写、调试应用程序和进行其它相关设计的技能。二 大作业的内容对图书信息(包括编号、书名、总入库数量
2、、当前库存量、已借出本数等)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.将图书的信息进行记录,信息内容包含:(1)图书的编号(2)图书的书名(3)图书的库存量。假设,现收集到了一个图书馆的所有图书信息,要求用C语言编写一个简单的图书管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。三 大作业的要求与数据1、用C语言实现系统;2、对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.3、图书信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功
3、能:(1) 每一条记录包括一本图书的编号、书名、库存量(2) 图书信息录入功能:(图书信息用文件保存,可以一次完成若干条记录的输入。)(3) 图书信息显示浏览功能:完成全部图书记录的显示。(4) 查询功能:完成按书名查找图书记录,并显示。 (5) 图书信息的删除:按编号进行图书某图书的库存量.(6) 借书登记系统:可以输入读者编号和所借书号来借书。(7) 还书管理系统:可以输入读者编号和所借书号来还书。(8)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!四 大作业应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写大作业报告。内容
4、包括:1)封面扉页2)设计任务书3)目录4)总体设计方案(包括流程图)5)使用说明及运行实例(包括界面)6)成员设计内容简介7)项目源程序代码(注意注释的使用)8)指导教师评语五 总体设计(包含几大功能模块) 1、新书入库模块;2、查询模块;3、借阅管理模块; 4、借书登记模块; 5、还书管理模块; 6、输出信息模块; 7、退出系统模块;六 详细设计(各功能模块的具体实现算法流程图)6.1各函数的功能和实现 1、新书入库模块: 形参分别为:书名, 书号,以及有多少本书要入库,再根据要求将信息写入文件boot.dat中。又由于最开始要输入三本新书,故可以加一个初始化函数init_book(),但
5、是初始化函数只执行一次,也就是在系统第一次运行的时候执行,此时可以根据判断是否存在boot.dat这个文件来决定是否执行初始化函数。 Y 根据数量修改库存 N book.dat中增加此新书,根据数量设置库存 2、查询模块: 可用一个函数void find_book(char book_num)来实现。找到就输出此书全部信息,找不到就输出查找失败信息。3、成绩查询功能 N Y 3、借阅管理模块: 用初始化函数init_reader()来实现对读者的初始化。因为读者初始化函数也只是在系统第一次运行的时候执行一次,故也可以根据是否存在reader.dat文件来确定是否执行此函数。(到现在可以发现在系
6、统初始化函数里,至少已经需要调用两个初始化函数了) 4、借书登记模块: 可用一个函数borrow_book(char reader_num,char book_num)来实现。在函数中要分别判断 A 该读者的编号是否已经存在,如果不存在,则提示错误。 B 该读者的借阅书是否已满(即最多只能借1本书)如果是,则提醒该用户先去还书 C 输出的书号对应的书是否存在,如果不存在,则提醒读者不存在此书。借书过程完成后,则对读者信息里的借书信息写上所借书号,并修改库存量。 N N Y NN 借书登记,修改book.dat 中的现存信息,reader.dat 中的借书卡信息 Y 5、还书管理模块: 可用一个
7、函数return_book(char reader_num,char book_num)来实现。在实现此函数时要判断:A 该读者的姓名是否已经存在,如果不存在,则提示错误。B 该读者是否已经借阅此书。如果没有,则提示错误。C 还书过程完成后,则对读者信息里的借书信息清零,并修改库存量。 N 错误正确还书将读者信息借书卡清0修改book.dat现存信息N 6、输出信息模块: 可分别用模块print_book()和print_reader()来实现直接从book.dat文件和reader.dat文件中读取信息并输出。图书7、退出系统模块: 可用一个函数exit()来实现。首先将信息保存到文件,释放
8、动态创建的内存空间,再退出此程序。 如图6.1七 调试分析(包含各模块的测试用例,及测试结果)7.1源程序#include math.hstring.htypedef struct bk char book_num11; char book_name41; int book_kc; int book_xc; struct bk * next; book; /* 图书信息*/typedef struct rd char reader_num11; char reader_name11; char reader_book_num11; struct rd * next ; reader;/*读者信
9、息*/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 *); /*查询图书*/void Insert_New_Book(char *,char * ,int ); /*新书入库,即在链表中插入一个新节点*/
10、void Borrow_Book(char *,char *);/*借书,修改读者借阅信息和图书的现存信息*/void Return_Book(char *,char *);/*还书,修改读者借阅信息和图书的现存信息*/void print_book(struct bk *);/*输出全部图书信息*/void print_reader(struct rd *);/*输出全部读者信息*/void load_data();/*从文件中读取数据,链表头指针指向第一个节点*/void init_reader();/*第一次运行程序时对三个读者的初始化*/void init_book();/*第一次运行
11、程序时对三本图书的初始化*/void save();/*将链表中的信息保存到文件中*/void M_Form()/*主菜单*/ char ch; printf(n 图书管理系统主窗口);n 0:退出系统n 1:新书入库n 2:图书查询n 3:借书登记n 4:还书管理n 5:输出全部信息do /*此循环用来保证选择正确的数字键执行相应的功能*/nn 请选择相应的功能代码: scanf(%c,&ch); fflush(stdin); /*用于清除键盘缓冲区中的多余字符*/ while(ch!=0&ch!12345 switch(ch) /*根据输入的字符进行选择执行相应的模块*/ case :ex
12、it(0); case Form_Insert_New_Book();break;Form_Find_Book();Form_Borrow_Book();Form_Return_Book();load_data();print_book(h_book);print_reader(h_reader);M_Form(); default:printf(errorn void Form_Find_Book()n 图书查询功能模块,请选择相应的功能代码:n 0:返回到主菜单n 1: do switch(ch) /*选择0,则返回到上一级目录,即主菜单*/ printf( n请输入需要需要查询的书的编号:%s,book_num)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1