1、C语言学生成绩查询系统实训目的能力目标全面熟悉、掌握C语言基本知识,掌握C程序设计中数组、函数、指针的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。实训要求:(1) 掌握C语言中的基本数据输入、输出;(2) 熟练使用C语言中的数组;(3) 熟练使用C语言中的函数;(4) 熟练使用C语言中的指针;(5) 熟练使用C语言中的结构体。实训内容(过
2、程及步骤)设计题目:学生成绩查询系统1、基本思路:以数组为基础,加以函数和结构体。然后程序分由“输入学生成绩”,“输出学生成绩”,“查询学生成绩”,“修改学生成绩”, “查看成绩排序”,“查看成绩统计保存数据”, “读取数据”等等这几大部分组成。这五部分各自用一个程序列出,然后在用其他函数将他们连接起来。2、程序:#include#include#include#include#include#define N 10/*定义结构体*/typedef struct students /*标记为students*/ char num10; /*学生学号*/ char name10; /*学生姓名*
3、/ int age; /*年龄*/ char sex10; /*性别*/ float cyy; /*C语言成绩*/ float computer; /*计算机成绩*/ float english; /*英语成绩*/ float pj; /*平均成绩*/STU;STU temp;void sort(STU students,int n); /排序void save(STU students,int n);/导出int Locate(STU students,int n);/查询/*-显示菜单-*/char displaymenu() char k; system(cls); printf( 学生
4、成绩管理 n); printf(-应用菜单-n); printf( 1 输入学生成绩nn); printf( 2 输出学生成绩nn); printf( 3 查询学生成绩nn); printf( 4 修改学生成绩nn); printf( 5 查看成绩排序nn); printf( 6 查看成绩统计nn); printf( 7 保存数据nn); printf( 8 读取数据nn); printf( 9 退出系统nn); printf( 请选择你想进行的操作:); k=getchar(); return k;/*定义输出函数*/void printheader() /*格式化输出表头*/ printf
5、(nn*学生成绩管理系统*nnn); printf(| 学号| 姓名 | 年龄| 性别| C语言成绩|计算机成绩| 英语成绩| 平均成绩| n); void printdata(STU pp) /*格式化输出表中数据*/ STU* p; p=&pp; printf(| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|n,p-num,p-name,p-age,p-sex,p-cyy,p-computer,p-english,p-pj);/*添加学生信息*/int add(STU students ,int *n) int i=0;
6、system(cls); printf( n); printf( 请输入学生信息 n); printf( 退出请在学生号处输入:0 n); printf(请输入学生学号:n ); scanf(%s,studentsi.num); while(strcmp(studentsi.num,0) )/当输入的学号为时结束输入 printf(请输入学生姓名:n ); scanf(%s,studentsi.name); printf(*nnn); printf(请输入学生年龄:n ); scanf(%d,&studentsi.age); printf(*nnn); printf(请输入学生性别:n); s
7、canf(%s,studentsi.sex); printf(*nnn); printf(请输入C语言成绩:n ); scanf(%f,&studentsi.cyy); printf(*nnn); printf(请输入计算机成绩:n ); scanf(%f,&puter); printf(*nnn); printf(请输入英语成绩:n ); scanf(%f,&studentsi.english); printf(*nnn); studentsi.pj=(studentsi.cyy+puter+studentsi.english)/3; printf(学生平均成绩: %-8.0fn,stude
8、ntsi.pj); i+; printf(*nnn); printf(请输入学生学号:n ); scanf(%s,studentsi.num); *n=i; save(students ,i); return i; /*查询学生信息函数*/int Locate(STU students,int n) int k,m=-1; char num10,name20; int i=0; system(cls); printf( 退出请输入:0 n); printf(请选择以什么方式查询:1).按学生学号查询 2).按学生姓名查询 n); scanf(%d,&k); if(k=1) printf(请输入
9、你要查询的学生学号:n); scanf(%s,num); while(i学生学号:%sn*学生姓名:%sn*学生年龄:%dn*学生性别:%snC语言成绩:%-8.0fn计算机成绩:%-8.0fn英语成绩:%-8.0fn平均成绩:%-8.0fn,studentsi.num,studentsi.name,studentsi.age,studentsi.sex,studentsi.cyy,puter,studentsi.english,studentsi.pj); m=i; getchar(); break; i+; if(i=n) printf(没有所找学生信息n); getchar(); els
10、e if(k=2) printf(请输入你要查询的学生姓名:n); scanf(%s,name); while(i=n) printf(没有所找学生信息n); return m;/*返回一个根m便于修改学生信息*/ getchar();/*显示函数*/ void input(STU students,int n) int i; system(cls); /清屏 if(n=0) /*表示没有学生信息记录*/ printf(n没有学生记录!n); printf(nn); printheader(); /*输出表格头部*/ i=0; while(in) /*逐条输出数组中存储的学生信息*/ prin
11、tdata(studentsi); i+; getchar(); /*修改子程序*/void Modify(STU students,int n) int i; if(n=0) system(cls); printf( n退出请输入:0 n); printf(n-not found!-n); getchar(); return ; system(cls); printf(修改学生信息); input(students,n); i=Locate(students,n); /*查询到该数组元素,并返回下标值*/ if(i!=-1) /*若i!=,表明已经找到该数组元素*/ printf(请输入新的
12、学生信息: n); printf( 学号: ); scanf(%s,studentsi.num); printf( 姓名: ); scanf(%s,studentsi.name); printf( 年龄: ); scanf(%d,&studentsi.age); printf( 性别: ); scanf(%s,studentsi.sex); printf( C语言: ); scanf(%f,&studentsi.cyy); printf( 英语: ); scanf(%f,&studentsi.english); printf( 计算机: ); scanf(%f,&puter); student
13、si.pj=(studentsi.cyy+studentsi.english+puter)/3; printf(平均成绩: %-9.0fn,studentsi.pj); save(students ,n); printf(n-修改成功!-n); else printf(not found!n); getchar();/*学生成绩排序子程序*/ void sort(STU students,int n) int i,j,a,b,c,d,e,f,k; float p; printf( n退出请输入:0 n); printf(成绩排序方式选择: 1.按C语言 2.按英语 3.按平均 n ); sca
14、nf(%d,&k); if(k=1) /*用选择法对C语言排序*/ for(i=0; in; i+) for(j=0;jn-1;j+) if(studentsi.englishstudentsj+1.english) temp=studentsi; studentsi=studentsj+1; studentsj+1=temp; else if(k=2)/*英语用冒泡法*/ for(a=0; an-1; a+) c=a; for(b=a+1; bstudentsc.cyy) c=b; if (c!=a) temp=studentsa; studentsa=studentsc; students
15、c=temp; if(k=3) /*平均成绩用插入法*/ for(d=1;dn;d+) p=studentsd.pj; for(e=0;ed;e+) if(studentse.pje;f-) studentsf=studentsf-1; studentse=temp; input(students,n); /*显示排序后的所有记录*/ save(students ,n); printf(n 排序完成!n); /*统计学生分数在各等级的人数子程序*/void Tongji(STU students,int n) int count6085=0,count85=0,count60=0; int i
16、=0; system(cls); printf( n退出请输入:0 n); input(students,n);i=0;while(i85) count85+;i=i+1;continue; /*平均成绩=85*/ if(studentsi.pj=60&studentsi.pj=85) count6085+;i=i+1;continue; /*60平均成绩85*/ if(studentsi.pj60) count60+;i=i+1;continue; /*平均成绩60*/printf(n*统计结果*nn);printf(平均成绩高于分的人数:%d n,count85);printf( n);p
17、rintf(平均成绩在分和分之间的人数:%d n,count6085);printf( n);printf(平均成绩低于分的人数:%d n,count60);printf( n);printf(nn*统计结束*);getchar();/*导出或保存数据*/void save(STU students,int n) FILE* fp; int i=0; fp=fopen(students,wb+);/*以读写方式打开创建一个二进制文件*/ if(fp=NULL) /*打开文件失败*/ printf(n*打开文件错误!*n); return ; for(i=0;i0) getchar(); pri
18、ntf(nn*共导出%d个学生信息*n,i); getchar(); else system(cls); printf(*没有信息导出*n); getchar(); fclose(fp); /*关闭此文件*/*导入数据*/void Read(STU students,int * n) FILE* fp; int i=0; fp=fopen(students,rb);/*以只读方式打开一个已有的二进制文件*/ if(fp=NULL) /*打开文件失败*/ printf(n*打开文件错误!*n); exit(0); for(i=0;i0) printf(nn*共导入:%d 个学生信息*n,i);
19、getchar(); else system(cls); printf(*没有信息导入!*n); getchar(); getchar(); fclose(fp); /*关闭此文件*/*主函数*/void main() STU studentsN; int n; char s13,s23=1; int i,k; printf(nn); printf(*n); printf( nn); printf( nnn); printf( :邢曾智 : 09511002 :0951100201n); printf( n); printf(*n); printf(nn); for(i=0;i密码错误,请重新
20、输入); if(i2) printf(n您已连续次输错,系统将退出!n); exit(0); else while(1) k=displaymenu(); switch(k) case 1 : add(students,&n); break; case 2 : Read(students,&n);input(students,n) ;break; case 3 : Read(students,&n);Locate(students,n);break; case 4 : Read(students,&n);Modify(students,n);break; case 5 : Read(stude
21、nts,&n);sort(students,n);break; case 6 : Read(students,&n);Tongji(students,n); break; case 7 : save(students,n) ;break; case 8 : Read(students,&n);break; case 9 : system(cls); printf(n *谢谢您的使用*n);exit(0);break; default : printf(nn输入错误,输入必须是9之间的一个数字!请重新输入n);getchar();getchar(); 3、运行结果(截图):第一步:输入本软件的使
22、用密码。第二步:登陆后的画面第三步:输入学生成绩的画面第四步:输出学生成绩这个是随便输入后保存的有关数据第五步:查询成绩第六步:修改原来的信息第七步:成绩排序按英语排序第八步:成绩统计第九步:保存数据第十步:导出数据4、遇到困难:在进行此次实训的过程中我遇到了许多的问题,比如没有定义函数名就进行函数的编译,以至于等到运行时找了很久都没有找到错误,还有就是定义指针数组名的时候不清楚如何在结构体中添加指针数组以及如何在特定的地方添加函数。不懂如何用在被调用函数中直接改变多个被调函数值,以及如何用函数把变量传送到到指定的地址等等。实训心得:历时2星期的C语言程序实训已经结束了,在这2星期编程的过程中感触颇多,实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。首先,对我以前做题做事非常马虎的毛病有了很大的改进,通过在这2星期编程的过程中的锻炼,我现在做题比以前仔细多了,会小心翼翼地去看
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1