软件工程课程设计图书管理系统.docx

上传人:b****8 文档编号:11887908 上传时间:2023-06-03 格式:DOCX 页数:38 大小:36.08KB
下载 相关 举报
软件工程课程设计图书管理系统.docx_第1页
第1页 / 共38页
软件工程课程设计图书管理系统.docx_第2页
第2页 / 共38页
软件工程课程设计图书管理系统.docx_第3页
第3页 / 共38页
软件工程课程设计图书管理系统.docx_第4页
第4页 / 共38页
软件工程课程设计图书管理系统.docx_第5页
第5页 / 共38页
软件工程课程设计图书管理系统.docx_第6页
第6页 / 共38页
软件工程课程设计图书管理系统.docx_第7页
第7页 / 共38页
软件工程课程设计图书管理系统.docx_第8页
第8页 / 共38页
软件工程课程设计图书管理系统.docx_第9页
第9页 / 共38页
软件工程课程设计图书管理系统.docx_第10页
第10页 / 共38页
软件工程课程设计图书管理系统.docx_第11页
第11页 / 共38页
软件工程课程设计图书管理系统.docx_第12页
第12页 / 共38页
软件工程课程设计图书管理系统.docx_第13页
第13页 / 共38页
软件工程课程设计图书管理系统.docx_第14页
第14页 / 共38页
软件工程课程设计图书管理系统.docx_第15页
第15页 / 共38页
软件工程课程设计图书管理系统.docx_第16页
第16页 / 共38页
软件工程课程设计图书管理系统.docx_第17页
第17页 / 共38页
软件工程课程设计图书管理系统.docx_第18页
第18页 / 共38页
软件工程课程设计图书管理系统.docx_第19页
第19页 / 共38页
软件工程课程设计图书管理系统.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件工程课程设计图书管理系统.docx

《软件工程课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计图书管理系统.docx(38页珍藏版)》请在冰点文库上搜索。

软件工程课程设计图书管理系统.docx

软件工程课程设计图书管理系统

软件工程课程设计

——图书馆管理系统

一、可行性研究报告

1、引言

背景资料

图书馆是为我们的学习工作提供服务的地方。

图书馆里存放着大量的书籍资料,对这些书籍信息的有效的归类整理与管理将大大提高图书馆的运作效率,降低图书馆工作人员的劳动强度,同时可以对图书馆的整个运作过程做到明细化,透明化,为各项工作有条不紊的进行提供保障。

报告目的

本报告旨在研究分析图书馆管理系统开发的可行性,为此软件的开发人员提供可行性的验证与编写方法的指导。

软件信息

软件名称:

图书馆管理系统

开发平台:

TurboC

用户:

图书馆工作人员

2、可行性研究的前提

主要功能:

通过计算机完成图书馆在库书籍的管理,用计算机高效、安全的完成对图书的信息处理,将工作人员从繁琐的数据处理中解放。

性能要求:

a、书籍信息的录入,将图书名,库存数量输入系统,建立系统数据库。

b、书籍信息的查询,输入书名,显示此图书的有关信息,包括库存总量、借出数目、剩余数目。

c、书籍借出与归还,输入借出或归还图书的书名与数量后,对库存信息进行相应修改。

d、书籍信息的插入与删除,新书到库时或清除库存时,在数据库内增加或删减相应信息。

e、书籍信息的备份,将现有数据库信息存档,以备不时之需。

f、书籍信息的读入,输入文件名,从相应文件中把信息读入数据库。

g、权限问题,进入系统之前输入密码,密码不正确则退出系统。

开发目标:

要求系统具有良好的可操作性,数据稳定性以及安全性,可以长期使用。

3、对现有系统的分析

现用的管理系统在安全性,数据的读入功能方面存在不同程度的

缺陷,有必要进行改进

4、所建议的系统

使用基本方法:

该系统具有简单易用的特点,只需按照菜单功能行操作。

系统流程图:

6、投资及效益分析

该系统投资成本小,使用方法简单易懂。

该系统有效地提高图书馆工

作人员的工作效率,节约人力物力。

