软件验收报告_第1页
软件验收报告_第2页
软件验收报告_第3页
软件验收报告_第4页
软件验收报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、学生管理系统软件验收报告目录第一章项目概述31.1项目背景41.2相关文档413参考资料41.4部分系统截图51.5系统结构图6第一章验收定义72. 1验收策略72. 2验收依据72. 3验收环境72. 4验收标准72. 4.1项目验收原则72. 4. 2验收流程82. 4. 3系统功能标准82. 5验收范围92. 6验收人员9第三章项目验收内容93.1实施工作验收93. 2软件平台验收单103. 3功能模块验收单103. 4项目文档验收单103. 5运行结果验收11第四章验收结论11第五章交付物淸单11文档提交淸单11源码提交淸单11彳+ 28程序流程图2828第一章项目概述学生信息管理系统

2、(Student Information Management System),以下简 称SIMS,是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的 管理信息系统(Hdndgement Information System)o它是一个教育单位不可缺少 的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提 供充足的信息和快捷的查询手段。能有效的帮助学校和老师掌握学生的悄况,为 学生提供成绩跟课程方面的查询。在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:效率 底,保密性差,时间一长将产生大量的文件和数据,更不便于查找,更新,维护 等。诸如这些惜况,令学校

3、管理者对学生的信息管理带来了很大困难,严重影响 了教育工作者的工作效率。随着科学技术的不断提高,计算机科学日渐成熟,使 用日趋成熟的讣算机技术来代替传统的人丄模式,来实现学生信息的现代化管 理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越 来越重要的作用。作为计算机应用的一部分,使用计算机对学生信息进行管理, 具有着手工管理所无法比拟的优点。这些优点能够极大地提高学生信息管理的效 率,也是学校的科学化、正规化管理的重要条件。用计算机制作的学校信息管理 系统还可以通过功能强大的互联网及时的向学生的家长传递该生在校的最新成 绩,有助于学校与家长的信息互动,为更好地把握学校的教

4、育方针一定的促进作 用。因此,开发这样一套管理软件成为很有必要的事情。11项目背景随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技 术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生 存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适 应的管理信息系统。U前信息处理技术的飞速发展,基于计算机网络的信息处理已成为人们日 常工作,学习和生活必备系统。在Internet飞速发展的今天,互联网已成为人们 快速获取,发布和传递信息的重要渠道,它已成为社会生活的一部分。学生信息处 理的电脑化、网络化,是实现学校管理现代化和信息化的重要内容,也是方便

5、用户 快捷查询相关充足信息的重要工具。与传统学生信息处理模式相比,基于网络的 学生管理系统具有无可比拟的优越性。因此开发一套有关学校的信息管理系统不仅能大大提高工作效率而且还能 给师生的工作学习带来极大的便利。1. 2相关文档1学生管理系统软件测试方案2学生管理系统软件测试用例1. 3参考资料软件测试从入门到精通软测之魂:核心测试设计精解软件测试与测试技术1. 4部分系统截图14 7请作岀选择曲 仲曾录:请墻入学号"2位数字添加成功?按任意键返回主菜单生码序 学 索改出 書退 3 6 9生数目 一学分科 d3flTO.11TO 2 5 8生数目 学分科 D-IsD 添显添请作岀选择:

6、8数据库中有以下科目:1 马克思2 电路3.14.z5.固电6.量子?.复变8.物理9.微积分個.线代丄丄体肓丄2.英语丄3 语文"C语言丄5.近代史16.信号切.思修18.概率论19.单片机20.数据库21工程制图22 电工实习23 军事理论24 毛概1.5系统结构图学生管理系统学生相关分数相关学科相关密码相关退出系统第二章验收定义2. 1验收策略由开发方提供被验收内容、验收文档,山监理公司与用户进行评审,在评审 无误的情况下,确认通过验收。2. 2验收依据软件测试验收准则2. 3验收环境学生管理系统软件实际运行的生产环境为验收环境。硬件平台计算机软件平台Window 操作系统:w

7、indow xp、window?x window82. 4验收标准2. 4.1项目验收原则1、审查提供验收的各类文档的正确性、完整性和统一性,审查文档是否齐全、 合理;2、审查项U功能是否达到了合同规定的要求;3、审查项LI有关服务指标是否达到了合同的要求;4、审查项目投资以及实施进度的情况;对项U的技术水平做出评价,并得出项LI的验收结论。2. 4. 2验收流程本项口的验收釆取项H验收流程的方式进行验收。具体流程如下图所示。项目验收流程2. 4. 3系统功能标准严重程度描述A学生信息管理系统由于出现问题不能继续运转(崩溃) 学生信息管理系统的数据出现错误。B某项业务无法进行。学生信息管理系统

