课程设计:学生成绩管理系统.doc
《课程设计:学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《课程设计:学生成绩管理系统.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档就在这里-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-课程设计:学生成绩管理系统一:课程设计目的通过本次课程设计,进一步熟悉掌握以下知识:数据类型号、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等。达到系统理解、综合运用课程知识的学习目标;学会用C语言程序解决实际问题的方法;掌握程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试、调试方法。二:总体设计内容(一)、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语
2、文、数学、英语和计算机等相关信息;可用函数cin(stu p1)来实现此操作.2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。 3、插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。 5、退出系统:可
3、用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。(二)、系统主模块结构图:三:详细设计(一)、 界面设计此系统界面采用图形和数字化菜单设计.主界面设计如下: 学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统(二)、 数据结构设计: 程序设计中用到的结构体类型: 学生信息结构体类型:typedef struct student char nameMAX; int n
4、umMAX; char sexMAX; int chinese; int mathematic; int english; int computer; struct student *next;(三)、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)(四)、调试与测试问题一、学生初始信息模块:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu p1)来实现此操作.当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。 解决办法及步骤:1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。 2、既然有此学生,那么检
5、查循环判断是否有此学生的语句发现没有错 3、输出用于循环检查语句中的学生信息,发现乱码 4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。 问题二、查询模块:可用stu lookdata(stu p1) 来实现.找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。解决办法及步骤:1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
6、 2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息.(五)、源程序清单和执行结果#include #include #include stdlib。h#define LEN sizeof(struct scorenode)define DEBUG#include string。hstruct scorenodeint number;/学号*/char name10;/*姓名*/float yuwen;/语文成绩*/float yingyu;/*英语成绩/float shuxue;/数学成绩 */struct scorenode next;type
7、def struct scorenode score;int n,k;/*n,k为全局变量,本程序中的函数均可以使用它/*=/score *creat2311(void)/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/scorehead;score *p1,p2,p3,max;int i,j;float fen; char t10;n=0; p1=p2=p3=(score *)malloc(LEN);head=p3; /开辟一个新单元*/ printf(”请输入学生资料,输0退出!n”);repeat1: printf(请输入学生学号(学号应大于0):);/输入学
8、号,学号应大于0/ scanf(d,p1-number); while(p1number0)getchar(); printf(”输入错误,请重新输入学生学号:”); scanf(%d”,p1number); /输入学号为字符或小于0时,程序报错,提示重新输入学号/if(p1number=0)goto end;/*当输入的学号为0时,转到末尾,结束创建链表/else p3=head;if(n0)for(i=0;iname);/输入学生姓名/ printf(请输入语文成绩(0100):);/输入语文成绩,成绩应在0100/ scanf(%f”,&p1yuwen); while(p1yuwenyu
9、wen100)getchar();printf(”输入错误,请重新输入语文成绩”);/*输入错误,重新输入语文成绩直到正确为止/ scanf(%f”,&p1-yuwen); printf(”请输入英语成绩(0100):);/输入英语成绩,成绩应在0100/ scanf(%f,p1-yingyu); while(p1-yingyu0|p1yingyu100)getchar();printf(”输入错误,请重新输入英语成绩”);/*输入错误,重新输入英语成绩直到正确为止*/ scanf(%f,&p1-yingyu); printf(”请输入数学成绩(0100):);/输入数学成绩,成绩应在0100
10、*/ scanf(f,&p1shuxue); while(p1shuxue100)getchar();printf(输入错误,请重新输入数学成绩); scanf(”%f,&p1-shuxue);/*输入错误,重新输入数学成绩直到正确为止/ head=NULL;while(p1-number!=0) n=n+1;if(n=1)head=p1;else p2next=p1; p2=p1; p1=(score )malloc(LEN); printf(请输入学生资料,输0退出!n”);repeat2:printf(”请输入学生学号(学号应大于0):); scanf(d,&p1number);/输入学
11、号,学号应大于0/while(p1number0)getchar(); printf(”输入错误,请重新输入学生学号:”); scanf(%d”,p1number); /*输入学号为字符或小于0时,程序报错,提示重新输入学号/if(p1number=0)goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/elsep3=head;if(n0)for(i=0;in;i+) if(p1number!=p3-number) p3=p3-next; else printf(学号重复,请重输!n); goto repeat2; /当输入的学号已经存在,程序报错,返回前面重新输入/ prin
12、tf(”请输入学生姓名:); scanf(”%s,&p1-name);/输入学生姓名/ printf(”请输入语文成绩(0100):”); scanf(”%f,&p1yuwen);/输入语文成绩,成绩应在0100/ while(p1-yuwen0|p1-yuwen100)getchar();printf(输入错误,请重新输入语文成绩”); scanf(”%f”,p1yuwen);/输入错误,重新输入语文成绩直到正确为止/ printf(请输入英语成绩(0100):); scanf(f”,p1-yingyu);/输入英语成绩,成绩应在0-100*/ while(p1-yingyu0|p1ying
13、yu100)getchar();printf(输入错误,请重新输入英语成绩); scanf(”%f”,p1-yingyu);/输入错误,重新输入英语成绩直到正确为止*/ printf(请输入数学成绩(0100):); scanf(”%f,p1-shuxue);/*输入数学成绩,成绩应在0-100/ while(p1-shuxue0p1-shuxue100)getchar();printf(输入错误,请重新输入数学成绩”); scanf(”%f”,&p1-shuxue);/输入错误,重新输入数学成绩直到正确为止/ end: p1=head; p3=p1;for(i=1;in;i+) for(j=
14、i+1;jnumberp1number) k=maxnumber; max-number=p1number; p1-number=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中/ strcpy(t,max-name); strcpy(maxname,p1name); strcpy(p1name,t); /*交换前后结点中的姓名,使之与学号相匹配*/ fen=maxyuwen; max-yuwen=p1yuwen; p1yuwen=fen; /交换前后结点中的语文成绩,使之与学号相匹配/ fen=max-yingyu; maxyingyu=p1yingyu; p1yingyu=f
15、en; /*交换前后结点中的英语成绩,使之与学号相匹配/ fen=maxshuxue; maxshuxue=p1shuxue; p1shuxue=fen; /交换前后结点中的数学成绩,使之与学号相匹配/ max=head;p1=head;/重新使max,p指向链表头*/ p2-next=NULL;/*链表结尾/ printf(输入的学生数为:d个!n,n); return(head);/=*/*=*/score *load2311(score *head)/函数load2311,功能:从文件读入学生记录/ score *p1,*p2; int m=0; char filepn10;FILE f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 学生 成绩管理系统
限制150内