安徽省巢湖学院计算机与信息工程学院
课程设计报告
课程名称
《数据结构》
课题名称
图书管理系统
专 业
11 网络工程
班 级
1 班
学 号 11012042,11012045,11012030
姓 名 汪维宏, 王东良, 鲁自山
联系方式
指导教师
18226920220
武彬
20 12 年 6 月 23 日
目
录
1、数据结构课程设计任务书.............................................................................................. 1
1.1、题目..................................................................................................................... 1
1.2、要求..................................................................................................................... 1
2、总体设计....................................................................................................................... 1
2.1、功能模块设计 .......................................................................................................1
2.2、所有功能模块的流程图........................................................................................ 1
3、详细设计....................................................................................................................... 3
3.1、程序中所采用的数据结构及存储结构的说明 ........................................................ 3
3.2、算法的设计思想................................................................................................... 4
3.3、对图书借阅时的选择与操作................................................................................. 4
4、调试与测试: ................................................................................................................ 4
4.1、调试方法与步骤: ................................................................................................4
4.2、测试结果的分析与讨论: ............................................................ 错误!未定义书签。
4.3、测试过程中遇到的主要问题及采取的解决措施: ............................................. 11
5、时间复杂度的分析:..................................................................................................11
6、源程序清单和执行结果.............................................................................................. 12
7、C 程序设计总结 .........................................................................................................54
8、致谢...........................................................................................................................54
9、参考文献....................................................................................................................54
1、数据结构课程设计任务书
1.1、题目
图书馆管理系统
1.2、要求
【设计要求】对图书进行管理,系统具有如下功能
1.图书入库:新购一种书,确定书号后,登记到图书目录表中,如果表中已有,则只
将库存量增加;图书数据包括图书书号,书名,作者,数量,单价等;
2.排序:以书号按升序进行排序(可以任选一种排序方法);
3.查找:能按书名、书号进行查找(分别用顺序查找和折半查找方法);
4.删除:从表中删除指定的图书;
5.借阅:如果一种书的现存量大于 0,则借出一本,登记借阅者的书证号和归还期限,
改变现存量;
6.归还:注销对借阅者的登记,改变该书的现存量。
2、总体设计
2.1、功能模块设计
根据课程设计题目的功能要求,各个功能模块的组成框图如下:
功能选择界面
1.新书入库 2.图书排序
3.查找信息
4.删除图书信息
5.借阅图书
6.归还图书
7.更改字体颜色 0.退出
输
入
新
书
信
息
按
学
号
升
序
排
序
按
书
名
查
找
按
书
号
查
找
按
书
名
查
找
删
除
按
书
号
查
找
删
除
输
入
书
证
号
进
入
注
册
借
阅
者
信
息
归
还
全
部
图
书
归
还
其
中
一
本
图
书
选
择
显
示
字
体
颜
色
第 1 页
2.2、所有功能模块的流程图
进入系统主界面
键盘输入给choi ce赋值
判断choi ce的值
choi ce等于1、2、3、4、5、6、7以外的数
choi ce=1
choi ce=2
choi ce=3
choi ce=4
choi ce=5
choi ce=6
choi ce=7
1. 新书入库
2. 图书排序
3. 查找信息 4. 删除图书信息 5. 借阅图书
6. 归还图书
7. 更改字体颜色
键盘输入给choi ce7赋值
键盘输入给choi ce4赋值
输入书号证
键盘输入给choi ce3赋值
键盘输入给choi ce5赋值
no
判断choi ce3的值
判断choi ce4的值
判断书证号是否存在
判断choi ce5的值
yes
选
择
显
示
字
体
颜
色
键盘输入书名
判断书名是否存在
yes
no
书
名
存
在
,
将
其
数
量
加
一
输
入
新
书
信
息
yes
判断是否继续输入
no
yes
输
出
图
书
信
息
图
书
书
号
升
序
排
序
choi ce3=1
choi ce4=1
choi ce5=1
choi ce3=2
choi ce4=2
输入书名
输入书名
choi ce5=4
输入书号
输入书号
输入书号证
no
判断书名是否存在
判断书名是否存在
判断书证号是否存在
注
册
书
证
号
判断书号是否存在
判断书号是否存在
no
yes
yes
输入书号证
yes
yes
归
还
所
有
图
书
no
归
还
其
中
一
本
图
书
输入书名
输
出
图
书
信
息
删
除
该
图
书
信
息
退出系统
no
输入书名
判断书证号是否存在
no
注
册
成
功
no
判断书名是否存在
yes
借
阅
图
书
判断书名是否存在
yes
删
除
借
阅
该
书
信
息
第 2 页
3、详细设计
模块功能说明:如函数功能、入口及出口参数说明,函数调用关系描述等;
3.1、程序中所采用的数据结构及存储结构的说明
typedef struct
{
int year;
int month;
int day;
//年
//月
//日
}DATE;
struct readbook
{
char studentTitle[30];
DATE loanDate;
DATE revertDate;
//借出的书名
//借出日期
//归还日期
};
union readState
{
char Nobook[20];
struct readbook data;
//定义没有借书
//存储已借图书信息
};
typedef struct borrower
{
//借阅者
//书证号
char studentID[10];
char studentName[10];
//姓名
union readState ReadBook[5];
int bookcount;
struct borrower *next;
}Borrower, *LinkBorrower;
//已借图书数量
//借书状况
typedef struct book //图书
{
//书号
//书名
char number[20];
char title[30];
char author[20];
char translator[20];
int count;
char price[10];
DATE date;
struct book *next;
//作者
//译者
//现存量
//价格
//入库日期
}Book, * LinkBook;
第 3 页
3.2、算法的设计思想
1.图书入库
新购一种书,确定书号后,登记到图书目录表中,如果表中已有,则只将库存量增加;
图书数据包括图书书号,书名,作者,数量,单价等;
2.排序
以书号按升序进行排序(可以任选一种排序方法);
3.查找
能按书名、书号进行查找(分别用顺序查找和折半查找方法);
4.删除
从表中删除指定的图书;
5.借阅
如果一种书的现存量大于 0,则借出一本,登记借阅者的书证号和归还期限,改变现存
量;
6.归还
注销对借阅者的登记,改变该书的现存量。
3.3、对图书借阅时的选择与操作
a)注册
定义一个共用体,没有借书和借书共用一个内存,注册时自动在共用体中赋值没有借书
b)借阅
输入书证号,若正确,进行借阅,共用体对借阅的书籍进行赋值,覆盖没有借书
4、调试与测试:
4.1、调试方法与步骤:
第一步:测试新书入库:
输入书名:
1. 若书名存在:
第 4 页
2. 若书名不存在,输入相关信息
第二步:测试图书排序:
图书按书号升序排序
第 5 页
第三步:测试查找信息功能:
第四步:测试删除图书信息功能:
第 6 页