收藏 分销(赏)

安徽工业大学计算机学院程序的设计综合实习报告范本.doc

上传人:二*** 文档编号:4489424 上传时间:2024-09-25 格式:DOC 页数:29 大小:420KB
下载 相关 举报
安徽工业大学计算机学院程序的设计综合实习报告范本.doc_第1页
第1页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

2、行性: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()函数模块12IX、save()函数模块13X、mima()函数模块13六、程序源代码14七、程序测试25I、测试抓图

3、:25II、测试容:26八、总结27一、 问题定义:现代化的校园对学生进行考核的主要方式是通过考试,而传统的发布成绩方式存在着不同的问题,通过计算机网络可对这些问题进行解决,包括登陆时选择登陆身份,并给予不同权限对成绩系统进行访问,以达到教师可修改,可查询,可记录;学生可查询的目的。二、 可行性研究:I、 项目的由来:某高校教师需要对学生的成绩进行管理,包括学生信息的录入,学生成绩的录入,成绩的修改以及学生的成绩查询并保存。学生需要对成绩进行查询。II、 可选方案:一、 可选用人工进行学生的基本信息的管理,进行平时成绩,期末成绩以及总评成绩的计算,再人工将成绩发放到学生的手中。二、 可选用直接

4、从文件进行成绩的导入,直接得到学生的基本信息及考试成绩、总评成绩,或者通过人手工录入学生的基本信息及考试成绩、总评成绩。学生也可对其进行查找。III、 可行性:1、 技术可行性:学校每一门学科的考试人数都很多,若每场考试的成绩都需要老师人工计算并发布成绩,任务量大且出错率高。使用计算机自动计算学生考试成绩的方式大大降低了出错率,而且使用计算机省时省力,方便进行成绩的管理及查询。2、 经济可行性:利用计算机技术,开发学生成绩管理系统,可以重复使用,对学生的管理很有用,有必要开发。3、 操作可行性:操作计算机简单易行,并且不需要花费太多的人力。4、 法律可行性:开发学生成绩管理系统有利于学校对学生

5、的管理,不违反法律及相关法规。IV、 结论:面对高校学生成绩管理的巨大工作量,采用计算机的管理是极其必要的,若采用方案2的方法不单单可以减少很多的人力使用,使教师的工作量得到大量减少,而且出现错误的机率更低,更能够直接对学生的成绩进行管理,方便教师和学生的成绩的查询。三、 需求规格说明I、 目标:登陆身份选择教师学生登陆身份验证系统对请求进行处理教师输入学生的信息。或从文件导入成绩。学生系统学生学号,姓名,编号平时、期末成绩比例平时成绩期末成绩系统对数据进行记录以及处理,并将数据记录在链表中可以对储存在链表中的成绩进行访问查询教师对储存在链表中的数据进行修改教师可以选择成绩的保存路径II、 数

6、据需求:1、 数据量:教师的登陆账户及密码,学生学号,平时成绩,期末成绩,总评成绩。2、 数据定义和结构:教师的登陆用 = teacher ,密码 = 0000;:学号 = 学生在校自动分配的学号;平时成绩 = 教师给学生所打的平时分数;期末成绩 = 学生期末考试的成绩;总评成绩 = 平时成绩 平时成绩所占的比例 + 期末成绩 期末成绩所占的比例;III、 功能需求:性能:能快速响应,界面颜色多元化,清晰,数据对应整齐。在使用过程中容易操作,错误操作的次数少。功能:(IPO)处理输出输入登录身份根据身份信息给予相应的权限输入相应的操作,包括学生信息、成绩将成绩输入链表中,并自动计算成绩学生的基

