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

更新时间:2023-10-28 11:06:01 阅读量: 综合文库 文档下载

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

沈航北方科技学院

课程设计说明书

课程名称

教 学 部

c语言课程设计

机械工程系 专 业 数控 班 级 B042111 学 号 B04211123

学生姓名 田文 指导教师 赵小磊 _

2012年6月

链表实现图书信息操作

田文 目录

摘 要............................................................................................................................ 3 1绪论............................................................................................................................. 3 2系统分析..................................................................................................................... 3 2.1 功能需求.............................................................................................................. 3 2.2数据需求 .............................................................................................................. 4 2.3 性能需求.............................................................................................................. 4 3总体设计..................................................................................................................... 4 3.1功能模块设计 ...................................................................................................... 4 3.2系统设计方案 ...................................................................................................... 6 4详细设计..................................................................................................................... 7 4.1登录模块 .............................................................................................................. 7 4.2借书管理模块 ...................................................................................................... 8 4.3还书管理模块 ...................................................................................................... 9 5调试与测试............................................................................................................... 10 5.1 调试.................................................................................................................... 10 5.2 测试.................................................................................................................... 11 6结论........................................................................................................................... 12 结束语.......................................................................................................................... 12 参考文献...................................................................................................................... 12 附录1-用户手册(另起一页) .............................................................................. 13 附录2-源程序(另起一页) .................................................................................. 15

摘 要

经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:图书信息输入函数input(),借阅图书函数(borrow),增加删除图书函数(adddelet),图书查询函数(search),以及归还图书信息函数(giveback)。在这些函数当中,这四个函数的实现严格按照题目的要求。

1、 图书信息输入函数 主要功能是从键盘输入图书信息并将其写入文件中,

作为图书馆的书库,以便对下面的函数进行运行,此函数是基础.

2、 图书借阅函数 主要借阅图书的功能和录入学生应该还书的时间;

3、 图书归还函数 主要实现借阅图书后,归还图书的功能,并把应该还书的时

间和实际还书的时间进行比较过期时输出学生的信息,也是该程序的的一个重点

4、 增加删除图书函数 实现的功能是实现对图书的删除;

5、 图书查询函数 允许按照图书编号,书名,作者,出版社进行查询,并将查

询信息输出;

6、 退出函数 该函数主要实现退出运行界面的功能.

除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。

每一个图书记录都包含:图书编号,名称,出版社,作者,现有数量和总量在程序当中,将图书记录类型定义为结构体类型,并把它写入d:\\\\liuyan.txt中,其他函数每次对图书记录的访问,其数据来源都是d:\\\\liuyan.txt文件,这样做不但可以保证图书数据的一致性,而且可以对图书数据进行永久保存,保证每次运行程序都可以采用原来的数据。 1绪论

整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:图书信息输入函数input(),借阅图书函数(borrow),增加删除图书函数(adddelet),图书查询函数(search),以及归还图书信息函数(giveback)。在这些函数当中,这四个函数的实现严格按照题目的要求。 2系统分析 2.1 功能需求

设计一个通过链表实现对图书信息进行管理的程序,要求完成以下功能: 1. 建立一个链表,每个结点应包含以下信息:图书号、书名及出版社、价格、

ISBN、作者、册数;

2. 将输入信息按图书号进行从小到大的排序; 3. 实现查询功能——输入书名,查询输出相关信息; 4. 实现插入功能——输入图书信息并插入有序链表中;

5. 实现删除功能——输入书名或书号,可将其信息从链表中删除; 6. 统计链表中图书总价值,并在屏幕上输出;

7. 统计该链表中价值超过某一数目的图书总数,并在屏幕上输出。 8. 有界面友好易于使用的菜单。 2.2数据需求

需要向系统输入图书号、书名及出版社、价格、ISBN、作者、册数 2.3 性能需求

在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。 3总体设计 3.1功能模块设计

根据分析整个系统主要划分为4个功能模块,分别执行要求中的功能。该系统需要有添加,删除,查询,修改,累加,循环显示主菜单,保存信息功能,能将会员卡进行注销,利用显示函数将会员卡内所有信息显示。要求有循环显示菜单工能。功能模块图如图1所示。

(1)输入读者

输入相关读者信息至内存中; (2) 输入书籍

输入书籍号,对已存的书籍信息进行查询; (3) 书籍管理模块

输入相应代码,对相关信息进行查询; (4) 退出管理模块

主菜单中输入0退出系统登录;

图书管理系统 输入读者 输入书籍 书籍管理 退出系统登录 新书入库 查询按照图书编号查询按照图书名查询图1图书管理系统流程图

管理员版图书管理系统图2 管理员版图书管理系统流程图

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

借书登记还书管理按照图书作者查询

书籍信息修改书籍数量书籍信息查询

按照读者编号查询按照读者姓名查询退出查询

