大佬教程收集整理的这篇文章主要介绍了C语言学生成绩管理系统设计,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下
Ps:后加了个链表排序,用冒泡写的。
/* title : student's score management system Author: nyist_xiaod Date : 2012.5.8 */ #include <stdio.h> #include <conio.h> #include <String.h> #include <stdlib.h> #define Print_head_Num puts("班级 姓名 语文 数学 英语 总成绩") #define Print_head_Cla puts("学号 姓名 语文 数学 英语 总成绩") #define Print_head_All puts("班级 学号 姓名 语文 数学 英语 总成绩") typedef struct Node Node; struct score { int chinese,math,english,sum; }; struct Node { char name[20],classs[20],number[20]; struct score score; struct Node* next; }*head,*u,*p,*q; int n,C,M,E,Cj,Cy,Mj,My,Ej,Ey; char num[20]; voID Welcome() { printf("\t\t %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n",4,4); printf("\t\t %c 欢迎您使用学生成绩管理系统 %c\n",4); printf("\t\t %c %c\n",4); printf("\t\t %c 1.读取文件 %c\n",4); printf("\t\t %c 2.保存文件 %c\n",4); printf("\t\t %c 3.添加学生成绩 %c\n",4); printf("\t\t %c 4.修改学生成绩 %c\n",4); printf("\t\t %c 5.删除学生成绩 %c\n",4); printf("\t\t %c 6.查询本人成绩 %c\n",4); printf("\t\t %c 7.查询本班成绩 %c\n",4); printf("\t\t %c 8.查询全校成绩 %c\n",4); printf("\t\t %c 9.退出管理系统 %c\n",4); printf("\t\t %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n\n",4); printf("\t\t 请输入指令:(1-9) "); } Node* new_node(Node* uu) { uu = (Node*)malloc(sizeof(NodE)); uu->next = NulL; return uu; } voID Add() { u = new_node(u); printf("\n请输入您要加入的学生的信息:\n"); printf("\n姓名: "); scanf("%s",u->Name); printf("\n班级: "); scanf("%s",u->classs); printf("\n学号: "); scanf("%s",u->number); printf("\n语文、数学、英语成绩: "); scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english); u->score.sum = u->score.chinese + u->score.math + u->score.english; u->next = head->next; head->next = u; printf("\n--->添加成功!\n"); } voID Mod() { n = 0; printf("\n请输入您要修改的学号: "); scanf("%s",num); for(u = head; u != NulL;u = u->next) { if(strcmp(u->number,num) == 0) { n = 1; printf("\n请输入新的语文、数学、英语成绩: "); scanf("%d%d%d",&u->score.english); u->score.sum = u->score.chinese + u->score.math + u->score.english; printf("\n--->修改成功!\n"); break; } } if(!n) printf("\n--->没有这个学生的信息!\n"); } voID Del() { n = 0; printf("\n请输入您要删除的学生的学号: "); scanf("%s",num) == 0) { n = 1; p->next = u->next; free(u); printf("\n--->删除成功!\n"); break; } p = u; } if(!n) printf("\n--->没有这个学生的信息!\n"); } voID Sort() { int i,j; n = 0; for(u = head->next; u != NulL;u = u->next) n++; for(i=1;i<=n;i++) { u = head; for(j=0;j<n-i;j++) { p = u->next; q = p->next; if(strcmp(p->classs,q->classs) > 0 || strcmp(p->classs,q->classs) == 0 && p->score.sum < q->score.sum) { u->next = q; p->next = q->next; q->next = p; } u = u->next; } } } voID Que_One() { n = 0; printf("\n请输入您要查询的学生的学号: "); scanf("%s",num); for(u = head->next; u != NulL;u = u->next) { if(strcmp(u->number,num) == 0) { n = 1; printf("\n"); Print_head_Num; printf("%-11s%-15s",u->classs,u->Name); printf("%-6d%-6d%-6d%-6d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum); break; } } if(!n) printf("\n--->没有这个学生的信息!\n"); } voID Analyze_Sco(Node *uu) { C += uu->score.chinese; M += uu->score.math; E += uu->score.english; if(uu->score.chinese >= 60) Cj++; if(uu->score.chinese >= 90) Cy++; if(uu->score.math >= 60) Mj++; if(uu->score.math >= 90) My++; if(uu->score.english >= 60) Ej++; if(uu->score.english >= 90) Ey++; } voID Print_Sco() { printf("语文平均成绩: %-6.2f,及格率: %%%-6.2f,优秀率: %%%-6.2f.\n\n",(float)C/n,(float)100*Cj/n,(float)100*Cy/n); printf("数学平均成绩: %-6.2f,(float)M/n,(float)100*Mj/n,(float)100*My/n); printf("英语平均成绩: %-6.2f,(float)E/n,(float)100*Ej/n,(float)100*Ey/n); } voID Que_Cla() { Sort(); n = C = M = E = Cj = Cy = Mj = My = Ej = Ey = 0; printf("\n请输入您要查询的班级: "); scanf("%s",num); printf("\n"); for(u = head->next; u != NulL;u = u->next) { if(strcmp(u->classs,num)) conTinue; if(!n) Print_head_Cla; n++; printf("%-11s%-15s",u->number,u->Name); printf("%-6d%-6d%-6d%-d\n",u->score.sum); Analyze_Sco(u); } if(!n) { printf("没有这个班级的学生信息!\n"); return ; } printf("\n该班共有学生 %d 人.\n\n",n); Print_Sco(); } voID Que_All() { Sort(); n = C = M = E = Cj = Cy = Mj = My = Ej = Ey = 0; printf("\n"); if(head->next == NulL) { printf("--->没有学生信息!\n"); return ; } Print_head_All; for(u = head->next; u != NulL;u = u->next) { n++; printf("%-12s%-12s%-15s",u->score.sum); Analyze_Sco(u); } printf("\n全校共有学生 %d 人.\n\n",n); Print_Sco(); } voID Save() { char c; printf("\n确认保存?(Y/N): "); scanf("%*c%c",&c); if(c == 'N') return ; file *fp; if((fp=fopen("C:\\data.txt","w"))==NulL) { printf("\n--->无法打开文件\n"); return ; } fputs("班级 学号 姓名 语文 数学 英语 总成绩",fp); if(head->next != NulL) fputs("\n",fp); for(u = head->next; u != NulL;u = u->next) { fprintf(fp,"%-11s%-11s%-15s",u->Name); fprintf(fp,"%-6d%-6d%-6d%-d",u->score.sum); if(u->next != NulL) fprintf(fp,"\n"); } fclose(fp); printf("\n--->成绩成功存入C:\\\\data.txt中\n"); } voID open() { printf("\n请把数据放到目录C:\\\\data.txt中,按任意键确认.\n"); getch(); file *fp; if((fp=fopen("C:\\data.txt","r"))==NulL) { printf("\n--->没有找到文件!\n"); return ; } char tmp[100]; fgets(tmp,66,fp); while(!feof(fp)) { u = new_node(u); fscanf(fp,"%s%s%s",u->Name); fscanf(fp,"%d%d%d%d",&u->score.english,&u->score.sum); u->next = head->next; head->next = u; } printf("\n--->成绩读入成功!\n"); fclose(fp); } voID Exi() { char c; printf("\n确定退出?(Y/N): "); scanf("%*c%c",&c); if(c == 'N') return ; system("cls"); printf("\n\n"); printf("\t\t\t %c %c %c %c %c %c %c %c %c\n",4); printf("\t\t\t %c Made by Xiaod %c\n",4); printf("\t\t\t %c %c %c %c %c %c %c %c %c\n",4); printf("\t\t\t Thank you!\n\n\n"); exit(0); } int main() { int orz; system("color 0B"); head = new_node(head); while(1) { Welcome(); scanf("%d",&orz); system("cls"); switch(orz) { case 1:open();break; case 2:Save();break; case 3:Add();break; case 4:Mod();break; case 5:Del();break; case 6:Que_One();break; case 7:Que_Cla();break; case 8:Que_All();break; case 9:Exi();break; default :printf("\n--->无效的指令!\n"); } printf("\n"); system("pause"); system("cls"); } return 0; }
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是大佬教程为你收集整理的C语言学生成绩管理系统设计全部内容,希望文章能够帮你解决C语言学生成绩管理系统设计所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。