高级语言程序设计报告
(图书管理系统)
班
姓
学
成
时
级:
名:
号
绩:
间:
指导教师:
设计目的
编写目的:
通过对图书的收录,创建出动态链表(存在文件中,并能从文件中读取所存
储的数据);对图书编号、书名、作者、现存本数、出版社、出版日期、摘要等
信息进行管理;使其有按图书编号的查找、排序以及添加、删除等操作功能。
需求概述:
设计图书管理系统,使之能提供以下功能:
1) 录入图书信息并保存到数据文件
2) 显示所有收录图书信息
3) 检索所需图书信息
4) 修改图书信息并保存
5)将收录的图书编号排序
5)添加图书信息
6)创建新的数据文件
7) 删除图书信息
8)修改保存密码
需求说明:
图书信息包括图书编号、书名、作者、现存本数、出版社、出版日期、摘要;
录入的图书信息要求用文件形式保存,并可以对其进行检索、增添、排序、
删除等基本操作;
图书收录时的信息的显式不需要求有一定的规范格式,可任意中英文输入;
对图书信息的修改应逐个地进行,一个图书信息的更改不应影响其他的图书
信息的记录;
系统开始前应以指定账号密码登陆,其中登陆有三次机会;
所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户
的选择来进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的
异常情况。
总体设计
编写目的:
通过对图书的收录,创建出动态链表(存在文件中,并能从文件中读取所存
储的数据);对图书编号、书名、作者、现存本数、出版社、出版日期、摘要等
信息进行管理;使其有按图书编号的查找、排序以及添加、删除等操作功能。
总体设计:
1. 该系统可以按功能进行模块划分,其模块图如下:
图书管理系统
录入
信息
显示
信息
检索
信息
保存到文件中
图书
排序
添加
图书
信息
修改
信息
保存
修改
密码
删除
图书
馆信
息
创建
图书
信息
新文
件
图
书
编
号
书
作
名
者
现
存
本
书
出
版
社
出
版
日
期
摘
要
系统模块图
其中:
录入信息模块完成图书信息的输入到文件功能,输入信息包括创建文件名,
图书编号,作者,现存本数,出版社,出版日期和摘要等;
显示信息模块完成已录入图书信息的显示;
检索信息模块完成图书信息的查询,查询时对应有按输入图书编号方式查
询;
添加图书信息模块完成图书信息的添加及保存功能;
图书排序模块完成对录入图书的编号进行排序功能;
创建图书信息新文件模块可完成通过建立新的文件夹录入新的图书信息功
能;
图书信息删除模块完成图书信息的删除及保存删除功能;
修改密码模块完成新用户名及用户密码的收录功能;
2. 数据结构
本系统中主要的数据结构就是图书的管理结构,包含检索,增加,删除,排
序,修改密码,返回上一层等,在处理过程中各项可以作为一个图书管理的不同
属性来进行处理。
3. 程序流程
系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,
直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的
流程图如下:
开始
输入用户密码登录
N
输入
Y
(载入)创建数据文件
信息输入
菜单选择
检索
增加
删除
排序
修改密码
退出
返回上层
输入增
添信息
输入编号
显示排
序结果
输入编号
检索结果
输 入 旧
用 户 名
和密码
输入新密码
结束
程序流程图
详细设计
编写目的:
根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设
计,以便下一步进行程序编码工作。
详细设计:
对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下:
1) 登录模块
欢迎界面;
提示输入用户名;
提示输入密码(暗文);
While(用户名密码匹配不成功)
{
提示输入用户名;
提示输入密码(暗文);
}
if(错误次数大于三次)
提示并退出程序;
2) 一级菜单:
询问用户创建新的数据文件或载入旧文件并等待读入指令;
While(输入指令不正确)
{
等待输入指令;
根据输入指令调用不同函数;
}
3) 创建新数据文件:
询问新文件的名称;
While(继续输入)
{
读入图书信息并创建链表;
提示是否继续输入;
}
创建并打开数据文件;
将读入信息添加到图书信息文件中;
4) 载入旧数据文件:
询问文件名称;
打开文件;
While(无法打开文件)
{
提示错误;
询问文件名称;
打开文件;
}
从文件中读入信息并创建链表;
提示打开成功;
5) 二级菜单:
给出信息提示;
绘制菜单(检索、增加、删除、排序、返回上一级菜单、修改密码、退出);
提示菜单选择并读入到变量;
while(输入指令不是退出)
{
指令错误时给出提示;
根据读入变量的值调用不同的模块函数;
}
6) 增加图书信息模块:
读入图书信息;
插入到链表末端;
提示是否继续输入;
while ( 继续输入 )
{
读入图书信息;
插入到链表末端;
提示是否继续输入;
}
询问是否保存更改;
if(选择保存更改)
{
打开图书信息文件;
将新的链表保存到图书信息文件中;
关闭图书信息文件;
}
else
不保存至文件中;
7) 图书信息查询模块:
提示输入要查找的图书编码;
链表中遍历查找;
if(找到)
提示并输出该图书信息;
else
给出未找到的提示;
8) 图书信息删除模块:
提示并读入待删除的图书的编号;
查找是否有符合条件的图书记录;
if( 有符合条件的记录)
{
从链表中删除该结点;
提示删除成功;
}
else
提示没有符合条件的记录存在;
询问是否保存更改;
if(选择保存更改)
{
打开图书信息文件;
将新的链表保存到图书信息文件中;
关闭图书信息文件;
}
else
不保存至文件中;
9) 修改密码模块:
提示输入用户名;
提示输入密码(暗文);
While(用户名密码匹配不成功)
{
提示输入用户名;
提示输入密码(暗文);
}
if(错误次数大于三次)
提示并退出模块;
提示输入新密码;
提示再输入一遍新密码;
if(两次输入密码不一致)
提示不正确并返回上一级菜单;
else
{
修改密码;
提示成功;
}
数据结构如下:
图书信息结构体:
typedef struct
//储存图书信息的数据结构
{
char num[20];
char name[20];
char author[20];
int leftnum;
char pub[20];
char date[20];
char abs[50];
//编号
//书名
//作者
//现存本数
//出版社
//出版日期
//摘要
}Lib;
链表结点结构:
struct node
//链表中每一个结点的结构
Lib book;
struct node * next;
//图书信息
};
小组成员的评语:
小组成员模块分工:
组员参与设计的体会:
在本次设计程序中,我所收获的,不仅仅的熟练的掌握了链表和指针的使用,
更为重要的是,我体会到了编写一个程序的艰辛,在每一次调试成功之后的喜悦,
每一次出现 bug 时的沮丧,都是无比珍贵的经历。同时,也感受到了 C 语言的强
大,看似一些毫无生气的语句,却能完成许多强大的功能,承载许多复杂的系统。
今后我会更加努力的学习 C 语言的知识,提升自己对 C 语言的应用能力。
通过一个学期的 c 语言学习,我们领略了 c 语言程序设计领域之广泛,在期
末的 c 语言实习中,我们将一学期所学的理论知识与实际问题相结合,我们选择
了基于链表的图书馆管理系统,在实习中虽然遇到了很多问题,但在各位组员的
相互学习与讨论下,以及向老师寻求帮助后,都纷纷得到了解决,使我们对此次
实习印象深刻,受益匪浅,在一定程度上也提高了我们的编程能力,更是将课堂
上的东西付诸于实际问题的证明。
作为通信有关专业的一名学生,深知这门课的重要性,通过一学期对 C 语言
的学习,由最初的一无所知到有了初步了解,在不断地学习中,渐渐体会这种软
件在汇编、语言的影响,通过实践和自己的操作,进一步把所学的知识运用到实
践生活中。总之,这次基于链表的图书管理系统的顺利完成,从中受益匪浅。
虽然已经学习了一学期的 C 语言程序设计,但在完成本次的课题“基于链表
的图书管理系统”的过程中方,我发现我之前学到的知识仅仅是皮毛而已。在这