同时可以根据用户的特殊需要,

增添功能。

具有成本低,功能强大,使用灵活的特点。

7、社会因素方的可行性

法律方面:

本系统的开发不会侵犯他人、集体或国家的利益,不违背当地法律法规。

使用方面:

本系统可以满足图书馆管理的要求,而且对使用本软件人员的计算机水平要求不高,只需了解软件操作流程就可以使用本软件,无需培训。

8、结论

该系统在各个方面的均具有可行性,可以立即开始进行。

二、需求规格说明书

1、引言

编写目的:

为软件开发者提供开发依据,在软件的开发过程中起指向性功能。

本说明书的读者为此软件的开发者。

项目背景:

该软件由学生自行编写,由个人全权负责。

本软件独立于其它管理软件。

参考资料:

万晓东施玉霞等着《软件技术基础教程》09年7月

2、任务概述

目标:

本软件旨在为学校的图书馆管理人员提供一个可以方便管理库存图书的系统。

可以对库存图书进行录入、借还、查询、修改功能。

减少操作时间,提高工作效率。

该软件适用于一般规模的图书馆管理操作。

用户特点:

本系统的操作对象为图书馆管理人员。

对管理人员的计算机水平不需要很高的要求。

条件与限制:

本次开发工作无经费投入,开发期限为40小时。

3、数据描述:

静态数据:

系统密码,书籍名称,库存总数,剩余数,借出数。

动态数据:

使用者输入的信息,包括添加的书籍信息,查询关键字。

数据库描述:

系统数据库采用TXT文档。

数据流图:

数据字典:

数据流名:

图书

别名:

图书馆库存图书

组成:

书名+库存总数+剩余数+借出数

备注:

4、功能要求:

功能划分录入功能

浏览功能

信息查询功能

借出归还功能

插入与删除功能

信息的备份与读入功能

设置访问权限功能

功能描述

录入功能:

输入相关数据

浏览功能:

以列表方式列出所有记录信息

信息查询功能:

根据书名匹配查询,并将查询结果列出

借出归还功能:

根据借出与归还的书籍信息修改相应数据

插入与删除功能:

插入一条新的图书信息,删除某图书的信息

信息的备份与读入功能:

将输入文件进行备份和从指定文件读入数据

设置访问权限功能:

只有输入正确密码才可以进行操作

否则无权操作

5、性能要求

数据精确度:

查询时要确保查全率与查准率

时间特性:

系统运行时间应该在用户能够接受的范围内

适应性:

本软件属于小型软件,对不同的运行环境适应性很强,可以能够满足使用需求。

6、运行需求

用户界面:

在TurboC界面运行

硬件接口:

普通PC机

软件接口:

运行于装有TurboC的操作系统

故障处理:

如果在使用过程中出现程序出错,重新运行即可恢复

三、概要设计说明书

1、引言

编写目的:

设计一图书馆管理系统以代替现有的管理管理系统。

本说明书读者为软件设计者。

项目背景:

该软件由学生个人设计,无开发部门和主管部门,主要供学生练习使用。

该软件独立于其它软件系统。

参考资料:

万晓东施玉霞等着《软件技术基础教程》09年7月

谭浩强着《C语言程序设计第三版》

张志航王珊珊等着《程序设计语言—C》07年9月

2、概要设计:

需求规定:

本软件提供一个既可以存储信息,同时又具有浏览、插入、查询、修改、删除功能,供使用者轻松管理图书馆的库存图书。

数据库信息由使用者进行输入。

运行环境:

硬件普通PC机

支持环境WINDOWS操作系统,TurboC软件

基本设计概念:

本系统由主单函数调用各个子函数(功能函数)来实现各项操作。

功能函数包括插入函数,删除函数,显示函数,文件读入函数,文件读出函数,借出函数,归还函数,退出函数

函数调用关系图如下图所示:

系统结构

模块划分与功能需求关系

模块编号

模块名称

功能

M1

身份验证模块

输入验证信息

M2

主菜单模块

输入选择的功能

M3

插入模块

插入相关信息

M4

删除模块

删除指定信息

M5

查询模块

