软件验收报告.docx
- 文档编号:25335193
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:29
- 大小:113.60KB
软件验收报告.docx
《软件验收报告.docx》由会员分享,可在线阅读,更多相关《软件验收报告.docx(29页珍藏版)》请在冰豆网上搜索。
软件验收报告
软件验收报告
学生管理系统软件
验收报告
第一章项目概述
学生信息管理系统(StudentInformationManagementSystem),以下简称SIMS,是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统(ManagementInformationSystem)。
它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。
能有效的帮助学校和老师掌握学生的情况,为学生提供成绩跟课程方面的查询。
在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:
效率底,保密性差,时间一长将产生大量的文件和数据,更不便于查找,更新,维护等。
诸如这些情况,令学校管理者对学生的信息管理带来了很大困难,严重影响了教育工作者的工作效率。
随着科学技术的不断提高,计算机科学日渐成熟,使用日趋成熟的计算机技术来代替传统的人工模式,来实现学生信息的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点。
这些优点能够极大地提高学生信息管理的效率,也是学校的科学化、正规化管理的重要条件。
用计算机制作的学校信息管理系统还可以通过功能强大的互联网及时的向学生的家长传递该生在校的最新成绩,有助于学校与家长的信息互动,为更好地把握学校的教育方针一定的促进作用。
因此,开发这样一套管理软件成为很有必要的事情。
1.1项目背景
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
目前信息处理技术的飞速发展,基于计算机网络的信息处理已成为人们日常工作,学习和生活必备系统。在Internet飞速发展的今天,互联网已成为人们快速获取,发布和传递信息的重要渠道,它已成为社会生活的一部分。学生信息处理的电脑化、网络化,是实现学校管理现代化和信息化的重要内容,也是方便用户快捷查询相关充足信息的重要工具。与传统学生信息处理模式相比,基于网络的学生管理系统具有无可比拟的优越性。
因此开发一套有关学校的信息管理系统不仅能大大提高工作效率而且还能给师生的工作学习带来极大的便利。
1.2相关文档
1《学生管理系统软件测试方案》
2《学生管理系统软件测试用例》
1.3参考资料
《软件测试从入门到精通》
《软测之魂:
核心测试设计精解》
《软件测试与测试技术》
1.4部分系统截图
1.5系统结构图
第二章验收定义
2.1验收策略
由开发方提供被验收内容、验收文档,由监理公司与用户进行评审,在评审无误的情况下,确认通过验收。
2.2验收依据
《软件测试验收准则》
2.3验收环境
学生管理系统软件实际运行的生产环境为验收环境。
⏹硬件平台
计算机
⏹软件平台
Window操作系统:
windowxp、window7、window8
2.4验收标准
2.4.1项目验收原则
1、审查提供验收的各类文档的正确性、完整性和统一性,审查文档是否齐全、合理;
2、审查项目功能是否达到了合同规定的要求;
3、审查项目有关服务指标是否达到了合同的要求;
4、审查项目投资以及实施进度的情况;
对项目的技术水平做出评价,并得出项目的验收结论。
2.4.2验收流程
本项目的验收采取项目验收流程的方式进行验收。
具体流程如下图所示。
2.4.3系统功能标准
严重程度
描述
A
学生信息管理系统由于出现问题不能继续运转(崩溃)
学生信息管理系统的数据出现错误。
B
某项业务无法进行。
学生信息管理系统产生数据错误。
C
学生信息管理系统中某一操作不能继续运转或错误,但不影响业务的进行。
(有替代办法)
学生信息管理系统打印的凭证或流水不符合需求所提出的标准。
D
其他学生信息管理系统在某种状态下产生的错误,不影响正常功能。
如果各模块验收测试结果如下表所述则视为验收合格,否则将进行修改,以进行再次验收评审。
严重程度
关系
发生个数
A
=
0
B
<=
10
2.5验收范围
用户以及监理方进行验收确认。
验收确认包括以下两方面确认内容:
1.参照《验收标准》确认合同所涉及的功能以及项目组的实施工作是否完成;
2.抽取客户端进行测试,确定系统能够稳定运行。
2.6验收人员
单位
人员
职责/任务
联系方式/Email
备注
哈师大学生
张紫娜
组长
第三章项目验收内容
3.1实施工作验收
工作阶段
工作内容
工作是否完成
需求调研
通过与用户的沟通,根据项目实际情况编写提交《需求说明书》、《概要设计》、《详细设计》。
□完成□未完成
系统开发
根据《概要设计》内容,完成《详细设计》并根据《详细设计》开发系统和测试。
每周提交项目进度及情况报告、测试报告。
□完成□未完成
系统安装
安装产品,对系统进行部署。
□完成□未完成
用户培训
编写用户使用手册,对用户进行使用培训。
□完成□未完成
系统运行
跟踪监控系统运行。
对使用中发现的问题进行记录和评估,在不影响系统结构的情况下对发现的问题进行修正。
□完成□未完成
3.2软件平台验收单
验收人:
张紫娜
验收时间:
序号
软件类型
软件名称
验收结果
备注
1
系统软件
学生管理系统
完成
3.3功能模块验收单
序号
功能模块
验收内容
合同要求
验收结果
1
登录验证
能否正常登陆
必须实现
合格
2
密码模块
能否修改密码
必须实现
合格
3
学生模块
正常实现添加修改功能
可以有差错
合格
4
课程模块
正常实现添加修改功能
必须实现
合格
5
成绩模块
正常实现添加修改功能
必须实现
合格
6
退出模块
正常退出系统
必须实现
合格
3.4项目文档验收单
序号
文档名称
用途
验收结果
备注
1
软件需求分析
分析软件的需求,为后续的工作
合格
2
软件测试用例
对以实现的软件进行测试
合格
3.5运行结果验收
系统运行内容
是否符合要求
a.软件登录
符合
b.软件测试
符合
C.软件查询
符合
d.软件修改
符合
e.软件退出
符合
第四章验收结论
经过严格的测试本软件达到要求标准,符合验收要求。
第五章交付物清单
文档提交清单
1《学生管理系统软件测试方案》
2《学生管理系统软件测试用例》
源码提交清单
源程序清单(仅给出核心代码部分)
typedefcharbool;
#defineFILEPATH"c:
\\stuinfo.dat"
#defineINFOPATH"c:
\\test.txt"
#defineMAXSPACECOUNT10//系统所记录的最大冗余块数
#defineMAXSUBCOUNT20//系统所允许存储的最多科目数
#defineRANDSTUCOUNT100//系统将自动产生的学生个数
#defineRANDSUBCOUNT20//系统将自动产生的科目个数
#defineBUFSIZE20//字符缓冲区大小
#defineSHOWMAX6//屏幕最大显示的科目数
#defineTRUE1
#defineFALSE0
#defineREAD0x81
#defineWRITE0x82
#defineSEARCH_SCHID0x83//通过学生的学号进行搜索
#defineSEARCH_NAME0x85//通过学生的姓名进行搜索
#defineSEARCH_SUB0x86//通过学科的名称进行搜索
#defineSHOW_PRIV0x87//显示单个学生的个人信息
#defineSHOW_PERMARK0x89//显示单个学生的个人成绩
#defineSHOW_ALLMARK0x90//显示所有学生的某科成绩
#defineSORT_DECLINE0x92//以降序排列
#defineSORT_INCLINE0x93//以升序排列
#defineALPHAWORD0x94//以字母构成的字符串(用于随机产生学生的姓名
#defineNUMBERWORD0x95//以数字构成的字符串(用于随机产生学号
#defineADDSUB0x96//科目编辑模式为添加
#defineEDITSUB0x97//科目编辑模式为修改
#defineBIGNUMBER0x0ffffff//系统延迟采用的循环中的大数
#defineLONGSIZEsizeof(long)
#defineINTSIZEsizeof(int)
#defineLINKSIZEsizeof(link)
#defineSTUINFOSIZEsizeof(stuinfo)
#defineSUBINFOSIZEsizeof(subinfo)
#defineTCHINFOSIZEsizeof(tchinfo)
#defineSUBMARKSIZEsizeof(submark)
#defineFILEINFOSIZEsizeof(fileinfo)
#defineMYSTUSIZEsizeof(mystu)
#defineDATASEEK(FILEINFOSIZE+LONGSIZE)
#defineDATATRANS(STUINFOSIZE+LONGSIZE)
#defineSETERR(S){printf(S);returnFALSE;}//显示出错信息并返回
#defineNEW(I)(I*)malloc(sizeof(I))//开辟新的内存空间
typedefstruct_submarkinfo
{
boolflag;//flag=0表该块无效
intsub_id;//科目的id号
doublesub_mark;//该科目的成绩
}submark,*psubmark;
//科目成绩信息
typedefstruct_stu
{
charstu_name[20];//学生姓名
charstu_schid[20];//学生学号
intstu_sex;//学生性别0=man1=woman
charstu_major[20];//学生专业和班级(电子0606)
}mystu,*pmystu;
//学生个人信息
typedefstruct_stuinfo
{
boolflag;//flag=0表该生作废
intstu_sysid;//学生id号
//系统将为每个学生产生唯一的ID号
mystustu_privacy;//学生个人信息
longstu_seek;//在文件中的地址
intstu_markcount;//已有的成绩数
doublestu_avemark;//学生加权平均分
submarkstu_mark[MAXSUBCOUNT];//学生成绩数组
}stuinfo,*pstuinfo;
//学生信息(包括个人信息和系统信息)
typedefstruct_subinfo
{
boolflag;//flag=0表该块无效
intsub_id;//科目的id号
intsub_term;//科目开课的学期
doublesub_rate;//科目所占的学分
charsub_name[20];//科目名称
}subinfo,*psubinfo;
//科目信息
typedefstruct_fileinfo
{
intstucount;//已注册的学生人数
intcountmax;//最大学生数,用于产生id
intspacecount;//文件冗余块数
longseek[MAXSPACECOUNT];//文件冗余块在文件中的地址
intsubcount;//已注册的科目的个数
subinfosub[MAXSUBCOUNT];//科目信息数组
}fileinfo,*pfileinfo;
//学生信息文件头
typedefstruct_link
{
doublemark;
longstuseek;
struct_link*next;
}link,*plink;
//该结构体用于产生链表
//链表用于对成绩排序之用
核心功能函数:
//本函数设置系统错误,并终止程序
voidseterr(char*err)
{
memset((void*)myerr,0,errnosize);
intn=strlen(err);
if(n>errnosize-1)
n=errnosize;
memcpy(myerr,err,n);
printf("\n\n%s\n\n",err);
exit(0);
}
/*本函数用于清理所有全局变量
包括文件指针和全局结构体指针*/
voidfreeparam()
{
if(fp)fclose(fp);fp=NULL;
if(myfileinfo)free(myfileinfo);
myfileinfo=NULL;
if(mystuinfo)free(mystuinfo);
mystuinfo=NULL;
}
//本函数用于对文件进行操作,将常用的文件操作集于一身
voidfcntl(longseek,intcntlmode,void*pdata,intsize)
{
if(!
fp)fp=fopen(FILEPATH,"rb+");
if(!
fp)initfile();
rewind(fp);
fseek(fp,seek,SEEK_SET);
if(!
pdata)return;
if(!
size)seterr("fcntl:
parameternotmatched");
switch(cntlmode)
{
caseREAD:
fread(pdata,size,1,fp);
break;
caseWRITE:
fwrite(pdata,size,1,fp);
break;
default:
seterr("fcntl:
cntlmodeinvalid");
}
}
//初始化数据库
voidinitfile()
{
if(!
fp)fp=fopen(FILEPATH,"wb+");
if(!
myfileinfo)
myfileinfo=NEW(fileinfo);
memset(myfileinfo,0,FILEINFOSIZE);
myfileinfo->seek[0]=DATASEEK;
inti=0;
for(;i myfileinfo->sub[i].sub_id=i+1; fcntl(0,WRITE,myfileinfo,FILEINFOSIZE); } //添加学生的核心函数 voidaddstu(pmystunewstuinfo) { if(! newstuinfo) seterr("addstu: newstuinfonull"); if(search(newstuinfo->stu_schid,SEARCH_SCHID)) seterr("addstu: databaseschidcollision"); if(! myfileinfo) { myfileinfo=NEW(fileinfo); fcntl(0,READ,myfileinfo,FILEINFOSIZE); } intspacecount=myfileinfo->spacecount; if(spacecount>=MAXSPACECOUNT) seterr("addstu: parameterinvalid"); longseek=myfileinfo->seek[spacecount]; if(spacecount) { myfileinfo->seek[spacecount]=0; myfileinfo->spacecount--; } elsemyfileinfo->seek[spacecount]+=DATATRANS; if(! mystuinfo)mystuinfo=NEW(stuinfo); memset(mystuinfo,0,STUINFOSIZE); memcpy(&(mystuinfo->stu_privacy),newstuinfo,MYSTUSIZE); mystuinfo->stu_seek=seek; mystuinfo->flag=1;inti; mystuinfo->stu_sysid=myfileinfo->countmax+1; for(i=0;i mystuinfo->stu_mark[i].sub_id=i+1; fcntl(seek,WRITE,mystuinfo,STUINFOSIZE); myfileinfo->stucount++; myfileinfo->countmax++; fcntl(0,WRITE,myfileinfo,FILEINFOSIZE); } //删除学生的核心函数 voiddelstu(longdelstuseek) { if(! delstuseek)seterr("delstu: parameterzero"); if(! myfileinfo) { myfileinfo=NEW(fileinfo); fcntl(0,READ,myfileinfo,FILEINFOSIZE); } if(! mystuinfo)mystuinfo=NEW(stuinfo); memset(mystuinfo,0,STUINFOSIZE); fcntl(delstuseek,READ,mystuinfo,STUINFOSIZE); if(! mystuinfo->flag)seterr("delstu: parameterinvalid"); mystuinfo->flag=0; fcntl(delstuseek,WRITE,mystuinfo,STUINFOSIZE); myfileinfo->stucount--; myfileinfo->spacecount++; intcount=myfileinfo->spacecount; if(count myfileinfo->seek[count]=delstuseek; elsemyfileinfo->spacecount--; fcntl(0,WRITE,myfileinfo,FILEINFOSIZE); } //编辑一个已存在学生的核心函数 voideditstu(longeditstuseek,pmystutempstu) { if(! tempstu)seterr("editstu: parameternull"); if(! mystuinfo)mystuinfo=NEW(stuinfo); memset(mystuinfo,0,STUINFOSIZE); fcntl(editstuseek,READ,mystuinfo,STUINFOSIZE); if(! mystuinfo->flag) seterr("editstu: editstuinvalid"); plinklinkhead=search(tempstu->stu_schid,SEARCH_SCHID); if(linkhead&&linkhead->data-editstuseek) seterr("editstu: databaseschidcollision"); memcpy(&mystuinfo->stu_privacy,tempstu,MYSTUSIZE); fcntl(editstuseek,WRITE,mystuinfo,STUINFOSIZE); } //添加新的学科的核心函数 voidaddsub(psubinfonewsub) { if(! newsub)seterr("addsub: parameternull"); if(newsub->sub_term<1||newsub->sub_term>8) seterr("addsub: parameterinvalid"); if(newsub->sub_rate<0.5||newsub->sub_rate>6) seterr("addsub: parameterinvalid"); if(search(newsub->sub_name,SEARCH_SUB)) seterr("addsub: databasesubcollision"); if(! myfileinfo) { myfileinfo=NEW(fileinfo); fcntl(0,READ,myfileinfo,FILEINFOSIZE); } intsubcount=myfileinfo->subcount; if(subcount>=MAXSUBCOUNT) seterr("addsub: subjectfull"); psubinfopsubtemp=myfileinfo->sub; newsub->flag=1;inti; for(i=0;i if(! psubtemp->flag) { newsub->sub_id=psubtemp->sub_id; memcpy(psubtemp,newsub,SUBINFOSIZE); break; } if(i>=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 验收 报告