安徽工业大学计算机学院程序设计综合实习报告题目:现代教学管理系统姓名:刘忻学号:8学院:计算机学院班级:软件123班指导老师:王森玉完成日期:2013/5/22一、问题定义:错误!未定义书签。
二、可行性研究:错误!未定义书签。
I、项目的由来:错误!未定义书签。
II、可选方案:错误!未定义书签。
III、可行性:错误!未定义书签。
1、技术可行性:错误!未定义书签。
2、经济可行性:错误!未定义书签。
3、操作可行性:错误!未定义书签。
4、法律可行性:错误!未定义书签。
IV、结论:错误!未定义书签。
三、需求规格说明错误!未定义书签。
I、目标:错误!未定义书签。
II、数据需求:错误!未定义书签。
1、数据量:错误!未定义书签。
2、数据定义和结构错误!未定义书签。
III、功能需求:错误!未定义书签。
四、总体设计:错误!未定义书签。
I、软件的结构(HIPO图):错误!未定义书签。
五、各模块详细设计错误!未定义书签。
I、编译预处理模块错误!未定义书签。
II、主函数模块错误!未定义书签。
III、browse()函数模块错误!未定义书签。
IV、insert()函数模块错误!未定义书签。
V、deletel()函数模块错误!未定义书签。
VI、scorein()函数模块错误!未定义书签。
VII、c hange()函数模块错误!未定义书签。
VIII、load()函数模块错误!未定义书签。
IX、save()函数模块错误!未定义书签。
X、mima()函数模块错误!未定义书签。
六、程序源代码错误!未定义书签。
七、程序测试错误!未定义书签。
I、测试抓图:错误!未定义书签。
II、测试内容:错误!未定义书签。
八、总结错误!未定义书签。
问题定义:现代化的校园对学生进行考核的主要方式是通过考试,而传统的发布成绩方式存在着不同的问题,通过计算机网络可对这些问题进行解决,包括登陆时选择登陆身份,并给予不同权限对成绩系统进行访问,以达到教师可修改,可查询,可记录;学生可查询的目的。
可行性研究:项目的由来:某高校教师需要对学生的成绩进行管理,包括学生信息的录入,学生成绩的录入,成绩的修改以及学生的成绩查询并保存。
学生需要对成绩进行查询。
可选方案:可选用人工进行学生的基本信息的管理,进行平时成绩,期末成绩以及总评成绩的计算,再人工将成绩发放到学生的手中。
可选用直接从文件进行成绩的导入,直接得到学生的基本信息及考试成绩、总评成绩,或者通过人手工录入学生的基本信息及考试成绩、总评成绩。
学生也可对其进行查找。
可行性:技术可行性:学校每一门学科的考试人数都很多,若每场考试的成绩都需要老师人工计算并发布成绩,任务量大且出错率高。
使用计算机自动计算学生考试成绩的方式大大降低了出错率,而且使用计算机省时省力,方便进行成绩的管理及查询。
经济可行性:利用计算机技术,开发学生成绩管理系统,可以重复使用,对学生的管理很有用,有必要开发。
操作可行性:操作计算机简单易行,并且不需要花费太多的人力。
法律可行性:开发学生成绩管理系统有利于学校对学生的管理,不违反法律及相关法规。
结论:面对高校学生成绩管理的巨大工作量,采用计算机的管理是极其必要的,若采用方案2的方法不单单可以减少很多的人力使用,使教师的工作量得到大量减少,而且出现错误的机率更低,更能够直接对学生的成绩进行管理,方便教师和学生的成绩的查询。
需求规格说明目标:数据需求:数据量:教师的登陆账户及密码,学生学号,姓名,平时成绩,期末成绩,总评成绩。
数据定义和结构○1:教师的登陆用= teacher ,密码= 0000;○2:学号= 学生在校自动分配的学号;○3平时成绩= 教师给学生所打的平时分数;○4期末成绩= 学生期末考试的成绩;○5总评成绩= 平时成绩×平时成绩所占的比例+ 期末成绩×期末成绩所占的比例;功能需求:○1性能:能快速响应,界面颜色多元化,清晰,数据对应整齐。
在使用过程中容易操作,错误操作的次数少。
○2功能:(IPO)总体设计:软件的结构(HIPO图):各模块详细设计编译预处理模块主函数模块browse()函数模块insert()函数模块deletel()函数模块scorein()函数模块change()函数模块load()函数模块save()函数模块mima()函数模块程序源代码#include<>#include<>#include<>#include<>#include<>typedef struct st{char num[10],name[9],bclass[11]; ....!");getchar();}}if(choice1 == 2) ....!");getchar();}}if(choice1 == 3)printf("Goodbay!");exit(0);}师入口\n2.学生入口\n3.退出系统\n请选择:");scanf("%d", &choice);fflush(stdin);return choice;}char menu1() 览成绩情况\n");printf(" 2.插入成绩学生\n");printf(" 3.查询成绩学生\n");printf(" 4.删除学生记录\n");printf(" 5.学生成绩录入\n");printf(" 6.修改学生记录\n");printf(" 7.将文件中成绩情况导入到链表\n");printf(" 8.将链表中成绩情况导出到文件\n");printf(" 9.系统初始化\n");printf(" 0.返回上一级\n");printf("\n\n 请选择。
\n\n\n\n");c=getchar();getchar();return c;}char menu2() 览成绩情况\n");printf(" 2.查询学生成绩\n");printf(" 3.返回上一级\n");printf("\n\n 请选择。
\n\n\n\n");c=getchar();getchar();return c;}void browse(stud*head){姓名查找0.按学号查找\n");scanf("%d",&xz);getchar();if(xz){printf("请输入学生姓名:\n");gets(xm); 学号删除 2.按姓名删除 3.按序号删除\n");scanf("%d",&xz);switch(xz){case 1:printf("请输入学生学号:\n");getchar();gets(xh); 改学号\n");printf("2.修改姓名\n");printf("3.修改班级\n");printf("4.修改平时成绩\n");printf("5.修改期末成绩\n");printf("0.不修改\n");scanf("%d",&xz);getchar();switch(xz){case 1:printf("请重新输入学号:");gets(p->num);break;case 2:printf("请重新输入姓名:");gets(p->name);break;case 3:printf("请重新输入班级:");gets(p->bclass);break;case 4:x=p->score1/p->score;y=1-x; //计算平时和期末在总评成绩中所占比例printf("请重新输入平时成绩:");p->score=x*p->score1+y*p->score2; //重新计算总评成绩break;}printf("%2d%10s %8s %10s",i,p->num,p->name,p->bclass);printf("% % %",p->score1,p->score2,p->score);}//****************************************stud*load() //从文件中将成绩情况导入到链表{FILE*fp;char fn[12];stud*head,*p,*q;puts("从哪个文件中将成绩情况导入:");gets(fn);if((fp=fopen(fn,"rb"))==NULL){printf("can't open file");exit(0);}q=head=(stud*)malloc(sizeof(stud));q->next=NULL;while(! feof(fp)){p=(stud*)malloc(sizeof(stud));if(fread(p,sizeof(stud),1,fp)==1){p->next=q->next;q->next=p;q=p;}}fclose(fp);return head;}//********************************void save(stud*head)//将链表中成绩情况保存到文件{FILE*fp;char fn[12];stud*p;puts("将成绩情况导出到哪个文件中:");gets(fn);p=head->next;if((fp=fopen(fn,"wb"))==NULL){printf("can't open file");exit(0);}while(p!=NULL){if(fwrite(p,sizeof(stud),1,fp)!=1){printf("file write error!\n");break;}p=p->next;}fclose(fp);}void mima(){//密码函数register int i,n;char name[8] = "teacher", password[5] = "0000"; //设定初始密码为teacher 密码是0000 char name1[21], password1[21];int flag1, flag2;system("cls");printf("********************************************************\n");printf("*******************欢迎进入登录系统*********************\n");printf("********************************************************\n");for(n = 0; n != 5;){printf("请输入用户名:\n");gets(name1);flag1 = strcmp(name1,name);printf("请输入密码:\n");for(i = 0; i < 20;){*(password1 + i) = getch();if(*(password1 + i) == '\b'){if(i>0){i--;printf("\b");printf(" \b");}continue ;}if(*(password1 + i) == '\r')break;i++;printf("*"); //输出* 号}*(password1 + i) = '\0';flag2 = strcmp(password,password1);if(flag1 == 0&&flag2 == 0){printf("\n登录成功!");break;}else{n++;printf("\n用户名或密码错误!你还有%d次机会\n", 5-n);}if(n == 5){printf("您被强制退出\n"); //若输入错误5次,被强制退出exit(1);}}}程序测试测试抓图:测试内容:总结 项目评价:等价类划分测试数据用户名和密码合理等价类 不合理等价类信息输入正确信息输入错误用户名 teacher 密码 0000用户名 teacher 密码 1234菜单选项1a文件路径e:\e:\\abc预期结果运行成功运行失败本项目主要对学生的考试成绩进行了简单的管理,能够很好的运用于高等学校的管理成绩中。