查询指定信息

M6

显示模块

以列表方式显示所有信息

M7

借出模块

实现书籍借出

M8

归还模块

实现书籍归还

M9

读入模块

从外部文件读入信息

M10

备份模块

备份文件信息

M11

退出模块

退出程序保存文件

人工处理过程:

数据的录入工作需人工完成

3、接口设计

用户接口:

用户输入信息按“书名”(空格)“库存数量”的格式输入。

TXT文件也按上述格式保存。

外部接口:

用户界面:

DOS界面

软件接口:

运行于Win95以上版本,且要求安装TurboC

4、运行设计

运行控制:

系统运行后先进行身份验证,验证通过后,登录,并调用M2,进入服务选择模块,由用户选择的信息选择激活M3—M10等模块,最后根据用户输入的接受信息退出程序,关闭系统。

运行时间:

各模块运行时间控制在1秒内。

5系统数据结构设计

书名charname[]剩余数量intsum

6、系统出错处理设计

出错信息

出错类型

处理方法

用户输入无效字符

提示出错,重新输入

借出数量过大

提示出错,重新输入

维护设计

本软件必须按照软件产品设计规范的步骤进行开发,充分考虑软件的可维护性,以便于未来版本开发及移植等二次开发。

在编写过程中如果发现有的模块没有必要,或者实现比较困难,可以由开发者提出修改意见,决定是否修改。

四、详细设计说明书

1、引言

编写目的:

设计一图书馆管理系统以代替现有的管理管理系统。

本说明书读者为软件设计者。

项目背景:

该软件由学生个人设计,无开发部门和主管部门,主要供学生练习使用。

该软件独立于其它软件系统。

参考资料:

万晓东施玉霞等着《软件技术基础教程》09年7月

谭浩强着《C语言程序设计第三版》

张志航王珊珊等着《程序设计语言—C》07年9月

2、总体设计

需求概述

录入功能:

输入相关数据

浏览功能:

以列表方式列出所有记录信息

信息查询功能:

根据书名匹配查询,并将查询结果列出

借出归还功能:

根据借出与归还的书籍信息修改相应数据

插入与删除功能:

插入一条新的图书信息,删除某图书的信息

信息的备份与读入功能:

将输入文件进行备份和从指定文件读入数据

设置访问权限功能:

只有输入正确密码才可以进行操作

否则无权操作

系统结构图

3、程序描述

M1身份验证

·功能:

验证身份

·性能:

·输入项:

预设密码

·输出项:

欢迎语句

·算法:

intkeyword=111,a;

