软件工程图书管理系统需求分析报告_第1页
软件工程图书管理系统需求分析报告_第2页
软件工程图书管理系统需求分析报告_第3页
软件工程图书管理系统需求分析报告_第4页
软件工程图书管理系统需求分析报告_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程报告 图书管理系统 需求性分析姓名:蒋维佳 学号: 20122018 班级:应数 01班1. 引言1.1 编写目的 此规格说明书是为了对图书馆管理系统做一个概要的说明, 是软件的大概的分析过 程,对最终的软件加以说明。主要的读者为软件设计人员,程序编写员,以及老师。1.2 项目背景 该项目作为计算机学院 05 级的软件课程设计题目,学生应该在规定的时间之内完 成,时间是第七周( 4 月 7 日)到第十二周( 5 月 16 日),学生应该在这个时间之内做 好需求规格说明书,概要设计说明书,详细设计说明书,以及做好程序,并在最后加以 用户操作手册等一系列详细的设计要求。1.3 定义1.4

2、参考资料 实用软件工程第二版 郑人杰 殷人昆 陶永雷等主编 清华大学出版社 delphi 程序员成长攻略蒙祖强 龚涛等编著 中国水利水电出版社 delphi7 开发实例完全剖析 王志强 编著 中国电力出版社 精通 delphi 数据库设计与实例开发 陈润编著 中国青年出版社2. 任务概述2.1 目标 通过该系统可以实现最基本的图书馆的一系列的操作流程,其中包括: 图书的借阅,图书的查找,图书的退还,借书证的申请,图书的上架处理,图书的 过期未还的处罚等等功能。这些功能要用delphi以及后台的数据库 SQL来实现。2.2 运行环境 Windows 98/2000/XP/2003 操作系统下,

3、安装并配置软件 Microsoft SQLServer 2000 数据库管理系统。作者用的是 windows XP操作系统,理论上可以在 windows 98/2000/2003 下运行的。2.3 条件与限制 因现在配有 windows98 与 windows2003 的操作系统的电脑较少,不易找到,所以在 这两种操作系统上实验比较困难。3、数据描述3.1 静态数据图书:图书编码,书名,书号,图书类别,作者,出版社,出版时间,单价 管理员:用户名,密码,权限,姓名读者:借书卡号,姓名,性别,读者类别,所属系部,部门或班级3.2 动态数据输入数据:鼠标对按钮的点击,查询方式,查询关键字,新建图书

4、项,新建读者项,图 书项、读者项记录的修改,图书借还以及注销操作时的输入信息,受限操作所需的密码等。输出数据: 查询关键字所确定的数据库子集, 统计结果, 操作成功或失败的消息, 图书 借还以及注销操作时的结果信息。3.3 数据库描述数据库采用 SQL Server 数据库。3.4数据流图与数据字典1、数据流图(1)顶层数据流图图书管理员图h存E竦A戏船国书査讯擂黑雜计皤杲统管理员(2) 0层数据流图:丄国伫息K书营理诫B44世理-3.T址-L?理城金M凹疋年上壬.匸医用管现虽(3) 1层数据流图1读者信息管理M匮*类樹去2图书信息管理图苗类别托冏幷管理修改图I性信灼襄侯息偿汁2.4Ct询朗书

5、閨畑.超忙金询詰社图*笔星如|3图书借还管理W.ER图:Keygen eralAdmadva ncedAdm3.4数据词典(DD)高级管理员(帐号,姓名)名字:帐号简述:用以唯一标识用户的 信息。范围:长度: 使用位置:用户登录时进行 相应的判断核对。名字:姓名简述:对用户加以说明,修 饰。不能标识具体用户。 范围:长度:使用位置:在进入系统时, 显示相关的信息。般管理员(帐号,姓名)名字:帐号简述:用以唯一标识用户的 信息。范围:长度: 使用位置:用户登录时进行 相应的判断核对。名字:姓名简述:对用户加以说明,修 饰。不能标识具体用户。 范围:长度:使用位置:在进入系统时, 显示相关的信息。

6、普通用户(帐号,姓名,班级,性别,组号)名字:帐号简述:用以唯一标识用户的 信 息。范围:长度:使用位置:用户登录时进行 相应的判断核对。名字:姓名简述:对用户加以说明,修 饰。不能标识具体用户。 范围:长度:使用位置:在进入系统时, 显示相关的信息。名字:性别简述:对用户加以说明,修 饰。不能标识具体用户。 范围:长度:使用位置:在进入系统时, 显示相关的信息。名字:班级简述:对用户加以说明,修 饰。不能标识具体用户。 范围:长度:使用位置:在进入系统时, 显示相关的信息。名字组号简述:对用户的等级说明, 并且管理最大借书量。范围:” 01” 05长度:使用位置:借书时对借书量 进行限制。登

