安徽工业大学计算机学院程序设计综合实习报告_第1页
安徽工业大学计算机学院程序设计综合实习报告_第2页
安徽工业大学计算机学院程序设计综合实习报告_第3页
安徽工业大学计算机学院程序设计综合实习报告_第4页
免费预览已结束,剩余25页可下载查看

下载本文档

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

文档简介

1、安徽工业大学计算机学院程序设计综合实习报告题目:现代教学管理系统姓名:刘忻学号: 129074228学院:计算机学院班级: 软件 123 班指导老师:王森玉完成日期: 2013/5/22安徽工业大学计算机学院题目:现代化成绩管理系统课程设计内容简介:高校中对于学生的考核主要通过考试来进行,传统不通过计算机网络发放考试的成绩容易出现发错,漏发等问题,使用计算机来解决这个问题是十分必要的。程序可以在登陆时选择登陆身份,并给予不同权限对成绩系统进行访问,以达到教师可修改,可查询,可记录;学生可查询的目的。设计者名称:刘忻指导教师意见:指导教师签名:软件 123班1安徽工业大学计算机学院一、问题定义:

2、4二、可行性研究:4I、项目的由来:4II 、可选方案:4III 、可行性:41、技术可行性:42、经济可行性:53、操作可行性:54、法律可行性:5IV 、结论:5三、需求规格说明6I、目标:6II 、数据需求:61、数据量:62、数据定义和结构7III 、功能需求:7四、总体设计:8I、软件的结构( HIPO 图):8五、各模块详细设计9I、编译预处理模块9II 、主函数模块10III 、browse()函数模块10IV 、insert() 函数模块11V、deletel ()函数模块11VI 、scorein()函数模块12VII 、change()函数模块12VIII 、load ()

3、函数模块12IX 、save()函数模块13X、mima()函数模块13六、程序源代码14七、程序测试25I、测试抓图:25软件 123班2安徽工业大学计算机学院II 、测试内容:26八、总结27软件 123班3安徽工业大学计算机学院一、问题定义:现代化的校园对学生进行考核的主要方式是通过考试,而传统的发布成绩方式存在着不同的问题,通过计算机网络可对这些问题进行解决,包括登陆时选择登陆身份,并给予不同权限对成绩系统进行访问,以达到教师可修改,可查询,可记录;学生可查询的目的。二、可行性研究:I、项目的由来:某高校教师需要对学生的成绩进行管理,包括学生信息的录入,学生成绩的录入,成绩的修改以及学

4、生的成绩查询并保存。学生需要对成绩进行查询。II、 可选方案:一、可选用人工进行学生的基本信息的管理,进行平时成绩,期末成绩以及总评成绩的计算,再人工将成绩发放到学生的手中。二、可选用直接从文件进行成绩的导入,直接得到学生的基本信息及考试成绩、总评成绩,或者通过人手工录入学生的基本信息及考试成绩、总评成绩。学生也可对其进行查找。III、可行性:1、 技术可行性:学校每一门学科的考试人数都很多,若每场考试的成绩都需要老师人工计算并发布成绩,任务量大且出错率高。使用计算机自动软件 123班4安徽工业大学计算机学院计算学生考试成绩的方式大大降低了出错率,而且使用计算机省时省力,方便进行成绩的管理及查

5、询。2、 经济可行性:利用计算机技术,开发学生成绩管理系统,可以重复使用,对学生的管理很有用,有必要开发。3、 操作可行性:操作计算机简单易行,并且不需要花费太多的人力。4、 法律可行性:开发学生成绩管理系统有利于学校对学生的管理,不违反法律及相关法规。IV、结论:面对高校学生成绩管理的巨大工作量,采用计算机的管理是极其必要的,若采用方案 2 的方法不单单可以减少很多的人力使用,使教师的工作量得到大量减少,而且出现错误的机率更低,更能够直接对学生的成绩进行管理,方便教师和学生的成绩的查询。软件 123班5安徽工业大学计算机学院三、需求规格说明I、目标:学生登陆身份验证登陆身份选择教师学生系统学

