图书管理系统说明书.docx

上传人:b****5 文档编号:5985371 上传时间:2023-01-02 格式:DOCX 页数:28 大小:225.37KB
下载 相关 举报
图书管理系统说明书.docx_第1页
第1页 / 共28页
图书管理系统说明书.docx_第2页
第2页 / 共28页
图书管理系统说明书.docx_第3页
第3页 / 共28页
图书管理系统说明书.docx_第4页
第4页 / 共28页
图书管理系统说明书.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

图书管理系统说明书.docx

《图书管理系统说明书.docx》由会员分享,可在线阅读,更多相关《图书管理系统说明书.docx(28页珍藏版)》请在冰豆网上搜索。

图书管理系统说明书.docx

图书管理系统说明书

*******************

实践教学

*******************

 

兰州理工大学

计算机与通信学院

2013年春季学期

 

C程序设计课程设计

       

题目:

图书信息管理系统姓名:

林承勇

学号:

12540236

专业班级:

信息与计算科学2班

指导老师姓名:

张墨逸

成绩:

目录

摘要1

前言2

1需求分析3

2总体设计3

2.1程序的总体设计3

2.2数据结构4

3详细设计5

3.1主控模块设计5

3.2图书录入模块6

3.3图书浏览模块7

3.4图书保存模块8

4主要函数功能描述9

4.1录入函数InsertDoc()9

4.2浏览函数Print_Book_Doc()10

4.3保存函数save()11

5测试与调试12

5.1图书录入测试12

5.2图书浏览测试13

6个人设计小结与心得体会13

参考文献14

附件1程序源代码14

摘要

图书信息管理系统能够提供充足的信息和快捷的查询手段,使用计算机对图书进行信息管理,有着手工管理所无法比拟的优点。

这个系统能录入图书信息并以磁盘文件形式保存,能够浏览全部图书信息,根据书名查找,以及删除、插入、修改和保存图书的信息。

充分应用结构体数组和对文件的操作是该系统取得的最重要的成果。

 

关键词:

浏览;查询修改;录入图书;结构体数组

前言

二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。

现在信息技术的应用越来越普及,不但促进了社会的高速发展,也改变着人们的工作、学习、生活和娱乐的方式以及思想观念。

随着计算机的日益普及,计算机软件无处不在。

软件在计算机的发展和应用中至关重要,在人类进入信息化社会时成为新兴信息产业的支柱

计算机技术的迅猛发展,特别是随着网络技术的出现标志着信息时代已经来临。

信息化浪潮、网络革命在给社会带来冲击的同时,也使图书馆业务受到了强烈的冲击,图书馆传统的管理和服务方式已不能适应读者对日益增长的文献信息的需求。

随着馆藏量的不断增加,图书资料的著录和查询的难度也就相应增加,数据处理手工操作,工作量大,出错率高,出错后不易更改的手工方式,已经不能满足要求。

本设计主要研究的是用C语言开发图书馆管理功能,其具体体现在图书的录入、查询、浏览、删除功能,更要优化了图书馆管理系统设计。

1需求分析

(1)问题

登录号,书名,作者名,分类号,出版单位,出版时间,价格等。

使之提供以下功能:

菜单选择模块。

图书信息录入功能。

(图书信息用文件保存)。

图书信息浏览功能。

图书信息查询功能。

图书信息的删除和修改。

(2)系统

采用C语言实现,开发环境为VC,可以运行在操作系统windows98及以上皆可。

(3)运行要求

能不受限制的录入和删除图书信息

界面友好,操作方便,例如删除前需要提示用户是否删除

容错性强,例如数据导出时,如果文件不存在需要提示用户。

2总体设计

2.1程序的总体设计

 

图1图书管理系统功能模块图

根据需求描述,本人按照结构化程序设计的原则将整个系统划分若干个功能模块。

系统各子模块的设计如下:

(1)输入记录模块