8、产生数据错误。C学生信息管理系统中某一操作不能继续运转或错误,但不 影响业务的进行。(有替代办法)学生信息管理系统打印的凭证或流水不符合需求所提出的 标准。D其他学生信息管理系统在某种状态下产生的错误,不影响 正常功能。如果各模块验收测试结果如下表所述则视为验收合格,否则将进行修改,以进行再次验收评审。严重程度关系发生个数A0B< =102. 5验收范围用户以及监理方进行验收确认。验收确认包括以下两方面确认内容:1. 参照验收标准确认合同所涉及的功能以及项口组的实施工作是否完成;2. 抽取客户端进行测试,确定系统能够稳定运行。2. 6验收人员单位人员职责/任务联系方式/Email备注哈师

9、大学生张紫娜组长第三章项目验收内容3.1实施工作验收工作阶段工作内容工作是否完成需求调研通过与用户的沟通,根据项U实际情 况编写提交需求说明书、概要设 计、详细设计。完成未完成系统开发根据概要设讣内容,完成详细 设计并根据详细设计开发系统 和测试。每周提交项口进度及情况报 告、测试报告。完成未完成系统安装安装产品,对系统进行部署。完成未完成用户培训编写用户使用手册,对用户进行使用 培训。完成未完成系统运行跟踪监控系统运行。对使用中发现的 问题进行记录和评估,在不影响系统 结构的情况下对发现的问题进行修 正。完成未完成3. 2软件平台验收单验收人:张紫娜验收时间:序号软件类型软件名称验收结果备注

10、1系统软件学生管理系统完成3. 3功能模块验收单序号功能模块验收内容合同要求验收结果1登录验证能否正常登陆必须实现合格2密码模块能否修改密码必须实现合格3学生模块正常实现添加修改功 能可以有差错合格4课程模块正常实现添加修改功 能必须实现合格5成绩模块正常实现添加修改功 能必须实现合格6退出模块正常退出系统必须实现合格34项目文档验收单序号文档名称用途验收结果备注1软件需求分析分析软件的需求,为后续的工作合格2软件测试用例对以实现的软件进行测试合格3. 5运行结果验收系统运行内容是否符合要求a.软件登录符合b.软件测试符合C.软件查询符合d.软件修改符合e 软件退出符合第四章验收结论经过严格的

11、测试本软件达到要求标准,符合验收要求。第五章交付物清单文档提交清单1学生管理系统软件测试方案2学生管理系统软件测试用例源码提交清单源程序清单(仅给出核心代码部分)typedef char bool;#defineFILEPATH,?c: stuinfo. dat?z#defineINFOPATH,?c: test txt"#defineMAXSPACECOUNT10/系统所记录的最大冗余块数#defineMAXSUBCOUNT20/系统所允许存储的最多科目数#defineRANDSTUCOUNT100/系统将自动产生的学生个数#defineRANDSUBCOUNT20/系统将自动产生

12、的科目个数#defineBUFSIZE20/字符缓冲区大小#defineTRUE1#defineFALSE0#defineREAD0x81#defineWRITE0x82#defineSEARCH.SCHID0x83/通过学生的学号进行搜索#defineSEARCH.NAME0x85/通过学生的姓爼进行搜索#defineSEARCH.SUB0x86/通过学科的名称进行搜索#defineSHOW.PRIV0x87显示单个学生的个人信息#defineSHOW_PERMARK0x89/显示单个学生的个人成绩#defineSHOW.ALLMARK0x90/显示所有学生的某科成绩#defineSORT.

13、DECLINE0x92以降序排列#defineSORT.INCLINE0x93/以升序排列#defineALPHAWORD0x94/以字对构成的字符串(用于随机产生学Sdefine SHOWMAX6/屏幕最大显示的科目数生的姓名#defineNUMBERWORD0x95/以数字构成的字符串(用于随机产生学号#defineADDSUB0x96/科目编辑模式为添加#defineEDITSUB0x97/科目编辑模式为修改#defineBIGNUMBEROxOffffff/系统延迟采用的循环中的大数#defineLONGSIZEsizeof(long)#defineINTSIZEsizeof(int)

