C语言课程设计图书管理系统课程设计报告

更新时间:2023-12-20 09:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言课程设计

图书管理系统 Books Management System

学生姓名 学院名称 学号 班级 专业名称 指导教师

张朝柱 徐州工程学院 20130566140 13计转本 计算机科学与技术

李子龙

2016年

5月 10日

一、需求分析

为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、数量、在库状态等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、借阅、还书等基本操作。整个程序实现顺序表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。

二、算法设计:

1.设计思想:

整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种子函数,操作界面简单,易操作。 2,设计表示:

(1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、借书、还书、显示库存等功能。

(2)、void Book_Entering(struct SqList &SL);这是一个录入图书信息的函数,它主要实现了顺序表的创建,并且在创建过程中从文件读取信息到顺序表中,以用于后面其他函数的操作。它引用了一个顺序表SL。其他函数调用时只需传入顺序表头即可。

(3)、int main(void);这五个函数时整个图书管理系统的全部菜单函数,Book_Entering();为系统主界面,进入时可选择进入程序和退出程序。menu1();为进入程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。Book_Inquire();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。操作完成后按提示信息进行文件的保存操作。

(4)、void Book_Inquire(struct SqList &SL);这个函数为顺序表的输出函数,把顺序表的头传给函数后,可输出整个顺序表的所有信息。、

(5)、void Book_Borrow(struct SqList &SL);这个函数为保存信息到文件的函数,使用时将顺序表的头传给函数,函数可将整个顺序表的所有信息存入到磁盘文件中。并覆盖掉源文件,以便以后调用。

(9)、void Book_Borrow(struct SqList &SL)、void Book_Return(struct SqList &SL);这两个函数是借书还书的函数,在借还后系统会修改图书的在库信息。调用时将顺序表参数带回到主函数。并会出提示信息让用户返回菜单保存信息。

3.实现注释:

这个实用的小型图书管理程序程序以顺序表操作完成,并实现文件信息的录入和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。实现了图书管理的基本功能,包括了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。查询时可按书名、编号、作者等方式查询,找到后输出这本书的所有信息。在添加图书信息后,还增加了顺序表排序操作,并输出整个顺序表,方便用户检查信息。可查询图书的在库状态,方便用户进行借书、还书操作。在借书还书成功后图书的在库状态改变,并有提示信息让用户保存信息。系统中主要的数据结构就是图书的信息,包含编号、书名、作者、出版社、出版时间、价格、在库状态等,在处理过程中各项可以作为一本图书的不同属性来进行处理。 4.结构体系设计:

图书管理系统主界面流程图

开始

图书管系统主界面 图书管理系统流程图 录入 所 有书 籍信 息 进入图书管理系 统 进入图书查询系 统 进入图书借还系 统 保存所有图书信 息 显示菜 单 返回上级菜 单

图书查询系统主界面流程图

图书查询系统主界面 显示所有图书信息 按编号查询图书 按书名查询图书 按作者查询图书 保存所查询图书的信息 返回上级菜 单

图书借还系统主界面流程图 借 书

图书借还系统 还书 返回上级菜单 5.设计过程中的想法与程序中的不足:

作为学期末的一项课程,主要靠编出来的系统来考察我们所掌握的基本理论知识及实际解决问题的能力,通过这次c语言课程设计,很大程度上锻炼了我们写程序的动手能力和自主思考能力。利用所学知识,开发小型实用的应用系统,掌握运用C语言编写调试应用系统程序,对于我们独立开发应用系统并进行数据处理的综合能力是一个很大的提高。

总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与不足。比如,没有对界面进行操作,只是实现了简单的功能,程序写的有点繁琐,不是那么井然有序,条理清晰,程序注释也不是很完善,对信息处理功能还有些不足之处,提示信息不明确,对于数据的错误输入处理不是很完善等等。

这个系统主要是我自己编写的,同时也得到了老师和同学的一些帮助。我在做系统的过程中也遇到了很多问题,有的是知识不足,有的是考虑不够周全,。事实证明,只靠自己的知识面还是很窄,独立处理问题能力不是很强,以后还要加强对c语言的学习。

我认为对于C语言编写的程序来说,使用方法大致都是一样的,所以如果要改进的话,就是要改进一些算法,尽量把界面编写清楚,提示信息全面,方便易用。

三、用户手册:

学习编程语言。

参考文献:

[1] 黄明等编著《C语言课程设计》北京:电子工业出版社

[2] 郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社 [3] 宁正元《数据结构(c语言)》 南京:东南大学出版社。2000年6月第1版

[4] 严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版

[5] 谭浩强编著《C程序设计题解与上机指导(第3版) 》北京:清华大学出版社 [6] 谭浩强编著《C程序设计(第3版) 》北京:清华大学出版社

附录: 源程序代码 /**

* 任务:C语言课程设计 * 班级:13计转本 * 学号:20130566140 * 姓名:张朝柱

* 实验时间:2016-3-22

* 本程序的功能是:图书管理系统 */

#include #include #include

#define BOOKNUMBER 5

#define LIST_SIZE 10 //顺序表的初始大小 #define ADD_SIZE 10 //顺序表的增量

struct SqList { struct BOOK_SYSTEM * elem; //这种类型的起始地址 int length; //顺序表中元素的个数 int listsize; //顺序表的分配的空间大小 };

//采用结构体定义每本图书的编号,书的名称,书的作者,书的数量等信息。 struct BOOK_SYSTEM { int book_id; //编号 char book_name[50]; //名字

char book_author[20]; //作者 int book_number; //数量 };

void GUI_human_computer(void) //人机交互界面 { cout<<\**/\ cout<<\**/\ cout<<\图 书 管 理 系 统\ cout<

void Book_Entering(struct SqList &SL) //SL.elem->book_name SL是顺序表的变量名; SL.elem是图书结构的顺序表头变量名 { //int number; int i=0; cout<<\录入5本图书信息\ for(i=0;i>SL.elem[i].book_id; //cin>>SL.elem->book_id; //这样出现的错误是因为一直给第一个elem元素复制 cin>>SL.elem[i].book_name; cin>>SL.elem[i].book_author; cin>>SL.elem[i].book_number; SL.length++; //书库中有几种书 } cout<<\五本图书信心录入完毕!\}

void Book_Borrow(struct SqList &SL) //借书我个人认为就算借完,即库存为空的时候,这个书的编号还是应该存在的 { int i=0,ID=0; cout<<\请输入你所借书的编号:\ cin>>ID; for(i=0;i=1)) //如果找到了所借书的编号 { cout<<\成功提示: 找到图书!\ cout<<\图书信息为:\ cout<

void Book_Return(struct SqList &SL) { int i=0,ID=0; cout<<\请输入你所还书的编号:\ cin>>ID; for(i=0;i

\\\ cout<<\成功提示: 还书成功!\ cout<<\图书信息为:\ cout<

void Book_Inquire(struct SqList &SL) { int i,ID; cout<<\请输入你要查询图书的库存(图书的编号):\ cin>>ID; for(i=0;i

int main(void) { struct SqList SL; //SL 表示顺序表的类型的 变量名; struct BOOK_SYSTEM Book; //Book 结构体类型名 SL.elem=NULL; SL.elem=(struct BOOK_SYSTEM *)malloc(sizeof(struct BOOK_SYSTEM)*LIST_SIZE); //开辟10个struct BOOK_SYSTEM 这个类型的顺序表 if(SL.elem==NULL)

}

{ cout<<\错误提示: 内存申请失败!\ return 0; } else { SL.length=0; SL.listsize=LIST_SIZE; }

int command=0; //命令字变量 GUI_human_computer(); while(1) { cout<<\请输入你要进行操作的命令字:\ cin>>command; switch(command) { case 1:Book_Entering(SL); //五本书的录入函数 break; case 2:Book_Borrow(SL); break; case 3:Book_Return(SL); break; case 4:Book_Inquire(SL); break; default: cout<<\错误提示: 命令字有误!\ } }

return 0;

本文来源:https://www.bwwdw.com/article/32w5.html

Top