6、生学号,姓名,编号教师输入学期末成绩系统对生请的求信进息行。处理或从文件导平时成绩入成绩。平时、期末成绩比例对储存在链教师表中的数据进行修改教师可以选择成绩的保存路径并将数据记录在链表中系统对数据进行记录以及处理,可以对储存在链表中的成绩进行访问查询II、 数据需求:1、 数据量:教师的登陆账户及密码,学生学号,姓名,平时成绩,期末成绩,总评成绩。软件 123班6安徽工业大学计算机学院2、 数据定义和结构1:教师的登陆用= teacher ,密码= 0000;2 :学号 = 学生在校自动分配的学号;3 平时成绩 = 教师给学生所打的平时分数;4 期末成绩 = 学生期末考试的成绩;5 平时成绩所

7、占的比例+ 期末成绩 期末成绩所占的比 总评成绩 = 平时成绩例;III、功能需求:1 性能:能快速响应,界面颜色多元化,清晰,数据对应整齐。在使用过程中容易操作,错误操作的次数少。2 功能:( IPO)输入处理输出根据身份信息权限记录登录给予相应的权身份限学生的基本信息和总评成绩输入相应的操将成绩输入链作,包括学生表中,并自动响应要求信息、成绩计算成绩软件 123班7安徽工业大学计算机学院四、总体设计:I、软件的结构( HIPO 图):现代化学生成绩管理系统教师入口学生入口输入系统处理输出将链将链表中表中的数的数据显据显示在示在绩屏幕屏幕上上输入学生的基本信息,成绩系统自动计算学生的总评成绩

8、将数据保存在链表中,可以修改从文件中导入学生的基本信息,成软件 123班8安徽工业大学计算机学院五、各模块详细设计I、编译预处理模块使用的函数库:stdio.h、 windows.h 、 string.h、conio.h学生数据结构体的声明:typedef struct studentstu包括学号num,姓名 name,班级 bclass,平时分数score1,期末成绩score2,总评成绩score,指向下一结构体的next 指针选择学生或教师函数声明int xuanze()教师选单函数声明char menu1()学生选单函数声明char menu2()密码函数函数声明void mima(

9、)导入函数声明stud*load()查询函数声明stud*search(stud*,int*)导出函数声明void save(stud*)成绩录入函数声明void scorein(stud*)插入函数声明void insert(stud*)删除函数声明void deletel(stud*)修改函数声明void change(stud*)浏览函数声明void browse(stud*)软件 123班9安徽工业大学计算机学院II、 主函数模块定义字符型表头选择量 choice1,choice, choice1 用于登录身份选择, choice 用于表头选择 ; 定义字符型变量 c 用于接收 Y 或

10、 N 的选择定义 stu 型指针变量head 与 p,用于数据链表的连接跳转 loop 部分Choice1 的值12调用函数mima()调用函数 char menu2()调用函数menu1()调用函数menu2()Choice 的值Choice 的值值值值值值值值值值值值值 3:将1234567890值 1:2:printf链表指针调用函数printfgotobrowse()链表中的重置数据:调用:函调数用函数:调用:函调数用:函调数用:函调数用:函调数用函数跳转insertdeletelloadsavechange:将链表指针重置browse()scorein()()链表中的数据()()()

11、()III、browse ()函数模块i= 0, p = head - nextwhile(p != NULL)输出链表中全部的学生信息及成绩p = p -next软件 123 班10安徽工业大学计算机学院IV、insert() 函数模块an,xh10,xm9,bc11,*p,*qwhile(an = Y)p = head,输入得到学生的学号,姓名,班级。strcmp(xh,0000)while(p-next!=NULL)&(strcmp(xh,p-next-num)=0)p=p-nextstrcpy(q-num,xh)strcpy(q-name,xm)strcpy(q-bclass,bc)q