void Return_Book(); /*还书函数*/ void Save(); /*保存信息*/ void Save_Reader(); /*保存读者信息*/ void Save_Book(); /*保存图书信息*/ void Load(); /*加载信息*/ void Load_Reader(); /*加载读者信息*/ void Load_Book(); /*加载图书信息*/ void Login()/*登陆*/ {

system(\

printf(\欢迎登陆本系统\\n\

printf(\ 系统版权所有\\n\\n\\n\\n\\n\\n\\n\printf(\按 任 意 键 进 入 系 统 ...\getchar(); system(\cls\}

int Menu() /*主菜单*/

{ int sn;

printf(\图书管理系统主菜单\\n\

printf(\printf(\退出系统 *\\n\printf(\新书入库 *\\n\printf(\ 查询 *\\n\printf(\借书登记 *\\n\printf(\还书管理 *\\n\

printf(\printf(\请选择相应代码:\ for(;;)

{ scanf(\ fflush(stdin); if(sn<0||sn>4)

printf(\错误!请重新输入:\ else break; }

return sn;

}

void Menu_select()/*主菜单选择函数*/ {

for(;;) /*循环调用模式,保证能进行重复操作*/ {

switch(Menu()) /*功能选择*/

{ case 0:

system(\清楚屏幕先前的显示内容*/ Save();

printf(\文件保存成功!\\n\

printf(\欢迎下次使用本系统!\\n\ getchar(); exit(0);

case 1:Insert_New_Book();break; case 2:Find_Select();break; case 3:Borrow_Book();break; case 4:Return_Book();break; default:printf(\错误!\ } }

}

void Init() /*初始化*/ {

Init_reader(); Init_book(); }

void Init_reader() /*初始化读者信息*/ {

RD *p0;

int i;

printf(\读者初始化开始,请输入读者信息..\\n包括编号.姓名..\\n\ p0=(RD*)malloc(sizeof(RD)); h_reader=p0;

printf(\请输入读者的信息:\\n\

printf(\ /*输入读者编号(唯一)*/ scanf(\

printf(\ /*输入读者姓名(不唯一)*/ scanf(\ p0->right=0;

for(i=0;i

strcpy(p0->borrow[i].borrow_book_num,\所借图书直接置为0(即没有借书)*/ strcpy(p0->borrow[i].limit_date,\

}

p0->next=NULL;

printf(\读者信息初始化完毕!按任意键继续下一步操作..\\n\ getchar();

system(\}

void Init_book() /*初始化图书信息*/ {

BK *p0;

printf(\图书初始化开始,请输入图书信息..\\n包括编号.书名.数量..\\n\p0=(BK*)malloc(sizeof(BK)); h_book=p0;

printf(\请输入图书信息:\\n\

printf(\ /*输入图书编号(唯一)*/ scanf(\

printf(\ /*输入图书名称*/ scanf(\

printf(\ /*输入图书作者*/ scanf(\

printf(\ /*输入图书数量*/

scanf(\

p0->book_xy=p0->book_kc; /*开始时图书现有量和库存量相等*/ p0->next=NULL;

printf(\图书信息初始化完毕!按任意键继续下一步操作..\\n\ getchar();

system(\}

void Insert_New_Book()/*新书入库*/ {

BK *p,*p0,*p1; p=p1=h_book;

printf(\新书入库模块...\\n\

printf(\请输入新书信息..\\n包括书号.书名.数量..\\n\p0=(BK *)malloc(sizeof(BK)); printf(\

scanf(\

while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL) p1=p1->next;

if(strcmp(p0->book_num,p1->book_num)==0) /*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/

{

printf(\此编号图书已存在!!直接入库!\\n\ printf(\

scanf(\ p1->book_kc+=p0->book_kc;

p1->book_xy+=p0->book_kc; }

else/*若不存在,则需要输入其他的信息 ,然后在进行插入操作*/ {

printf(\

scanf(\printf(\

scanf(\ printf(\

scanf(\while(p->next) {

p=p->next;

}

if(h_book==NULL) h_book=p0; /*此处分两种情况,链表中没有数据,head直接指向p0处*/

else p->next=p0; /*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/

p0->next=NULL;

p0->book_xy=p0->book_kc;

}

printf(\新书入库完毕!按任意键继续下一步操作..\\n\ getchar();

system(\}

int Find() /*查找菜单*/ {

int sn;

printf(\信息查询菜单\\n\

printf(\printf(\返回上级 \\t*\\n\printf(\ \\t*\\n\printf(\查找图书 2----查找读者 \\t*\\n\printf(\ \\t*\\n\printf(\打印图书 4----打印读者 \\t*\\n\

printf(\printf(\请选择相应代码:\

for(;;) /*循环调用模式,保证能进行重复操作*/ {

scanf(\

fflush(stdin); if(sn<0||sn>4)

printf(\错误!请重新输入:\ else break; }

return sn;

}

void Find_Select() /*查找菜单选择函数*/ {

system(\

for(;;) /*循环调用模式,保证能进行重复操作*/ {

switch(Find()) /*功能选择*/

{

case 0:system(\ case 1:Find_Book();break; case 2:Find_Reader();break; case 3:Print_book();break; case 4:Print_reader();break;

default:printf(\错误!\ } }

}

void Find_Reader() /*查找读者信息*/ {

RD *p;

int i;

char find_reader[10]; p=h_reader;

printf(\读者信息查询模块\\n\

printf(\请输入你要查询读者编号:\

scanf(\

while(strcmp(p->reader_num,find_reader)!=0&&p->next) p=p->next;

if(strcmp(p->reader_num,find_reader)==0)

{

printf(\读者编号:%s的信息为:\\n\

printf(\/*此处这样处理,是为了能实现一个读者能借多本书 Max 可以改*/ printf(\

printf(\ for(i=0;i

printf(\

printf(\ printf(\ printf(\

printf(\ printf(\ }

printf(\

} else

printf(\此读者编号不存在,请核对!按任意键返回...\

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

Top