7、录用户(帐号,密码,权限)名字:帐号简述:用以唯一标识用户的 信 息。范围:长度: 使用位置:用户登录时进行 相应的判断核对。名字:密码简述:与用户帐号对应,判 断是否能够进入界面取值范围:“ 01 ”“ 03 ” 长度:使用位置:用户登录时进行 权限的判断,并进入相应的 界面名字:权限简述:登录用户的权利范围 进行管理取值范围:“ 01 ”“ 03 ” 长度:2使用位置:用户登录时进行 权限的判断,并进入相应的 界面图书类别(类别,类名)名字:类别名字:类名简述:每一个图书有一个类简述:每一个图书有一个类别,用以管理员分类管理另V,用以管理员分类管理范围:范围:长度:长度:使用位置:用户查找

8、的时候使用位置:用户查找的时候可以对查找的项目进行限制可以对查找的项目进行限制图书(图书编号,类别,书名,作者,出版日期,出版社,定价,总数量,剩下数量,备注)名字:图书编号简述:唯一标识每一本图书的关键域范围:长度:使用位置:在新书入库, 借阅登记,借阅查询, 图书整理,超期提示中使用 到名字.书名简述:类名每一本图书的十 简述字每一个图书有一个类 别价用以管理员分类管理 范围:长用位置:在在新书入库, 借用登记:用户查阅查时候, 图书整理找超期提示行使用 到名字:作者简述:标识每一本图书的写 作者范围:长度:使用位置:在新书入库,借 阅等级,图书整理中使用到名字:定别简述:每识个一书图书的

9、实 际价格以管理员分类管理 范围:长度:使用位置:在户书找库时借 可等级价图的整目进行用制名字:类型简述:每一图图书有类个类 别找用以管理员分类管理 范围:使用位置:在新书入库,借 使用位置图用户查找使时候 可以对查找的项目进行限制名字:图书库存数量简述:管理每一种图书的现 存量范围:长度:使用位置:在新书入库,借 阅等级,图书整理中使用到名字:出版社简述:标识每一个图书的出 版处范围:长度:使用位置:在新书入库,借 阅等级,图书整理中使用到名字:出版日期简述:标识每一本图书的出 版日期范围:长度:使用位置:在新书入库,借 阅等级,图书整理中使用到借阅(用户帐号,图书编号,借书日期,到期日期,

10、数量,还书日期)名字:帐号简述:用以唯一标识用户的 信 息。范围:长度: 使用位置:用户登录时进行 相应的判断核对。名字:图书编号简述:唯一标识每一本图书的关键域范围:长度:使用位置:在新书入库, 借阅登记,借阅查询 , 图书整理,超期提示中使用 到名字:数量简述:管理每一种图书的现 存量范围:长度:使用位置:在新书入库,借 阅等级,图书整理中使用到名字:借书日期简述:标识用户在何时借书范围:长度:使用位置:在借阅等级中使 用名字:到期日期简述:标识用户应在何时还 书范围:长度: 使用位置:借阅登记中使用名字:还书日期简述:标识用户在何时还书范围:长度:使用位置:在借阅登记中使 用3.5数据采

11、集数据通过事先的录入, 形成最基本的管理人员帐号,通过管理人员的管理, 可以实现相应的数据的添加, 删减。比如,管理员可以添加用户的相关信息(通过办理借书证)还可以添加图书(通过新书上架)来办理。3. 功能需求4.1功能划分图书管理系统主要实现以下七方面的功能:a.查询b.图书借还 c.图书入库d.图书维护e.图书超期提示f. 环境管理4.2功能描述图书管理包括查询、借还、入库、维护、超期提示、环境管理七方面功能。图书入库,主要实现入库登记。图书借阅,用户需凭相应证件到图书馆进行借书,并由图书管理员进行相应的登记 记录档案。查询,当用户要查询自己的借阅情况时,可以进行借阅查询。用户可以通过此系

