学生成绩统计C语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

{ char num[6]; char name[8]; int math; int english; int physical; int clanguage; int moral; float avr; }exchange; int i,n=0; int main(void) { void save(void);//保存文件函数声明 void sorting(void);//排序函数声明 void press(void);//输入函数声明 void failstudent(void);//不及格学生筛选函数声明 void Stuprintf(void);//学生输出函数声明 void failstuprintf(void);//不及格学生输出函数声明 int mode;//模式变量 while(1) { printf("Please select the mode you want!\n"); printf("1:This is a new project\t2:Modify\t3:Delete\t4.Insert\t5.Watch\n"); printf("Your choice:"); scanf("%d",&mode); if(mode==1)//新建程序模式 {
{ printf("cannot open file\n"); return 0;
2012 年 10 月 17 日
C 语言课程设计报告
一、C 语言课程设计的目的:
进一步消化和巩固已学过的 C 语言程序设计基础理论,学习和实践程序设计的各种技 能,利用 C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具。根 据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积 累调试 C 程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算 机解决实际问题的能力。在许多常规学科的日常教学中,我们不难发现这样一个现象,不少 学生的思维常常处于混乱的状态。写起作文来前言不搭后语,解起数学题来步骤混乱,这些 都是缺乏思维训练的结果。程序设计是公认的、最能直接有效地训练学生的创新思维,培养 分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面 布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断 推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。
clanguage.score:%d\tmoral.score:%d\tavr:%f\n",stu[m].num,stu[m].name,stu[m].math,\ stu[m].physical,stu[m].english,stu[m].clanguage,stu[m].moral,stu[m].avr);
1 输入成绩到文件中 2 输出成绩 3 输出不及格学生名单 4 成绩排序 5 修改记录 6 删除记录 7 插入记录等 主函数中对 3 个功能选择(菜单),调用对应的函数完成。 【测试数据】 自定模拟数据
题目的分析(需求分析):
该题目主要是锻炼学生对于运用 C 语言结构体,指针以及文件修改的能力,C 语言最 难的部分就在于指针,所以,能用最简洁的语句写出一个合理的程序,老师的目的就达到了。 通过该课程设计的锻炼,加深学生对这些知识的掌握以及理解。
char num[6]; char name[8]; int math; int english; int physical; int clanguage; int moral; float avr; }stu[N]; struct failstudent //不及格学生结构体 { char num[6]; char name[8]; int math; int english; int physical; int clanguage; int moral; }failstu[N]; struct exchange //中间值结构体
Stu.num :学生学号; Stu.name:学生名字(注:拼音); Stu.math:学生数学成绩; Stu.physics:学生物理成绩; Stu.english:学生英语成绩; Stu.clanguage:学生 C 语言成绩; Stu.moral:学生德育成绩; Stu.ave:学生平均成绩; ************************************************************/ 模式 1:将会弹出对话“Stu.num:”,输入学号,回车,以此类推。 模式 2:将会询问你需要修改哪一位的数据,按照弹窗提示操作。 模式 3:将会询问你需要删除哪一位的数据,按照弹窗提示操作。 模式 4:按照弹窗提示操作。 模式 5:直接弹出所有学生的成绩,按排名高低输出。
在该程序中,我将会运用结构体来分别创建学生成绩表,不及格学生成绩表以及中间 值成绩表,通过结构体的运用,我能更加快速以及有规律地调用,分配各个变量,达到简洁 的目的。
在循环语句中,我将利用指针来达到好的定位效果,定位准确才能够有的放矢地进行 各个环节,而不用通过繁杂的排序以及重复语句。
该程序我还运用了文件修改,程序运行过后将会保存于 stu.dat 中,同时也能读取该文 件。该程序有 5 个模式,所以必须运用文件管理。当然,当你并没有创建文件时,你却读取 文件,系统找不到自然就报错。
通过本次课程设计,我更加理解 C 语言的灵活多变,结构体的便捷,指针的灵活,文 件应用的严谨。使我对 C 语言有更全面的理解,进一步提高运用 C 语言编程解决实际问题的
能力,同时,为后续课程的学习夯实基础。
【提示】
模式(mode)1:新建一个工程; 模式(mode)2:修改; 模式(mode)3:删除; 模式(mode)4:插入; 模式(mode)5:查看。
int sum=0; for(i=1;i<N;i++) { press();//输入 failstudent();//不及格学生筛选 sum=stu[i-1].math+stu[i-1].english+stu[i-1].physical+stu[i-1].clanguage+stu[i-1].moral; // 总分 stu[i-1].avr=(float)(sum/5.0); //平均值 } sorting();//排序 printf("\n"); printf("\n"); printf("\n"); printf("This is a score ranking:\n"); Stuprintf();//学生输出 printf("\n");
点在于文件操作函数的繁杂以及情况的判断,“不及格学生输出模块”的难点在于成绩的判 断以及输入输出的排序。
/*************************************************************************** 技术文档/帮助清单
***************************************************************************/
这是一个学生成绩统计程序。该程序仅以 10 人为例,可通过修改宏定义 N 来指定人数新建 程序。在 VC++6.0 运行。 /******************************************ቤተ መጻሕፍቲ ባይዱ*****************
模式(mode)1:新建一个工程; 模式(mode)2:修改; 模式(mode)3:删除; 模式(mode)4:插入; 模式(mode)5:查看。
【分析】
该程序能够存储学生成绩数据,排序,算出平均值以及删除,修改,插入等功能,具 有较强的实用性。
全程序主要模块包括“排序模块”,“不及格学生输出模块”,“文件保存以及输出模块” 以及“成绩排名模块”。“排序模块”模块的难点在于结构体数组的赋值是否合法以及字符函 数的运用,“成绩排名”的难点在于判断各模式之间的联系。“文件保存以及输出模块”的难
输出文件名:“stu.dat”
1.总体流程图
模式选择
1. 新 建 工
2.修改文件
3.删除数据
4.插入数据
5.总览文件
程序清单:
/***************************************************************************** 程序清单
****************************************************************************/ #include "stdio.h" #include "string.h" #define N 11 struct student //学生结构体 {
} printf("whose record do you want to modify?\nPlease press 1~30!"); scanf("%d",&i); press(); sum=stu[i-1].math+stu[i-1].english+stu[i-1].physical+stu[i-1].clanguage+stu[i-1].moral; stu[i-1].avr=(float)(sum/5.0); if((fp=fopen("stud.dat","rb+"))==NULL)//写入数据
printf("cannot open file\n"); return 0; } for(m=0;m<N-1;m++)//读出文件 { fread(&stu[m],sizeof(struct student),1,fp); printf("No.%d\n",m+1);
printf("stuNo:%s\tname:%s\tmath.score:%d\tphysical.score%d\tenglish.score:%d\t\
二、课程设计报告正文
课程设计题目的原文:
学生成绩统计 【问题描述】 学期考试结束,统计有 N 个班某班每个人的平均成绩,每门课的平均成绩, 并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格 式自定。 【实现提示】 假设某班有:30 人(姓名自定) 考试课程有:高等数学、物理、外语、C 语言、德育 5 门课程。 将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容, 程序的功能主要包括 3 方面:
Stu.num :学生学号; Stu.name:学生名字(注:拼音); Stu.math:学生数学成绩; Stu.physics:学生物理成绩; Stu.english:学生英语成绩; Stu.clanguage:学生 C 语言成绩; Stu.moral:学生德育成绩; Stu.ave:学生平均成绩;
模式 1:将会弹出对话“Stu.num:”,输入学号,回车,以此类推。 模式 2:将会询问你需要修改哪一位的数据,按照弹窗提示操作。 模式 3:将会询问你需要删除哪一位的数据,按照弹窗提示操作。 模式 4:按照弹窗提示操作。 模式 5:直接弹出所有学生的成绩,按排名高低输出。
输出文件名:“stu.dat”
printf("\n"); printf("\n"); failstuprintf();//不及格学生输出 save(); } else if(mode==2)//修改模式 { FILE *fp;//文件声明 static int m,sum;//声明定义变量 extern i;//调取外部变量 if((fp=fopen("stud.dat","rb"))==NULL)//读出数据 {
课程设计
课程名称____C 语言课程设计___ 题目名称____学生成绩统计_____ 学生学院______物理学院_______ 专业班级____电子科学与技术___ 学 号_____3110008570______ 学生姓名______胡健___________ 指导教师_______刘力斌________
相关文档
最新文档