1、I、项目的由来:某高校教师需要对学生的成绩进行管理,包括学生信息的录入,学生成绩的录入,成绩的修改以及学生的成绩查询并保存。学生需要对成绩进行查询。II、可选方案:一、可选用人工进行学生的基本信息的管理,进行平时成绩,期末成绩以及总评成绩的计算,再人工将成绩发放到学生的手中。二、可选用直接从文件进行成绩的导入,直接得到学生的基本信息及考试成绩、总评成绩,或者通过人手工录入学生的基本信息及考试成绩、总评成绩。学生也可对其进行查找。III、可行性:1、技术可行性:学校每一门学科的考试人数都很多,若每场考试的成绩都需要老师人工计算并发布成绩,任务量大且出错率高。使用计算机自动计算学生考试成绩的方式大
2、大降低了出错率,而且使用计算机省时省力,方便进行成绩的管理及查询。2、经济可行性:利用计算机技术,开发学生成绩管理系统,可以重复使用,对学生的管理很有用,有必要开发。3、操作可行性:操作计算机简单易行,并且不需要花费太多的人力。4、法律可行性:开发学生成绩管理系统有利于学校对学生的管理,不违反法律及相关法规。IV、结论:面对高校学生成绩管理的巨大工作量,采用计算机的管理是极其必要的,若采用方案2的方法不单单可以减少很多的人力使用,使教师的工作量得到大量减少,而且出现错误的机率更低,更能够直接对学生的成绩进行管理,方便教师和学生的成绩的查询。三、需求规格说明I、目标:II、数据需求:1、数据量:
3、教师的登陆账户及密码,学生学号,姓名,平时成绩,期末成绩,总评成绩。2、数据定义和结构:教师的登陆用 = teacher ,密码 = 0000;学号 = 学生在校自动分配的学号;平时成绩 = 教师给学生所打的平时分数;期末成绩 = 学生期末考试的成绩;总评成绩 = 平时成绩 平时成绩所占的比例 + 期末成绩 期末成绩所占的比例;III、功能需求:性能:能快速响应,界面颜色多元化,清晰,数据对应整齐。在使用过程中容易操作,错误操作的次数少。功能:(IPO)四、总体设计:I、软件的结构(HIPO图):五、各模块详细设计I、编译预处理模块II、主函数模块III、browse()函数模块IV、inse
4、rt()函数模块V、deletel()函数模块VI、scorein()函数模块VII、change()函数模块VIII、load()函数模块IX、save()函数模块X、mima()函数模块六、程序源代码#includetypedef struct st char num10,name9,bclass11; .!); getchar(); if(choice1 = 2) .! if(choice1 = 3) printf(Goodbay! exit(0);师入口n2.学生入口n3.退出系统n请选择: scanf(%d, &choice); fflush(stdin); return choic
5、e;char menu1() 览成绩情况n printf( 2.插入成绩学生n 3.查询成绩学生n 4.删除学生记录n 5.学生成绩录入n 6.修改学生记录n 7.将文件中成绩情况导入到链表n 8.将链表中成绩情况导出到文件n 9.系统初始化n 0.返回上一级nnn 请选择。nnnn c=getchar();getchar(); return c;char menu2() 览成绩情况n 2.查询学生成绩n 3.返回上一级nvoid browse(stud*head) 姓名查找 0.按学号查找n,&xz); getchar(); if(xz) 请输入学生姓名:n gets(xm); 学号删除 2
6、.按姓名删除 3.按序号删除n switch(xz) case 1:printf(请输入学生学号: gets(xh); 改学号n2.修改姓名n3.修改班级n4.修改平时成绩n5.修改期末成绩n0.不修改n请重新输入学号:gets(p-num);break; case 2:请重新输入姓名:name); case 3:请重新输入班级:bclass); case 4:x=p-score1/p-score;y=1-x; /计算平时和期末在总评成绩中所占比例请重新输入平时成绩: p-score=x*p-score1+y*p-score2; /重新计算总评成绩 break;%2d%10s %8s %10s
7、,i,p-num,p-name,p-% % %,p-score1,p-score2,p-score);/*stud*load() /从文件中将成绩情况导入到链表 FILE*fp; char fn12; stud*head,*p,*q; puts(从哪个文件中将成绩情况导入:gets(fn); if(fp=fopen(fn,rb)=NULL)cant open fileexit(0); q=head=(stud*)malloc(sizeof(stud); q-next=NULL; while(! feof(fp) p=(stud*)malloc(sizeof(stud); if(fread(p,
8、sizeof(stud),1,fp)=1)next=q-next;next=p;q=p; fclose(fp); return head;/*void save(stud*head)/将链表中成绩情况保存到文件 stud*p;将成绩情况导出到哪个文件中: p=head-wb while(p!=NULL) if(fwrite(p,sizeof(stud),1,fp)!=1)file write error! p=p-void mima()/密码函数 register int i,n; char name8 = teacher, password5 = 0000; /设定初始密码为teacher
9、密码是0000 char name121, password121; int flag1, flag2; system(cls*n*欢迎进入登录系统*n for(n = 0; n != 5;)请输入用户名: gets(name1); flag1 = strcmp(name1,name);请输入密码: for(i = 0; i 0) i-; printf(b b continue ; r break; i+; printf(* /输出 * 号 *(password1 + i) = 0 flag2 = strcmp(password,password1); if(flag1 = 0&flag2 =
10、 0) printf(n登录成功! break; else n+;n用户名或密码错误!你还有%d次机会n, 5-n); if(n = 5)您被强制退出n /若输入错误5次,被强制退出 exit(1);七、程序测试I、测试抓图:II、测试内容:八、总结I、项目评价:本项目主要对学生的考试成绩进行了简单的管理,能够很好的运用于高等学校的管理成绩中。从项目的内容来讲内容较为简单,项目基本上没有涉及到较复杂的算法运算,仅仅使用链表进行数据的存取,所以采用普通技术工程师即可以完成任务,由测试人员测试并进行分析即可完成使用,质量上也能得到保证,使得高等学校教师能够更好的使用。操作上简单明了,根据提示输入即
11、可,然后进行计算机操作。II、不足之处:项目仅仅能够实现对一门成绩进行管理,不能实现多门成绩的管理。由于知识积累程度的问题,仅仅能够将数据保存于链表及文件中,但是对于大量数据,若内存不够就会造成数据溢出,使用数据库能够有效解决。成绩的上下限制没有,可能有成绩输入错误(超过100或为负数)。III、心得体会通过此次项目中深刻了解到软件的开发是一项工程性质的工作,软件的开发并不是简单的编写代码,而是融入了工程的思想。也让我认识到了代码的编写并不是软件开发过程中最重要的部分,前期的规划则起着至关重要的作用。软件的测试也是极为重要的。在2000左右的时候,通过一个调查,即使是在软件工程最发达的美国,程序中的错误仍然是无法避免的,平均每1000行代码就有处错误,所以软件的测试也在程序的开发中占有极其重要的地位。错误越少,后期交付使用造成的损失也就越少,开发的软件效益就越高。一款好的软件都是通过不断的修改才能得到,细细的修改,软件的开发过程每一个都十分重要。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1