printf("Pleaseinputkeyword:

");

scanf("%d",&a);

if(a!

=keyword)exit(0);

elseprintf("Welcome!

");

·测试要求:

运行正常。

M2主菜单模块

·功能:

选择功能

·性能:

·输入项:

数字0-9

·输出项:

对应功能项

·算法:

intDisplay_MainMenu()/*显示菜单的函数*/

{charx;

do{

system("cls");

printf("************************\n");

printf("BookList\n");

printf("AllBooks\n");

printf("aBookInformation\n");

printf("aBook\n");

printf("aBook\n");

printf("aBook\n");

printf("\n");

printf("RecordsFromaFile\n");

printf("toaFile\n");

printf("\n");

printf("************************\n");

printf("Pleasechoosefrom0-9:

");

printf("\n");

x=getchar();

}while(x<'0'||x>'9');

return(x-'0');

}

·测试要求:

运行正常。

M3插入模块

·功能:

插入新信息

·性能:

·输入项:

书名数量

·输出项:

成功提示

·算法:

Book*Insert(Book*head,Book*s)/*插入结点的函数*/

{Book*p0,*p1,*p2;

p1=head;p0=s;/*使p1指向第一个结点,p0指向要插入的结点*/

if(head==NULL)/*原来的链表是空表*/

{head=p0;p0->next=NULL;}/*使p0作为首结点*/

while(strcmp(p0->Name,p1->Name)>0&&(p1->next!

=NULL))

{p2=p1;p1=p1->next;

}

if(strcmp(p0->Name,p1->Name)<=0)

{p0->next=p1;

if(head==p1)head=p0;

elsep2->next=p0;

}

else

{p1->next=p0;

p0->next=NULL;

}

return(head);

}

Book*Insert_a_record(Book*head)

{Book*newrecord;

newrecord=(Book*)malloc(LEN);/*动态分配存储空间*/

scanf("%s%d",newrecord->Name,&newrecord->all);

newrecord->borrow=0;

newrecord->left=newrecord->all;

head=Insert(head,newrecord);

printf("Insertsuccessfully\n");/*输出插入成功的信息*/

return(head);

}

·测试要求:

运行正常。

删除模块

·功能:

删除信息

·性能:

·输入项:

所删书名

·输出项:

成功提示

·算法:

Book*Delete(Book*head,char*name)

{Book*p1,*p2;

if(head==NULL)

printf("SorryNorecord!

\n");

p1=head;

while(strcmp(p1->Name,name)!

=0&&p1->next!

=NULL)/*p1不是要找的结点,且后面还有结点*/

{p2=p1;p1=p1->next;}/*p1后移一个结点*/

if(strcmp(p1->Name,name)==0)/*找到了*/

{if(p1==head)head=p1->next;/*若p1为首指针,使下一结点为首指针*/

else{p2->next=p1->next;/*否则将下一结点地址赋给前一结点地址*/

printf("delete%ssuccessfully\n",name);}/*输出删除成功的信息*/

}

return(head);

}

Book*Delete_a_record(Book*head)

{charname[20],ch;

Book*p;

scanf("%s",name);

getchar();/*接收回车*/

p=Query(head,name);

if(p==NULL)printf("CannotFind%s\n",name);/*找不到结点*/

else{printf("Delete%s,Y/N?

\n",name);

ch=getchar();

system("pause");

if(ch=='y'||ch=='Y')

while(p!

=NULL)

{head=Delete(head,name);/*删除所有与输入相同的记录*/

p=Query(head,name);

}

}

return(head);

}

·测试要求:

运行正常。

M5查询模块

·功能:

查询功能

·性能:

·输入项:

查询书名

·输出项:

相应书籍信息

·算法:

Book*Query(Book*head,char*name)

{Book*p;

p=head;

while(strcmp(name,p->Name)!

=0&&p->next!

=NULL)

p=p->next;

if(strcmp(name,p->Name)==0)/*找到了,返回结点地址*/

return(p);

else/*找不到返回空指针*/

return(NULL);

}

voidQuery_a_record(Book*head)

{charname[20];

Book*p;

scanf("%s",name);

p=Query(head,name);

if(p!

=NULL)/*找到了*/

{printf("Findsuccessfully\n%stotal:

%dleft:

%dborrow:

%d\n",

p->Name,p->all,p->left,p->borrow);

}

else

printf("Can'tfindtherecordsof%s\n",name);/*找不到*/

}

·测试要求:

运行正常。

M6显示功能

·功能:

显示所有信息

·性能:

·输入项:

相应的菜单序号

·输出项:

所有书籍信息

·算法:

voidDisplay(Book*head)

{Book*p;

inti;

p=head;

printf("NumBookNameTotalLeftBorrow\n");

for(i=1;p!

=NULL;i++)

{

printf("%-5d%-14s%-10d%-10d%-5d\n",

i,p->Name,p->all,p->left,p->borrow);

p=p->next;

if(i%10==0)

{system("pause");/*按回车翻页显示*/

printf("NumBookNametotalleftborrow\n");

}

}

·测试要求:

运行正常。

M7借出模块

·功能:

借出书籍

·性能:

·输入项:

所借书名数量

·输出项:

成功信息

·算法:

Book*Borrow_a_Book(Book*head)

{charname[20],ch;

intn;

Book*p;

scanf("%s%d",name,&n);

getchar();/*接收回车*/

p=Query(head,name);

if(p==NULL)printf("CannotFind%s\n",name);/*找不到结点*/

elseprintf("Areyousuretoborrow?

%s,Y/N?

\n",name);

ch=getchar();

system("pause");

if(ch=='y'||ch=='Y')

head=Borrow(head,name,n);

return(head);

}

·测试要求:

运行正常。

M8归还模块

·功能:

归还书籍

·性能:

·输入项:

所换书名数量

·输出项:

成功提示

·算法:

Book*Return_a_Book(Book*head)

{charname[20],ch;

intn;

Book*p;

scanf("%s%d",name,&n);

getchar();/*接收回车*/

p=Query(head,name);

if(p==NULL)printf("CannotFind%s\n",name);/*找不到结点*/

elseprintf("Areyousuretoreturn?

%s,Y/N?

\n",name);

ch=getchar();

system("pause");

if(ch=='y'||ch=='Y')

head=Return(head,name,n);

return(head);

}

Book*Return(Book*head,char*name,intsum)

{Book*p1;

p1=head;

while(strcmp(p1->Name,name)!

=0&&p1->next!

=NULL)/*p1不是要找的结点,且后面还有结点*/

{p1=p1->next;}/*p1后移一个结点*/

if(strcmp(p1->Name,name)==0)/*找到了*/

p1->borrow=p1->borrow-sum;

p1->left=p1->left+sum;

return(head);

}

·测试要求:

运行正常。

M9读入模块

·功能:

从文件读入信息

·性能:

·输入项:

文件名

·输出项:

成功提示

·算法:

Book*AddfromText(Book*head,char*filename)

{FILE*fp;

intn,i;

if((fp=fopen(filename,"r"))==NULL)

{printf("Cannotfindfile:

%s\n",filename);/*打不开所指定文件*/

return(head);}

fscanf(fp,"%d",&n);/*待插入记录个数*/

for(i=0;i

{Book*p;

p=(Book*)malloc(LEN);

fgetc(fp);/*读取换行符*/

fscanf(fp,"%s%d%d%d",p->Name,&p->all,&p->left,&p->borrow);

head=Insert(head,p);/*插入结点*/

}

printf("Addfrom%ssuccessfully\n",filename);

fclose(fp);

return(head);

}

测试要求:

运行正常。

M10备份模块

·功能:

数据备份

·性能:

·输入项:

所建文档名

·输出项:

成功提示

·算法:

Book*WritetoText(Book*head,char*filename)

{FILE*fp;Book*p;

if(head==NULL)

{printf("NoRecord!

\n");

return(head);}

fp=fopen(filename,"w");/*打开文件*/

p=head;

while(p!

=NULL)

{fprintf(fp,"%-14s%-10d%-10d%-10d\n\n",p->Name,p->all,p->left,p->borrow);/*文件输出*/

p=p->next;}

printf("Writeto%ssuccessfully\n",filename);/*输出写到文件完毕的信息*/

fclose(fp);

return(head);

}

·测试要求:

运行正常。

M11退出模块

·功能:

退出程序

·性能:

·输入项:

数字0

·输出项:

再见语句

·算法:

voidQuit(Book*head)

{Book*p,*p1,*p2;FILE*fp;

charfilename[]="last";

p2=p1=head;

if(head!

=NULL)

{fp=fopen(filename,"w");/*打开文件*/

p=head;

while(p!

=NULL)

{fprintf(fp,"%s%d%d%d\n",p->Name,p->all,p->left,p->borrow);/*文件输出*/

p=p->next;}

printf("Writeto%ssuccessfully\n",filename);/*输出写到文件完毕的信息*/

fclose(fp);}

while(p1!

=NULL)/*p1指向的结点不是空指针*/

{p2=p1->next;

free(p1);/*释放存储空间*/

p1=p2;/*p1后移一个结点*/

}

}

·测试要求:

运行正常。

五、测试报告

1、引言

编写目的:

测试图书馆管理系统软件的各项功能是否符合预期要求。

本报告读者为软件设计者。

项目背景:

该软件由学生个人设计,无开发部门和主管部门,主要供学生练习使用。

该软件独立于其它软件系统。

参考资料:

万晓东施玉霞等着《软件技术基础教程》09年7月

谭浩强着《C语言程序设计第三版》

张志航王珊珊等

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2