12、统 进行图书的查询和读者查询(即用户自己的相关信息查询)。图书超期提示,当借阅者在已到借书期限时仍未归还图书,提示其尽快办理归还手 续。并由系统计算相应的处罚。图书维护,图书管理员可以通过此系统进行相应的图书的维护计算。4.3数据流图(DFD)a.新书入库D1库存清单ZT广F1. 2next=p;p-next=NULL;del_re: flag2=0; clrscr();gotoxy(1,3);textcolor(4);cprintf( 提示 :); textcolor(7);gotoxy(6,4);printf( 您可以逐次操作后存盘 ,也可以完成全部 ); gotoxy(6,5);prin

13、tf( 操作后退出时存盘, 不进行存盘您所有删);gotoxy(6,6);printf( 除操作对文件无效 !);gotoxy(1,23);printf( 请输入要删除的书号 (0 退出 ,00 存盘 ):);gets(a);if(!strcmp(a,0) goto del_end;else if(!strcmp(a,00) if(flag=0) gotoxy(50,24);textcolor(4);cprintf( 您还未进行任何删除操作!);textcolor ;getch();clreol();goto del_re;else flag3+=sa_ve(head);goto del_re

14、;p=head;while(p!=q-next) if(!strcmp(a,p-num)if(p=head) head=p-next;flag+;flag2=1;gotoxy(35,13);printf(删 除成功!);getch();goto del_re;else temp-next=p-next;flag+;flag2=1;gotoxy(35,13);printf(删 除成功!);getch();goto del_re;temp=p;p=p-next;if(flag2=0) gotoxy(50,24);textcolor(4);cprintf( 对 不 起 没 有 找 到 你 要 删 除

15、 的 数 据!);textcolor ;getch();clreol();gotodel_re;del_end:if(flagflag3) gotoxy(22,13);clreol();printf( 您还有删除操作未存盘 ,是否存盘 (Y/N):);s=getchar();if(s=78|s=89|s=110|s=121) if(s=89|s=121) gotoxy(1,13);clreol();sa_ve(head);b=getchar();else b=getchar();goto del_end2;else goto del_end;del_end2: fclose(fp);/* 查找

16、 (按书号查找 )*/s_1()/* 查找子函数中的按书号查询功能 */char temp_num10;Book finger; int flag;FILE *fp; fp=fopen(blist.db,rb);s_1re:flag=0;gotoxy(1,25);printf( 请输入书号 ( 输入 0 返回 ):); scanf(%s,temp_num);if(!strcmp(temp_num,0) fclose(fp);goto s_1end; while(!feof(fp) fread(&finger,sizeof(Book),1,fp); if(!strcmp(finger.num,t

17、emp_num) clrscr();textcolor(4);cprintf( 书号 );gotoxy(17,1);cprintf( 书名 ); gotoxy(33,1);cprintf(作者 ”);gotoxy(47,1);cprintf(总库存”); gotoxy(63,1);cprintf( 现存量 rn);textcolor(7);printf( %stt%stt%stt%dtt%dn,finger.num,,finger.author,finger.total,finger. leavings);flag=1;rewind(fp);break;if(flag=0

18、) clrscr();gotoxy(28,12);printf( 没 有 找 到 您 要 查 询 的 书!);rewi nd(fp);getch();clrscr();goto s_1re;s_1end: b=getchar();/* 借书功能 */borrow()FILE *fp;char a10;int flag;Book n;fp=fopen(blist.db,rb+);clrscr();borrow_re:flag=0;gotoxy(1,13);clreol();gotoxy(1,24); clreol();gotoxy(1,23);printf( 请输入要借的书号 (输入 0返回 )

19、:);clreol(); gets(a);if(!strcmp(a,0) goto borrow_end;fread(&n,sizeof(Book),1,fp);while(!feof(fp)if(!strcmp(a,n.num) /* 一样的话 */if(n.leavings=0) printf( 对不起 ,此书全部借出 .n);else -n.leavings;fseek(fp,-56L,1);fwrite(&n ,sizeof(Book),1,fp);gotoxy(35,13);printf(借出成功!);flag=1;getch();rewin d(fp);break;fread(&n

20、, sizeof(Book),1,fp); if(flag=0) gotoxy(35,13);printf(借书失败!);rewind(fp);getch(); goto borrow_re;borrow_e nd: fclose(fp);四、源程序清单:(见源程序文件名: libc)五、测试数据及测试结果:(一)添加输入数据:书号书名作者库存1001h1li81002h2ki81003h3fd91004h4li101005h5sdfs111006h6ed91007h7tio7(二)清除输入清除的书口号:1006提示删除成功,运行查询功能中的查询全部功能,确认1006己被删除(三)查询1 .书

21、号查询,输入:100511输出:1005h5sdfs2 .书名查询,输入:h7输出:1007h7tio73 .作者查询,输入:li输出:1001h1li81004h4li10(四)借出输入:1004输出:借出成功运行查询功能中的查询全部功能,显示: 书号书名作者库存现存1004 h4 li 109(五)归还输入:10 0 4输出:归还成功运行查询功能中查询全部,显示:现存10书号 书名 作者 库存1004 h4 li 10六、心得体会: 编写整个模拟图书馆管理程序历时五天, 五个功能模块中的入库与查询模块由于定义函 数名与C语言中自带函数名冲突,到发现原因并修改,期间耗时三天。在三天期间,在不

22、知道冲突原因之前,我在几个论坛上发贴,有回贴的竟没人知道原因,后来偶然的灵机一动, 将函数名更改,程序顺利运行。我还从网上下了一本C语言函数的电子书,经查确实是由于函数名冲突。所以,我们在定义函数的时候,在注意函数名是否与C语言自带的函数冲突。因为我比较喜欢有应用性的程序, 所以挑选图书馆来做, 但是在确定所用数据结构方面, 构思时考虑不足, 忽略了图书馆内书的数据量, 一直到入库与查询两个模块完成, 我还是采 用顺序表的结构来进行数据操作, 但是在编写清除模块的时候, 突然间发现将文件数据全部 读出时, 如果采用顺序链表就必须欲先定制一个足够大的空间, 所以我又将数据结构改成单 链表以节省内

23、存空间。在编写入库和查询模块时,用的知识都只是大一所学C语言老师教过的,如打开文件fopen 命令,读取文件 fread 命令 ,写入文件 fwrite 命令等等。对文件的其它详细操作一无所 知,如读取时文件 fp 指针的位置,如何让 fp 指针在文件中定位等等。但是我在编写借出, 归还和清除三个模块时,恰恰得用到这些知识,所以借用ftell()命令,自己慢慢的摸索出一些门道。如:在借出和归还模块里,我采用的方法是,定义一个图书类型的结构体指针,一 次从文件里只读取一个数据, 将它的关键字符段与输入数据进行比较, 如果一致则将文件指 针fp往后移动sizeof(Listtype)个字节,然后将

24、经过这个修改后的数据写入文件。之所以采用 这个方法,我是考虑到它在内存中只占用了sizeof(Listtype)字节个空间,并且也只需向文件中写入一次。如果用链表全部读取、 修改后再保存文件, 一是占用了很大的内存空间, 二是 要向文件中写入全部的数据。 但是, 如果要进行多次借出操作的时候, 用链表读取只需要全 部操作完后一次对修改后的数据进行写入,期间的操作只需在内存中进行。而用我的方法, 借一次就必需打开文件, 逐条读取, 修改写入。所以至于哪种方法更好,我自己具体也弄不 清,还请老师多多指点一下。因为在整个程序中,我在主函数和五个功能函数中都用到了无限循环体while(1)以实现操作结

25、束后仍然停留在这个功能模块,直到输入0以退出。 因为这种结构,在编写和测试过程中遇到了种种的问题而造成程序运行错误或是死循环, 于是我采用隔数行打印一些字符的 方法以判断是哪一个环节出错,这个方法虽然是麻烦一点但能达到一定的效果。删除功能函数是最后编写的, 在编写时思路也经过改变, 原本的思路是: 一次从文件中 读取一条与输入数据比较,找到符合条件的数据后,记住此时文件指针fp 的位置,将 fp 后面直到文件结束的数据读入链表中,最后将 fp 指针移到要删除数据位置前,将内存中的数 据写入文件。 这样便将要删除的数据在文件中覆盖。 可是在具体的测试中, 功能的实现很不 稳定, 有时候会出现写入错误而导至读取时出现乱码。 所以最后不得不放弃这种思路, 将方 法改成以wb+的方式打开文件,将文件中的数据全部读入链表,在链表中进行删除操作,全部操作结束后写入文件。再者是编写的三个效果,一个是模仿 windowsXP 的开机,一个是用类似百叶窗的效果 打印字符画, 另外一个是程序结束时的告别画面。 这三个无非是用 while,gotoxy 等命令实现, 纯粹是因为好玩,增强程序的趣味性,但是这些效果因为每台机子CPU 的运算速度不同, 所以在不同机子上运行的速度不同。总之,通过专周收获还是蛮多的,重在实践

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论