输入记录模块主要功能描述

(2)更新记录模块

更新记录模块主要功能描述

(3)查询记录模块

模块主要功能描述

(4)输出记录模块

模块主要功能描述

2.2数据结构

根据系统要求,系统中需要保存的数据有通讯录的信息,其结构如下:

数据项名称

数据项系统表示

数据类型

数据长度

备注

登陆号

loginnum

字符串

20

书名

bookname

字符串

20

作者名

author

字符串

20

出版单位

publisher

字符串

20

出版时间

pbtime

字符串

15

分类号

classfy

字符串

10

价格

price

浮点

使用C语言创建的结构体如下:

#include

#include

#include

#include

structbooks_list/*定义数据结构*/

{

charauthor[20];/*作者名*/

charbookname[20];/*书名*/

charpublisher[20];/*出版单位*/

charpbtime[15];/*出版时间*/

charloginnum[10];/*登录号*/

floatprice;/*价格*/

charclassfy[10];/*分类号*/

structbooks_list*next;

};

3详细设计

3.1主控模块设计

主函数控制各子函数的调用流程如图2

图2主控制程序流程图

 

3.2图书录入模块

 

图3图书录入流程图

 

3.3图书浏览模块

 

图4图书浏览流程图

 

3.4图书保存模块

 

图5图书保存流程图

 

4主要函数功能描述

4.1录入函数InsertDoc()

函数原型:

voidInsertDoc(structbooks_list*head)

功能描述:

寻找下一个未放入图书的位置录入图书信息,最后判断是否继续录入,若输入Y则继续录入,即回到前面寻找下一个未放入图书的位置;若输入N则退出此函数。

函数流程图如图3所示

主要代码为:

voidInsertDoc(structbooks_list*head)/*图书录入子函数*/