7、本信息和总评成绩权限记录响应要求四、 总体设计:I、 软件的结构(HIPO图):现代化学生成绩管理系统教师入口学生入口输入学生的基本信息,成绩从文件中导入学生的基本信息,成绩输入系统处理将数据保存在链表中,可以修改系统自动计算学生的总评成绩输出将链表中的数据显示在屏幕上将链表中的数据显示在屏幕上五、 各模块详细设计I、 编译预处理模块使用的函数库:stdio.h、windows.h、string.h、conio.h学生数据结构体的声明:typedef struct studentstu包括学号num,姓名name,班级bclass,平时分数score1,期末成绩score2,总评成绩score

8、,指向下一结构体的next指针选择学生或教师函数声明int xuanze()教师选单函数声明char menu1()学生选单函数声明char menu2()密码函数函数声明void mima()导入函数声明stud*load()查询函数声明stud*search(stud*,int*)导出函数声明void save(stud*)成绩录入函数声明void scorein(stud*)插入函数声明void insert(stud*)删除函数声明void deletel(stud*)修改函数声明void change(stud*)浏览函数声明void browse(stud*)II、 主函数模块定义

9、字符型表头选择量choice1,choice,choice1用于登录身份选择,choice用于表头选择;定义字符型变量c用于接收Y或N的选择定义stu型指针变量head与p,用于数据链表的连接跳转loop部分Choice1的值12调用函数mima()调用函数char menu2()调用函数menu1()调用函数menu2()值4:调用函数deletel()值5:调用函数scorein()值6:调用函数change()值7:调用函数load()值8:调用函数save()值9:将链表指针重置值0:goto跳转值3:printf链表中的数据值2:调用函数insert()值1:调用函数browse()

10、Choice的值Choice的值值1:调用函数browse()值2:printf链表中的数据值3:将链表指针重置III、 browse()函数模块i= 0,p = head - nextwhile(p != NULL)输出链表中全部的学生信息及成绩p = p -nextIV、 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-next strcpy(q-num,xh) str