12、-next=p-next;p-next=q继续输入,判断输入是否为YV、deletel ()函数模块i,xz,n, c,xm9,xh10,st*p,*qp = headif(p-next!=NULL)TF输入 xzswitch(xz)值 1:值 2值 3其他输入学号输入姓名输入序号输出错误while(p-while(p-while(p-next!=NULLnext!=NULLnext!=NULL&strcmp(xh,&strcmp(xm&inext-,p-next-num)!=0)name)!=0)p=p-nextp=p-nextp=p-nextq= p- nextTif(q = NULL)F

13、输出未找到数据确认是否删除数据,p-next=q-next , free(q)软件 123 班11安徽工业大学计算机学院VI、scorein ()函数模块i=0psqm*pp=head-next输入平时成绩所占的百分比qm=100-pswhile(p!=NULL)输入平时成绩,期末成绩计算总评成绩:p-score=p-score1*ps/100+p-score2*qm/100p=p-nextVII、 change ()函数模块i=0xzxy*pwhile(!p)p=search(head,&i)Tif(p)F输出找到的数据输出未找到VIII、 load ()函数模块*fpfn12*head,*

14、p,*q从文件中进行导入if(fp=fopen(fn,rb)=NULL)T输出打开文件时发生错误并退出Fwhile(! feof(fp)if(fread(p,sizeof(stud),1,fp)=1)FTp-next=q-nextq-next=p;q=p软件 123 班12安徽工业大学计算机学院IX、save ()函数模块*fpfn12*p从文件中进行导入if(fp=fopen(fn,wb)=NULL)TF输出打开文件时发生错误并退出while(p!=NULL)if(fwrite(p,sizeof(stud),1,fp)!=1)T输出文件打开错误Fp=p-nextX、mima ()函数模块i

15、nname8 name121password121flag1 flag2,输入用户名,密码for(i = 0; i 0)FTi-输出“退格”输出“空格退格”continueTif(*(password1 + i) = r)Fbreaki+printf(*)*(password1 + i) = 0flag2 = strcmp(password,password1)Tif(flag1= 0&flag2 = 0)F登陆成功登陆失败软件 123 班13安徽工业大学计算机学院六、程序源代码#include#include#include#include#includetypedef struct stc

16、har num10,name9,bclass11;/学号、姓名、班级float score1,score2,score;/ 平时成绩、期末成绩、总评成绩struct st*next;stud;int xuanze();/ 选择学生或教师char menu1();/ 教师选单char menu2();/ 学生选单voidmima();/ 密码函数stud*load();/ 导入stud*search(stud*,int*);/查询voidsave(stud*);/ 导出voidscorein(stud*);/ 成绩录入voidinsert(stud*);/ 插入voiddeletel(stud*

17、);/删除voidchange(stud*);/ 修改voidbrowse(stud*);/浏览/*int main(void)char choice1, choice, c;int i;stud *head,*p;head=(stud*)malloc(sizeof(stud);/准备好表头head-next=NULL;loop:choice1 = xuanze();/ 进入选择系统if(choice1 = 1)mima();/密码函数while(1)choice=menu1();/教师系统的表头switch(choice)软件 123 班14安徽工业大学计算机学院case1:system(c

18、ls);printf( 浏览成绩情况。n);browse(head);getchar();break;case2:system(cls);printf( 插入学生成绩。n);insert(head);break;case3:system(cls);printf( 查询学生成绩。n);p=search(head,&i);if(p!=NULL)/输出数据printf(%2d%10s %8s %10s,i,p-num,p-name,p-bclass);printf(%5.1f%5.1f%5.1f,p-score1,p-score2,p-score);else printf( 未找到! );break

19、;case4:system(cls);printf( 删除学生记录。n);deletel(head);break;case5:system(cls);printf( 学生成绩录入。n);scorein(head);break;case6:system(cls);printf( 修改学生记录。n);change(head);break;case7:system(cls);printf( 从文件中将成绩情况导入链表。n);head=load();break;case8:system(cls);printf( 将链表中成绩情况保存到文件。n);save(head);break;case9:syste

20、m(cls);printf( 系统初始化。 n);head=(stud*)malloc(sizeof(stud);head-next=NULL;printf(%d%dn,head,head-next);break;case0:system(cls);printf( 返回上一级 n);printf( 是否保存当前数据到文件?(Y/N):);c=toupper(getchar();getchar();if(c=Y)软件 123 班15安徽工业大学计算机学院save(head);elsesystem(cls);goto loop;break;default:printf( 输入错误! );if(ch

21、oice = 0)break;printf(n 按任意键继续 .!);getchar();if(choice1 = 2)/ 学生系统的表头while(1)choice=menu2();switch(choice)case1:system(cls);printf( 浏览成绩情况。n);browse(head);getchar();break;case2:system(cls);printf( 查询学生成绩。n);p=search(head,&i);if(p!=NULL)/输出数据printf(%2d%10s %8s %10s,i,p-num,p-name,p-bclass);printf(%5.

22、1f%5.1f%5.1f,p-score1,p-score2,p-score);else printf( 未找到! );break;case3:system(cls);goto loop;default:printf( 输入错误! );if(choice = 3)break;printf(n 按任意键继续 .!);getchar();软件 123 班16安徽工业大学计算机学院if(choice1 = 3)printf(Goodbay!);exit(0);/*int xuanze()int choice;system(color 21);printf( 你好!请选择入口:n);printf(1.

23、 老师入口 n2.学生入口 n3.退出系统 n 请选择: );scanf(%d, &choice);fflush(stdin);return choice;char menu1()/ 教师表头char c;system(cls);system(color 31);printf(nnnnnn= 成绩管理系统 =n);printf(-n);printf(1.浏览成绩情况 n);printf(2.插入成绩学生 n);printf(3.查询成绩学生 n);printf(4.删除学生记录 n);printf(5.学生成绩录入 n);printf(6.修改学生记录 n);printf(7.将文件中成绩情况

24、导入到链表n);printf(8.将链表中成绩情况导出到文件n);printf(9.系统初始化 n);printf(0.返回上一级 n);printf(nn请选择。nnnn);c=getchar();getchar();return c;char menu2()/ 学生表头char c;system(cls);system(color 34);printf(nnnnnn= 成绩管理系统 =n);软件 123 班17安徽工业大学计算机学院printf(-n);printf(1.浏览成绩情况 n);printf(2.查询学生成绩 n);printf(3.返回上一级 n);printf(nn请选择。

25、nnnn);c=getchar();getchar();return c;void browse(stud*head)/将链表中各个结点数据依次输出int i=0;stud * p;/工作指针p=head-next;/指向首结点printf( 序号学号姓名班级平时成绩期末成绩总评成绩n);while(p!=NULL)/指针不空printf( %2d %-10s %-8s %-10s,+i,p-num,p-name,p-bclass); printf( %5.1f %5.1f %5.1fn,p-score1,p-score2,p-score);p=p-next;/工作指针 p 移动/*void

26、insert(stud*head)/插入新结点,并使链表各结点按学号升序排列char an,xh10,xm9,bc11;stud*p,*q;dop=head;printf( 请输入学生的学号、姓名、班级:n);gets(xh);gets(xm);gets(bc);/输入数据if(!strcmp(xh,0000)return;/以“ 0000“作为结束标记while(p-next!=NULL)&(strcmp(xh,p-next-num)=0)p=p-next;/查找新结点的插入位置q=(stud*)malloc(sizeof(stud);/生成新结点由q 指向strcpy(q-num,xh);

27、/把数据送入新结点strcpy(q-name,xm);strcpy(q-bclass,bc);q-next=p-next;p-next=q;/ 吧新结点插入链表软件 123 班18安徽工业大学计算机学院printf( 继续吗? );an=toupper(getchar();getchar();while(an=Y);/*stud*search(stud*head,int*i)/在链表中按姓名或学号进行查找 int xz;char xh10,xm9;stud*p; /工作指针 p=head-next;*i=1;/指向首结点printf(1. 按姓名查找 0.按学号查找 n);scanf(%d,&

28、xz);getchar();if(xz)printf( 请输入学生姓名:n);gets(xm);/ 输入姓名while(p!=NULL&strcmp(xm,p-name)!=0)/按姓名查找p-next;(*i)+;elseprintf( 请输入学生号码:n);gets(xh);/输入学号while(p!=NULL&strcmp(xh,p-num)!=0)/ 按学号查找p=p-next;(*i)+;return p;/*void deletel(struct st*head)/删除结点 int i,xz,n;char c,xm9,xh10;struct st*p,*q;/ 工作指针p=head

29、;/ 指针 p 指向头结点软件 123 班19安徽工业大学计算机学院if(p-next!=NULL)printf(1. 按学号删除2.按姓名删除3.按序号删除 n);scanf(%d,&xz);switch(xz)case1:printf( 请输入学生学号:n);getchar();gets(xh);/ 输入学号while(p-next!=NULL&strcmp(xh,p-next-num)!=0)/按学号查找p=p-next;break;case2:printf( 请输入学生姓名:n);getchar();gets(xm); /输入姓名 while(p-next!=NULL&strcmp(x

30、m,p-next-name)!=0)/ 按学号查找 p=p-next;break;case3:printf( 请输入序号: n);i=1;scanf(%d,&n);getchar();/ 输入序号while(p-next!=NULL&inext;i+;break;default:printf( 选择错误! n);return;q=p-next;/指针 q 指向 p 的直接后继if(q=NULL)printf( 未找到指定结点,没有执行删除!n);return;printf(%-10s%-8s请确认( Y/N ) ,q-num,q-name);c=getchar();getchar();if(t

31、olower(c)=y)p-next=q-next;/ 把结点从链表中删除free(q);return;/释放 q 所指的结点软件 123 班20安徽工业大学计算机学院printf( 无结点可删除!n);/*void scorein(stud*head)/依次给链表中各结点的数据录入成绩 int i=0;int ps,qm;stud*p;/工作指针p=head-next;/指向首结点printf( 请输入平时成绩在总评成绩中所占的百分比:n);scanf(%d,&ps);qm=100-ps;while(p!=NULL)printf(%2d%10s%8s%10sn,+i,p-num,p-name

32、,p-bclass);printf( 平时成绩期末成绩:);scanf(%f%f,&p-score1,&p-score2); /录入平时成绩和期末成绩 p-score=p-score1*ps/100+p-score2*qm/100;/ 计算出总评成绩 printf(%5.1ft%5.1ft%5.1fn,p-score1,p-score2,p-score);p=p-next;/ 工作指针p 移动getchar();/*void change(stud*head)/对链表中指定结点的数据进行修改 int i=0,xz;float x,y;stud*p;/ 工作指针dop=search(head,&

33、i);/查找要修改的结点if(p)printf(%2d%10s%8s%10s,i,p-num,p-name,p-bclass);printf(%5.1f%5.1f%5.1fn,p-score1,p-score1,p-score);else printf( 未找到! n);while(!p);printf( 哪部分信息? n);软件 123 班21安徽工业大学计算机学院printf(1. 修改学号 n);printf(2. 修改姓名 n);printf(3. 修改班级 n);printf(4. 修改平时成绩 n);printf(5. 修改期末成绩 n);printf(0. 不修改 n);scan

34、f(%d,&xz);getchar();switch(xz)case1:printf( 请重新输入学号:);gets(p-num);break;case2:printf( 请重新输入姓名:);gets(p-name);break;case3:printf( 请重新输入班级:);gets(p-bclass);break;case4:x=p-score1/p-score;y=1-x;/计算平时和期末在总评成绩中所占比例printf( 请重新输入平时成绩:);p-score=x*p-score1+y*p-score2;/ 重新计算总评成绩break;printf(%2d%10s %8s %10s,i

35、,p-num,p-name,p-bclass); printf(%5.1f %5.1f %5.1f,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)printf(cant open file);exit(0);q=head=(stud*)malloc(sizeof(stud);q-next=NULL;while(! feof(fp)p=(stud*)mallo

36、c(sizeof(stud);if(fread(p,sizeof(stud),1,fp)=1)p-next=q-next;q-next=p;q=p;fclose(fp);return head;软件 123 班22安徽工业大学计算机学院/*void save(stud*head)/将链表中成绩情况保存到文件FILE*fp;char fn12;stud*p;puts(将成绩情况导出到哪个文件中:);gets(fn);p=head-next;if(fp=fopen(fn,wb)=NULL)printf(cant open file);exit(0);while(p!=NULL)if(fwrite(p,sizeof(stud),1,fp)!=1)printf(filewrite

温馨提示

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

评论

0/150

提交评论