{

structbooks_list*s,*p;

charflag='Y';

p=head;

while(p->next!

=NULL)

{

p=p->next;/*寻找下一个还未放书的位置*/

}

while(flag=='Y'||flag=='y')

{

s=(structbooks_list*)malloc(sizeof(structbooks_list));/*分配字节数*/

printf("\n请输入图书登陆号:

");

fflush(stdin);/*清空缓存*/

scanf("%s",s->loginnum);

printf("\n请输入图书书名:

");

fflush(stdin);

scanf("%s",s->bookname);

printf("\n请输入图书作者名:

");

fflush(stdin);

scanf("%s",s->author);

printf("\n请输入图书出版社:

");

fflush(stdin);

scanf("%s",s->publisher);

printf("\n请输入图书出版时间:

");

fflush(stdin);

scanf("%s",s->pbtime);

printf("\n请输入图书分类号:

");

fflush(stdin);

scanf("%s",s->classfy);

printf("\n请输入图书价格:

");

fflush(stdin);

scanf("%f",&s->price);

printf("\n");

p->next=s;

p=s;

s->next=NULL;

printf("━━━━添加成功!

━━━━");

printf("\n继续添加?

(Y/N):

");

fflush(stdin);

scanf("%c",&flag);

printf("\n");

if(flag=='N'||flag=='n')/*判断是否继续添加*/

{break;}/*退出循环*/

elseif(flag=='Y'||flag=='y')/*判断是否继续添加*/

{continue;}/*继续添加*/

}

save(head);/*保存文件*/

return;

}

4.2浏览函数Print_Book_Doc()

函数原型:

voidPrint_Book_Doc(structbooks_list*head)

功能描述:

先判断是否存在图书,存在则输出所有图书信息,不存在则输出没有图书记录。

函数流程图如图4所示

主要代码为:

voidPrint_Book_Doc(structbooks_list*head)/*图书浏览子函数*/

{

structbooks_list*p;

if(head==NULL||head->next==NULL)

{

printf("\n━━━━没有图书记录!

━━━━\n\n");

return;

}

p=head;

printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");

printf("┃登录号┃书名┃作者┃出版单位┃出版时间┃分类号┃价格┃\n");

printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");

while(p->next!

=NULL)

{

p=p->next;

printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price);

}

printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");

printf("\n");

}

4.3保存函数save()

函数原型:

voidsave(structbooks_list*head)

功能描述:

先打开data.txt文档,把图书信息写入该文档里,保存好后关闭文档。

函数流程图如图5所示

主要代码为:

voidsave(structbooks_list*head)/*图书保存子函数*/

{

structbooks_list*p;

FILE*fp;

p=head;

fp=fopen("data.txt","w+");/*打开data。

txt文件*/

fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");

fprintf(fp,"┃登录号┃书名┃作者┃出版单位┃出版时间┃分类号┃价格┃\n");

fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");

while(p->next!

=NULL)/*寻找存在图书的位置*/

{

p=p->next;

fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price);

}

fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");

fclose(fp);/*关闭文件*/

printf("已将图书数据保存到data.txt文件\n");

}

5测试与调试

5.1图书录入测试

系统菜单选择界面如下:

图6

图7

输入登录号:

12540236书名:

数学分析作者:

华东师范大学数学系

出版社:

高等教育出版社出版时间:

2010年7月分类号:

10001

图书价格:

33.20元

图8

5.2图书浏览测试

输入2进行浏览

图9

6个人设计小结与心得体会

通过这次课程设计,我对复杂程序的开发有了一个深刻的认识,使我进一步明白了模块化思想在程序开发中的重要性。

也是我明白了在平时的学习生活中一定要努力才能在真正用到时运用自如。

本程序具有输入、输出、插入、删除、查找和保存等功能。

这次课程设计中还深入学习了优化算法的各种思想,加深了对指针概念的理解,也较好的掌握了指针的使用方法。

通过这次课程设计学会了在实践中运用所学的知识,并通过翻阅资料增加了自己的知识面,对C语言调用其他可执行文件和图形界面的设计有了新的识和了解,并运用在这次课程设计中,使我受到了锻炼,受益匪浅,同时也深入学习了算法的思想,指针的使用方法,为我以后的应用打下了坚实的基础,相信有因为这次课程设计,会使我对C语言有更深入的认知,以及能较好的掌握它,在以后的实践中能运用自如。

在这次课程设计中学会了贯通运用所学的知识,通过翻阅大量资料学习了新的知识。

在这次课程设计中对C语言中调用其他可执行文件和图形界面的设计思路有了新的认识和了解,并运用在其中,发现C语言作用的强大。

参考文献

[1]严蔚敏,吴伟民.数据结构(C语言版).北京:

清华大学出版社,2007

[2]张长海.C语言程设计[M].北京:

高等教育出版社,2006

[3]陈建新,李志敏.数据结构实验指导与课程设计教程.北京:

科学出版社,2010

[4]吴玉蓉,李劲.数据结构(C语言版).北京:

中国水利水电出版社,2008

[5]谭浩强.C语言程设计.北京:

清华大学出版社,2005

[6]王为青,刘变红.C语言高级编程及实例剖析.北京:

人民邮电出版社,2007

 

附件1程序源代码

 

#include

#include

#include

#include

structbooks_list/*定义数据结构*/

{

charauthor[20];/*作者名*/

charbookname[20];/*书名*/

charpublisher[20];/*出版单位*/

charpbtime[15];/*出版时间*/

charloginnum[10];/*登录号*/

floatprice;/*价格*/

charclassfy[10];/*分类号*/

structbooks_list*next;

};

structbooks_list*Create_Books_Doc();

voidInsertDoc(structbooks_list*head);

voidDeleteDoc(structbooks_list*head,intnum);

voidPrint_Book_Doc(structbooks_list*head);

voidsearch_book(structbooks_list*head);

voidinfo_change(structbooks_list*head);

voidsave(structbooks_list*head);

structbooks_list*Create_Books_Doc()

{

structbooks_list*head;

head=(structbooks_list*)malloc(sizeof(structbooks_list));

head->next=NULL;

returnhead;

}

voidsave(structbooks_list*head)/*图书保存子函数*/

{

structbooks_list*p;

FILE*fp;

p=head;

fp=fopen("data.txt","w+");/*创建并打开文件*/

fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");

fprintf(fp,"┃登录号┃书名┃作者┃出版单位┃出版时间┃分类号┃价格┃\n");

fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");

while(p->next!

=NULL)/*寻找一个未放入图书的位置*/

{

p=p->next;

fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price);

}

fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");

fclose(fp);/*关闭文件*/

printf("已将图书数据保存到data.txt文件\n");

}

voidInsertDoc(structbooks_list*head)/*图书录入子函数*/

{

structbooks_list*s,*p;

charflag='Y';

p=head;

while(p->next!

=NULL)

{

p=p->next;/*寻找下一个还未放书的位置*/

}

while(flag=='Y'||flag=='y')

{

s=(structbooks_list*)malloc(sizeof(structbooks_list));/*分配字节数*/

printf("\n请输入图书登陆号:

");

fflush(stdin);/*清空缓存*/

scanf("%s",s->loginnum);

printf("\n请输入图书书名:

");

fflush(stdin);

scanf("%s",s->bookname);

printf("\n请输入图书作者名:

");

fflush(stdin);

scanf("%s",s->author);

printf("\n请输入图书出版社:

");

fflush(stdin);

scanf("%s",s->publisher);

printf("\n请输入图书出版时间:

");

fflush(stdin);

scanf("%s",s->pbtime);

printf("\n请输入图书分类号:

");

fflush(stdin);

scanf("%s",s->classfy);

printf("\n请输入图书价格:

");

fflush(stdin);

scanf("%f",&s->price);

printf("\n");

p->next=s;

p=s;

s->next=NULL;

printf("━━━━添加成功!

━━━━");

printf("\n继续添加?

(Y/N):

");

fflush(stdin);

scanf("%c",&flag);

printf("\n");

if(flag=='N'||flag=='n')

{break;}

elseif(flag=='Y'||flag=='y')

{continue;}

}

save(head);

return;

}

voidsearch_book(structbooks_list*head)/*图书查询子函数*/

{

structbooks_list*p;

chartemp[20];

p=head;

if(head==NULL||head->next==NULL)/*判断图书是否存在*/

{

printf("━━━━图书库为空!

━━━━\n");

}

else

{

printf("请输入您要查找的书名:

");

fflush(stdin);

scanf("%s",temp);

while(p->next!

=NULL)

{

p=p->next;

if(strcmp(p->bookname,temp)==0)/*寻找要查找的图书*/

{

printf("\n图书已找到!

\n");

printf("\n");

printf("登录号:

%s\t\n",p->loginnum);

printf("书名:

%s\t\n",p->bookname);

printf("作者名:

%s\t\n",p->author);

printf("出版单位:

%s\t\n",p->publisher);

printf("出版时间:

%s\t\n",p->pbtime);

printf("分类号:

%s\t\n",p->classfy);

printf("价格:

%.2f\t\n",p->price);

}

if(p->next==NULL)

{

printf("\n查询完毕!

\n");

}

}

}

return;

}

voidPrint_Book_Doc(structbooks_list*head)/*图书浏览子函数*/

{

structbooks_list*p;

if(head==NULL||head->next==NULL)

{

printf("\n━━━━没有图书记录!

━━━━\n\n");

return;

}

p=head;

printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");

printf("┃登录号┃书名┃作者┃出版单位┃出版时间┃分类号┃价格┃\n");

printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");

while(p->next!

=NULL)

{

p=p->next;

printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price);

}

printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");

printf("\n");

}

voidinfo_change(structbooks_list*head

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1