用户手册.docx

上传人:b****6 文档编号:5733575 上传时间:2022-12-31 格式:DOCX 页数:22 大小:181.11KB
下载 相关 举报
用户手册.docx_第1页
第1页 / 共22页
用户手册.docx_第2页
第2页 / 共22页
用户手册.docx_第3页
第3页 / 共22页
用户手册.docx_第4页
第4页 / 共22页
用户手册.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

用户手册.docx

《用户手册.docx》由会员分享,可在线阅读,更多相关《用户手册.docx(22页珍藏版)》请在冰豆网上搜索。

用户手册.docx

用户手册

目录

1、引言2

编写目的2

项目背景2

参考资料2

2、总体设计2

需求概述2

系统结构图3

3、程序描述3

M1身份验证3

M2主菜单模块4

M3插入模块5

删除模块7

M5查询模块9

M6显示功能11

M7借出模块12

M8归还模块13

M9读入模块15

M10备份模块16

M11退出模块17

4、测试计划执行情况19

权限功能19

插入功能19

插入功能20

删除操作21

查询模块21

显示模块22

借出模块23

归还模块24

文件读入模块25

文件备份模块26

退出模块26

5、评价结果26

软件能力26

缺陷和限制26

建议:

26

测试结论27

 

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("1.CreateBookList\n");

printf("2.DisplayAllBooks\n");

printf("3.InsertaBookInformation\n");

printf("4.DeleteaBook\n");

printf("5.BorrowaBook\n");

printf("6.ReturnaBook\n");

printf("7.Query\n");

printf("8.AddRecordsFromaFile\n");

printf("9.WritetoaFile\n");

printf("0.Goodbye\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后移一个结点*/

}

}

·测试要求:

运行正常。

 

4、测试计划执行情况

权限功能

·测试数据:

输入正确密111

·测试结果:

成功进入主界面,说明本模块功能正常

插入功能

·测试数据:

·测试结果:

菜单显示正常。

本模块功能正常。

 

插入功能

·测试数据:

history100

·测试结果:

调用显示函数显示结果。

本模块功能正常。

删除操作

·测试数据:

history

·测试结果

调用显示函数显示结果:

输出结果正确,说明本模块功能正常。

查询模块

·测试数据:

预输入数据history100

physics200查询history

·测试结果:

显示结果history10000

说明本模块运行正常。

显示模块

·上述过程已经对本功能进行了测试。

·结果:

显示模块运行正常。

借出模块

·测试数据:

预输入数据history100

physics200

调用借出函数借history50

maths100

·测试结果

 

调用显示函数显示结果:

归还模块

·测试数据:

预输入数据history100

physics200

调用归还函数还history50

·测试结果:

文件读入模块

·测试数据:

文本文档a.txt

·测试结果:

调用显示函数显示结果

测试结果正确。

文件备份模块

·测试数据:

测试数据采用上一步写入的数据

·测试结果

 

退出模块

·测试数据:

·测试结果成功退出程序并生自动成备份文件last.txt

退出模块运行正常。

5、评价结果

软件能力:

软件各项功能复合预期,各子程序运行正常

缺陷和限制:

每次登陆后必须手工调入上一次的备份文件以恢复系统数据,给操作者带来不便

建议:

完善系统的数据库功能,提供安全可靠的数据保存功能。

测试结论:

本软件测试通过。

 

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

当前位置:首页 > 经管营销

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

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