14、#defineLINKSIZEsizeof(link)#defineSTUINFOSIZEsizeof(stuinfo)#defineSUBINFOSIZEsizeof (subinfo)#defineTCHINFOSIZEsizeof(tchinfo)define SUBMARKSIZEsizeof (submark)define FILEINFOSIZEsizeof(fileinfo)define MYSTUSIZEsizeof(mystu)define DATASEEK(FILEINFOSIZE+LONGSIZE)Sdefine DATATRANS(STUINFOSIZE+LONGSIZ

15、E)Sdefine SETERR(S)printf(S);return FALSE;/显示出错信息并返回define NEW (I)(I*) malloc (sizeof (I)/开辟新的内存空间typedef struct _submarkinfoboolflag;/flag=0表该块无效intsub_id;/科目的id号doublesubmark;/该科目的成绩submark, *psubmark;/科目成绩信息typedef struct _stucharstu_nameL20;学生姓名charstu_schid20;学生学号intstu_sex;/学生性别 0二man 1 二woman

16、charstu_major20;/学生专业和班级(电子0606)mystu, *=pmystu;/学生个人信息typedef struct _stuinfo/flag=0表该生作废/学生id号boolflag;intstu_sysid;/学生个人信息/在文件中的地址/已有的成绩数/学生加权平均分/系统将为每个学生产生唯一的ID号mystustu_privacy;longstu_seek;intstu_markcount;double stu_avemark;submark stu_mark MAXSUBCOUNT;/学生成绩数组 stuinfo, *pstuinfo;/学生信息(包括个人信息和

17、系统信息)typedef struct _subinfoboolflag;/flag二0表该块无效intsub_id;/科目的id号intsub_term;/科目开课的学期doublesub_rate;/科目所占的学分charsub_name20;/科目名称subinfo, *psubinfo;/科目信息typedef struct _fileinfointstucount;/已注册的学生人数intcountmax;/最大学生数,用于产生idintspacecount;/文件冗余块数longseek MAXSPACECOUNT;/文件冗余块在文件中的地址intsubcount;/已注册的科目的

18、个数subinfosub MAXSUBCOUNT; /科目信息数组Jfileinfo, *pfileinfo;/学生信息文件头typedef struct _linkdouble mark;long stuseek;struct _link* next;link, *plink;/该结构体用于产生链表/链表用于对成绩排序之用核心功能函数:/本函数设置系统错误,并终止程序void seterr (char*err)memset(void*)myerr, 0, errnosize);int n=strlen(err);if(n>errnosizel)n二errnosize;memcpy(my

19、err, err, n);printf (z,nn%snn,z, err);exit(0);/*本函数用于清理所有全局变量包括文件指针和全局结构体指针*/void freeparam()if(fp)fclose(fp);fp二NULL;if(myfileinfo)free(myfileinfo);myfileinfo二NULL;if(mystuinfo)free(mystuinfo);mystuinfo=NULL:/本函数用于对文件进行操作,将常用的文件操作集于一身 void fcntl (long seek,int cntlmode, void *pdata,int size)if(!fp)