11、cpy(q-name,xm) strcpy(q-bclass,bc)q-next=p-next;p-next=q继续输入,判断输入是否为YV、 deletel()函数模块while(p-next!=NULL&inexti,xz,n, c,xm9,xh10, st*p,*qp = headif(p-next!=NULL)TF值2值3其他输入xz switch(xz)值1:输入学号while(p-next!=NULL&strcmp(xh,p-next-num)!=0)p=p-next输入姓名while(p-next!=NULL&strcmp(xm,p-next-name)!=0)p=p-next输

12、入序号输出错误q= p- nextif(q = NULL)TF输出未找到数据确认是否删除数据,p-next=q-next,free(q)VI、 scorein()函数模块i=0 ps qm *pp=head-next输入平时成绩所占的百分比qm=100-ps输入平时成绩,期末成绩while(p!=NULL)计算总评成绩:p-score=p-score1*ps/100+p-score2*qm/100p=p-nextVII、 change()函数模块p=search(head,&i)while(!p)if(p)输出找到的数据TF输出未找到i=0 xz x y *pVIII、 load()函数模块*

13、fp fn12 *head,*p,*q从文件中进行导入if(fp=fopen(fn,rb)=NULL)TF输出打开文件时发生错误并退出while(! feof(fp)if(fread(p,sizeof(stud),1,fp)=1)TFp-next=q-next q-next=p;q=pIX、 save()函数模块*fp fn12 *p从文件中进行导入if(fp=fopen(fn,wb)=NULL)TF输出打开文件时发生错误并退出while(p!=NULL)if(fwrite(p,sizeof(stud),1,fp)!=1)TF输出文件打开错误p=p-nextX、 mima()函数模块i n n

14、ame8 name121 password121 flag1 flag2,输入用户名,密码for(i = 0; i 0)TFi-输出“退格”输出“空格退格”continueif(*(password1 + i) = r)TFbreaki+ printf(*)*(password1 + i) = 0 flag2 = strcmp(password,password1)if(flag1 = 0&flag2 = 0)TF登陆成功登陆失败六、 程序源代码#include#include#include#include#includetypedef struct st char num10,name9,

15、bclass11;/学号、班级 float score1,score2,score;/平时成绩、期末成绩、总评成绩 struct st*next;stud;int xuanze();/选择学生或教师char menu1();/教师选单char menu2();/学生选单void mima();/密码函数stud*load();/导入stud*search(stud*,int*);/查询void save(stud*);/导出void scorein(stud*);/成绩录入void insert(stud*);/插入void deletel(stud*);/删除void change(stud

16、*);/修改void browse(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) case 1:system(cls);printf(浏览成绩情况。n); browse(head

17、); getchar(); break; case 2:system(cls);printf(插入学生成绩。n); insert(head); break; case 3: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; case 4:system(cls);

18、printf(删除学生记录。n); deletel(head);break; case 5:system(cls);printf(学生成绩录入。n); scorein(head);break; case 6:system(cls);printf(修改学生记录。n); change(head);break; case 7:system(cls);printf(从文件中将成绩情况导入链表。n); head=load();break; case 8:system(cls);printf(将链表中成绩情况保存到文件。n); save(head);break; case 9:system(cls);pr

19、intf(系统初始化。n); head=(stud*)malloc(sizeof(stud); head-next=NULL; printf(%d %dn,head,head-next); break; case 0:system(cls);printf(返回上一级n); printf(是否保存当前数据到文件?(Y/N):); c=toupper(getchar();getchar(); if(c=Y)save(head);elsesystem(cls);goto loop; break; default:printf(输入错误!); if(choice = 0)break;printf(n按

20、任意键继续.!);getchar();if(choice1 = 2)/学生系统的表头while(1) choice=menu2(); switch(choice) case 1:system(cls);printf(浏览成绩情况。n); browse(head); getchar(); break; case 2: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

21、-score1,p-score2,p-score); else printf(未找到!); break; case 3:system(cls);goto loop; default:printf(输入错误!); if(choice = 3)break;printf(n按任意键继续.!);getchar();if(choice1 = 3)printf(Goodbay!);exit(0);/*int xuanze()int choice;system(color 21);printf(你好!请选择入口:n);printf(1.老师入口n2.学生入口n3.退出系统n请选择:);scanf(%d, &

22、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.将文件中成绩情况导入到链表n); printf( 8.将链表中成绩情况导出到文件n

23、); 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); printf( -n); printf( 1.浏览成绩情况n); printf( 2.查询学生成绩n); printf( 3.返回上一级n); printf(nn 请选择。nnnn); c=getchar();getchar(); return c;v

24、oid 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 insert(stud*head) /插入新结点,并使

25、链表各结点按学号升序排列 char an,xh10,xm9,bc11; stud*p,*q; do p=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); /把数据送入新结点 st

26、rcpy(q-name,xm); strcpy(q-bclass,bc); q-next=p-next;p-next=q; /吧新结点插入链表 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,&xz); getchar(); if(xz) prin

27、tf(请输入学生:n); gets(xm); /输入 while(p!=NULL&strcmp(xm,p-name)!=0) /按查找 p-next; (*i)+; else printf(请输入学生: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; /指针p指向头结点 if(p-n

28、ext!=NULL) printf(1.按学号删除 2.按删除 3.按序号删除n); scanf(%d,&xz); switch(xz) case 1:printf(请输入学生学号:n); getchar(); gets(xh); /输入学号 while(p-next!=NULL&strcmp(xh,p-next-num)!=0) /按学号查找 p=p-next; break; case 2:printf(请输入学生:n); getchar(); gets(xm); /输入 while(p-next!=NULL&strcmp(xm,p-next-name)!=0)/按学号查找 p=p-next

29、; break; case 3: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(tolower(c)=y) p-next=q-ne

30、xt; /把结点从链表中删除 free(q); return; /释放q所指的结点 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,p-bclass); printf(平时成绩期末成绩:);

31、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; /工作指针do p=search(head,&i); /查找要修改的结点 if(p) print

32、f(%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); printf(1.修改学号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);br

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 应用文书 > 报告/总结

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服