C语言学生成绩管理系统课程设计源代码

5星 · 超过95%的资源 需积分: 50 47 下载量 89 浏览量 更新于2024-10-05 8 收藏 38KB ZIP 举报
资源摘要信息: "C语言课程设计——学生成绩管理系统(源代码+详细注释).zip" 本资源涉及的知识点十分丰富,下面将分几个部分详细介绍: 1. 结构体的使用 资源中定义了一个名为student的结构体,它用于存储学生信息。结构体是C语言中一种复合数据类型,它允许将不同类型的数据项组合在一起构成一个整体。在本例中,student结构体包含学号(num),姓名(name),三门课程的成绩(C语言成绩cgrade、数学成绩mgrade、英语成绩egrade),总分(total),平均分(ave)以及名次(mingci)。结构体的定义如下: ```c typedef struct student { char num[10]; // 学号 char name[15]; // 姓名 int cgrade; // C语言成绩 int mgrade; // 数学成绩 int egrade; // 英语成绩 int total; // 总分 float ave; // 平均分 int mingci; // 名次 } student; ``` 2. 功能实现的逻辑结构 描述中提到了switch语句,这是C语言中用来实现多分支选择的语句。通过判断变量select的值,程序能够执行不同的函数。这些函数分别对应不同的操作: - Add(l): 增加学生记录 - Del(l): 删除学生记录 - Qur(l): 查询学生记录 - Modify(l): 修改学生记录 - Insert(l): 插入学生记录 - Tongji(l): 统计学生记录 - Sort(l): 排序学生记录 - Save(l): 保存学生记录 - Display(l): 显示学生记录 - Wrong(): 错误处理 这些函数的定义和实现是程序核心部分,每个函数都有对应的逻辑处理,以满足学生成绩管理系统的需求。 3. 输入输出操作 程序中包含对系统命令的调用,如system("cls")用于清屏,getchar()用于获取按键输入。此外,Disp(l)函数可能用于格式化并显示学生信息列表。 4. 排序算法 在"资源摘要信息"中提到了排序学生记录的功能。这可能涉及到数据排序算法的实现,比如冒泡排序、选择排序、插入排序等。排序算法是程序设计中常用的算法之一,也是计算机科学的基础知识点。 5. 数据存储 Save(l)函数涉及到将数据保存到文件中。C语言可以使用文件I/O函数,如fopen, fwrite, fclose等进行数据的持久化存储。这也是程序设计中处理数据持久化问题的重要知识点。 6. 错误处理 在"资源摘要信息"中描述了错误处理函数Wrong(),它将在select变量输入不符合预期时被调用,以通知用户输入有误,并继续等待有效的输入。 7. 编程规范 由于源代码包含了详细注释,学习本资源时可以了解到编程的规范性和代码的可读性。注释不仅可以帮助理解代码的功能,还可以展示代码的书写规范。 8. 学生项目实践 该资源显然是一个学生课程设计项目,通过实际动手开发一个完整的系统,学生能加深对C语言编程的理解和实践能力。这种项目经验对初学者来说是非常宝贵的。 通过学习和实践这个资源,学生或开发者能够掌握C语言结构体的使用、多分支选择结构的逻辑实现、文件操作、排序算法的实现以及基本的输入输出处理。同时,也能够学习到如何将代码设计得更加结构化和模块化,便于维护和扩展。
2009-01-06 上传
#include <stdio.h> #include <stdlib.h> #include <string.h> #include<ctype.h> #define M 3 struct student {long num; char name[20]; char sex; int score[5]; int ave; }stu[M]; void init() { printf("\t\t********************************\n\n"); printf("\t\tStudent score management systerm \n"); printf("\n"); printf("\t\t Make by Maggiehe \n"); printf("\n"); printf("\t\t Student number is 3206***** \n\n"); printf("\t\t********************************\n\n"); } void input() { int i,j; printf("\nInput the student number name sex math English PE maolun majing:\n"); for(i=0;i<M;i++) {scanf("%ld,%s,%c",&stu[i].num,stu[i].name,&stu[i].sex); for(j=0;j<5;j++) scanf("%d",&stu[i].score[j]); scanf("%d",&stu[i].ave); save(); } } void list() { int i,j; clrscr(); printf("\t**********************student****************************\n"); printf("num name sex math English PE maolun majing:\n"); for(i=0;i<M;i++) { printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } if((i+1)%10==0) { printf("\npress any key continue.......\n"); getch(); } printf("\t*************************end*********************************\n"); } void average() { int i,j; float sum[M]; for(i=0;i<M;i++) for(j=0;j<5;j++) sum[i]+=stu[i].score[j]; stu[i].ave=sum[i]/5.0; } void search_num() { long num; int i,j; printf("\nplease enter number which you want to search:"); scanf("%ld",&num); printf("\n"); for(i=0;i<M;i++) if(stu[i].num!=num) printf("The number is not exist\n"); else { printf("number name sex math English PE maolun majing average\n"); printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } } void search_nam() { int i,j; char name[20]; printf("\nplease enter name which you want to search:"); scanf("%s",&name); printf("\n"); for(i=0;i<M;i++) if(strcmp(stu[i].name,name)==0) { printf("number name sex math English PE maolun majing average:\n"); printf("%ld%s%c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } else printf("\nThe name is not exist!!!\n"); } void search_ave() { int i,j,a=0; float k; printf("please enter average score which you want to search:"); scanf("%f",&k); printf("\n"); for(i=0;i<M;i++) if(stu[i].ave!=k) printf("The average score is not exist!!!\n"); else for(i=0;i<M;i++) { if(stu[i].ave<=k) printf("number name sex math English PE maolun majing average\n"); printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); a++; } } void sort() { int i,j; struct student temp; for(i=0;i<M;i++) for(j=i+i;j<M;j++) if(stu[i].ave<stu[j].ave) {temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } } void save() { int i; FILE *fp; if((fp=fopen("student.dat","wb"))==NULL) {printf("cannot open file\n"); return; } for(i=0;i<M;i++) if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); } void delect() { int i,t; long num; printf("please enter number which you want to delect:"); scanf("%ld",&num); printf("\n"); for(i=0;i<M;i++) { if(stu[i].num!=num) printf("The number is not exist!!!\n"); if(stu[i].num==num) t=i; } for(i=t;i<M;i++) stu[i]=stu[i+1]; save(); } void insert() {FILE *fp; int i,n,t; struct student s; printf("please input record\n"); printf("number name sex math English PE maolun majing average\n"); scanf("%ld,%s,%c,%d%d%d%d%d%d",&s.num,s.name,&s.sex,&s.score[0],&s.score[1],&s.score[2],&s.score[3],&s.score[4],&s.ave); s.ave=(s.score[0]+s.score[1]+s.score[2]+s.score[3]+s.score[4])/3.0; if((fp=fopen("student.dat","wb"))==NULL) {printf("cannot open file\n"); return; } i=M; for(t=0;stu[i].ave>s.ave&&t<M;t++) if(fwrite(&s,sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); } void MainMenu() {clrscr(); printf("\t********************************************************************\n \n); Printf(“\n”); printf("\t choose one of following:\n"); printf("\t 1. search record\n"); printf("\t 2. sort record\n"); printf("\t 3. insert record\n"); printf("\t 4. delect record\n"); printf("\t please enter your choice:"); printf(“\n”); printf("\t********************************************************************\n"); } void menu_select() {clrscr(); printf("\t******************************************************************\n\n"); printf(“\n”); printf("\t choose one of following:\n"); printf("\t 1.1 search by number\n"); printf("\t 1.2 search by name\n"); printf("\t 1.3 search by average score\n"); printf("\t please enter your choice:"); printf(“\n”); printf("\t******************************************************************\n"); } void search() { char ch; clrscr(); menu_select(); ch=getch(); switch(ch) { case '1':search_num();break; case '2':search_nam();break; case '3':search_ave();break; } } main() { char ch; clrscr(); init(); input(); list(); average(); save(); MainMenu(); ch=getch(); switch(ch) { case '1':search();break; case '2':sort();break; case '3':insert();break; case '4':delect();break; } search_num(); search_nam(); search_ave(); sort(); delect(); insert; }