20、fp=fopen(FILEPATH, "rb+");if (!fp)initfile ();rewind(fp);fseek(fp, seek, SEEK_SET);if(!pdata)return;if (! size) se terr ("fen tl: parametei? not matched"); switch(cntlmode)case READ:fread(pdata, size, 1, fp);break;case WRITE:fwrite (pdata, size, 1, fp);break;default:set err (,zfc

21、n tl: cntlmode invalid");/初始化数据库void initfile()if(!fp)fp=fopen(FILEPATH, "wb+");if(!myfileinfo) myfileinfo=NEW(fileinfo);memset(myfileinfo, 0, FILEINFOSIZE); myfileinfo->seek0二DATASEEK;int i二0;for(;iMAXSUBCOUNT;i+) myfileinfo->subi sub_id=i+l:fcntl(0, WRITE, myf订einfo, FILEINFOS

22、IZE); )/添加学生的核心函数void addstu(pmystu newstuinfo)if(!newstuinfo)seterr("addstu:newstuinfo null");if(search(newstuinfo-stu_schid, SEARCH_SCHID) set err (z,addstu: database schid collision");if(!myfileinfo)myfileinfo=NEW(fileinfo);fcntl(0, READ, myfileinfo, FILEINFOSIZE);int spacecount=my

23、fileinfo->spacecount;if(spacecount二MAXSPACECOUNT)seterrCaddstu:parameter invalid");long seek二myfileinfo-seekspacecount;if(spacecount)myfileinfo-seekspacecount=0;myfileinfo->spacecount-;else myfileinfo-seekspacecount+二DATATRANS;if(!mystuinfo)mystuinfo=NEW(stuinfo);memset(mystuinfo, 0, STUI

24、NFOSIZE);memcpy(&(mystuinfo-stu_privdcy), newstuinfo, MYSTUSIZE); mystuinfo-stu_seek二seek;mystuinfo>flag=l;int i: mystuinfo->stu_sysid=myfileinfo->countmax+l;for(i二0;i<MAXSUBCOUNT;i+)mystuinfo->stu_marki sub_id二i+1;fcntl(seek, WRITE, mystuinfo, STUINFOSIZE);myfileinfo->stucount

25、+;myfile info-countmax+;fcntl(0, WRITE, myfileinfo, FILEINFOSIZE);/删除学生的核心函数void delstu(long delstuseek)if (! delstuseek) seterr (z,delstu: parameter zero");if(!myfileinfo)myfileinfo=NEW(fileinfo);fcntl(0, READ, myfileinfo, FILEINFOSIZE);if (!mystuinfo)mystuinfo=NEW(stuinfo);memset(mystuinfo, 0

26、, STUINFOSIZE);fcntl(delstuseek, READ, mystuinfo, STUINFOSIZE); if (!mystuinfo->f lag) seteir("delstu:pai?ametei? invalid"); mystuinfo->flagz:0;fcntl(delstuseek, WRITE, mystuinfo, STUINFOSIZE);myfi1e i nfo-> s tuc ount一-;myfileinfo->spacecount+;int count=myfi1e i nfo-> space

27、count;if(count<MAXSPACECOUNT)myfileinfo-seekcount=delstuseek;else myfileinfo->spacecount-;fcntl(0, WRITE, myfileinfo, FILEINFOSIZE);/编辑一个已存在学生的核心函数void editstu(long editstuseek, pmystu tempstu)if (! tempstu) seterr(,zeditstu:parameter null");if (!mystuinfo)mystuinfo=NEW(stuinfo);memset(my

28、stuinfo, 0, STUINFOSIZE);fcntl(editstuseek, READ, mystuinfo, STUINFOSIZE);if(!mystuinfo-flag)set err (,zeditstu: editstu invalid"');plink 1inkhead=search(tempstu-stu_schid, SEARCH_SCHID); if(linkheadft&linkhead-data-editstuseek)seterr (z/editstu:database schid collision'');memcp

29、y (&mystuinfo->stu_p:rivacy, tempstu, MYSTUSIZE); fcntl(editstuseek, WRITE, mystuinfo, STUINFOSIZE);添加新的学科的核心函数 void addsub (psubinfo newsub)if (Jnewsub) seterr ("addsub :pai?ameter null"); if(newsub->sub_term<l newsub-sub_term>8) seterr (,zaddsub:parameter invalid''

30、;);if(newsub->sub_rate0 5 newsub>sub_rate>6) seterr (/zaddsub:parameter invalid");if (search (newsub->sub_name, SEARCH_SUB) seterr (,zaddsub:database sub collision'"):if(!myfileinfo)myfileinfo=NEW(fileinfo);fcntl(0, READ, myfileinfo, FILEINFOSIZE);int subcount二myfileinfo-su

31、bcount;if(subcount>=MAXSUBCOUNT)seterr(/?addsub:subject full");psubinfo psubtemp=myfileinfo-sub; newsub->flag=l;int i;for(i二0;i<MAXSUBCOUNT;i+, psubtemp+)if(!psubtemp>flag)newsub-sub_i d=psubtemp-sub_i d;memcpy(psubtemp, newsub, SUBINFOSIZE); break;if(i>二MAXSUBCOUNT)seterr(/zadds

32、ub:subject all in use"); myfileinfo-subcount+;fcntl(0, WRITE, myfileinfo, FILEINFOSIZE); /删除一个已经存在学科的核心函数void delsub(int subid)if(subid<l|subid>MAXSUBCOUNT)seterr(z,delsub:subid invalid");if(!myfileinfo)myfileinfo=NEW(fileinfo);fcntl(0, READ, myfileinfo, FILEINFOSIZE);if(myf ileinfo-

33、>subcount<=0)seterr(z,delsub:subcount zero");psubinfo subtempryf ileinfo-sub+subidT ;if(!subtemp->flag)seteir("delsub:flag invalid");subtemp-flag二0;myfileinfo->subcount-;fcntl(0, WRITE, myfileinfo, FILEINFOSIZE);if (!mystuinfo) mystuinfo=NEW(stuinfo);long seek二DATASEEK;int

34、 i:psubmark marktemp二NULL; for(i=0;i<myfileinfo-stucount;i+, seek+二DATATRANS) fcntl(seek, READ, mystuinfo, STUINFOSIZE);if (!mystuinfo->flag)i一一;continue;marktemp=mystuinfo-st u_mark+subid-1; if(marktemp->flag)memset(marktemp, 0, SUBMARKSIZE);mystuinfo>stu_markcount-;else continue;fcntl(

35、seek, WRITE, mystuinfo, STUINFOSIZE); makeavemark(seek);编辑一个已经存在的学科的核心函数void editsub (psubinfo newsub)if(!newsub)seterr(/?editsub:newsub null");if(!newsub-flag)seterr (,?editsub:newsub invalid'"); int subid=newsub>sub_id: if(subid<l|subid>MAXSUBCOUNT)seterr ("ed it sub: s

36、ub id invalid'"); int term二newsub-sub_term;if(term<lI Iterm>8)seterr (z,ed it sub: subterm invalid"'); double rate=newsub->sub_rate: if(rate0 5: rate>6)seterr (z,ed it sub: subrate invalid"');int size=strlen(newsub->sub_name);if(size>=20)newsub-sub_name19

37、二0;if(!myfileinfo)myfileinfo=NEW(fileinfo);fcntl(0, READ, myfileinfo, FILEINFOSIZE);plink linkhead=search(newsub->sub_name, SEARCH_SUB); if(linkhead&&linkhead->next)seterr ("ed it sub: search invalid"');if(linkhead&&1i nkhead-data-sub id)seterr (,?editsub:database

38、 sub collision"'); newsub->flag=l;psubinfo subtempryf ileinfo-sub+subidT ;memcpy( sub temp, newsub, SUBINFOSIZE);fcntl(0, WRITE, myfileinfo, FILEINFOSIZE);if (!mystuinfo)mystuinfo=NEW(stuinfo);int count二myfileinfo-stucount;int i:long seek二DATASEEK;for(i二0;i<count;i+, seek+=DATATRANS)f

39、cntl(seek, READ, mystuinfo, STUINFOSIZE);if (!mystuinfo->flag)i-;continue;makeavemark(seek);编辑某学生某科LI的核心函数void editmark(psubmark newmark, long stuseek)if(!newmark I!stuseek)set err (z/addmark: parameter null");int sub i d=newmark>sub_i d:if(subid<-l|subid>MAXSUBCOUNT|!subid)seterr (

40、z,ed itm ark: sub id invalid'");doub1e mark=newmark->sub_mark;if(mark<0 mark>100)set err (/z edit mark: submark invalid");if (!mystuinfo)mystuinfo=NEW(stuinfo);memset(mystuinfo, 0, STUINFOSIZE);fcntl(stuseek, READ, mystuinfo, STUINFOSIZE);if(!mystuinfo-flag)seterr(editmark:stu

41、dent invalid");psubmark marktemp二mystuinfo-stu_mark+subidT; int flagl=marktemp-flag, flag2=newmark->flag: if(!flagl&&!flag2)set err (z,editmark: markflag invalid");memcpy(marktemp, newmark, SUBMARKSIZE);if(!flagl&&flag2)mystuinfo-stu_markcount+;if(flagl&&!flag2)m

42、ystuinfo->stu_markcount-; fcntl(stuseek, WRITE, mystuinfo, STUINFOSIZE); makeavemark(stuseek);/计算某学生的加权分数的核心函数void makeavemark(long stuseek)if (! stuseek) seterr (,zmakeavemark: parameter null");if (!mystuinfo)mystuinfo二NEW(stuinfo);memset(mystuinfo, 0, STUINFOSIZE);fcntl(stuseek, READ, myst

43、uinfo, STUINFOSIZE);if (!mystuinfo->flag) seterr (,zmakeavemark:parameter invalid");if(!myfileinfo)myfileinfo=NEW(fileinfo);fcntl(0, READ, myfileinfo, FILEINFOSIZE);int subcount二myfileinfo-subcount;if(!subcount i !mystuinfo->stu_mdrkcount)mystuinf o->stu_avemark:z0;fcntl(mystuinfo->stu_seek, WRITE, mystuinfo, STUINFOSIZE); return;psubinfo subtemp=myfileinfo-sub;psubmark marktemp=mystuinfo->stu_mark;int i;double marksum二0 0, rate, ratesum二0 0;for(i二0;i<subcount;i+, subtemp+, marktemp+)if (!subtemp->flag)i-;continue;if(!marktemp->flag)

温馨提示

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

评论

0/150

提交评论