#include // 111.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h"#include<stdlib.h>#include<conio.h>#include<string.h>#define A Ls->s[i].kaoshi*0.7+Ls->s[i].pingshi*0.3#define B Ls->s[i].kaoshi1*0.7+Ls->s[i].pingshi1*0.3#define MAX 1000#include <Windows.h>BOOL SetConsoleColor(WORD wAttributes){HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);if (hConsole == INVALID_HANDLE_VALUE)return FALSE;return SetConsoleTextAttribute(hConsole, wAttributes);}//使用色彩typedef struct{char name[20];int num;int classes;int age;char sex[10];int bianhao;char mingcheng[20];int xuefen;int kaoshi;int pingshi;int bianhao1;char mingcheng1[20];int xuefen1;int kaoshi1;int pingshi1;}student;typedef struct{student s[MAX];int length;}Lstudent;void welcome()/*界面函数*/{SetConsoleColor(FOREGROUND_RED);printf(" ◢▇▇▇▇▇▇▇▇▇▇▇▇◣\n");printf(" ▇欢迎进入成绩管理系统▇\n");printf(" ◥▇▇▇▇▇▇▇▇▇▇▇▇◤\n");printf(" \n"); SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); printf(" ◢▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇◣\n");printf(" ◢▇▇▇0.读取信息▇▇▇◣\n");printf(" ◢▇▇▇▇ 1.输入成绩▇▇▇▇◣\n");printf(" ◢▇▇▇▇▇ 2.输出成绩▇▇▇▇▇◣\n"); printf(" ◢▇▇ 3.插入成绩▇▇◣\n"); printf(" ◢▇▇▇ 4.删除成绩▇▇▇◣\n"); printf(" ▇▇▇▇ 5.查找成绩▇▇▇▇\n"); printf(" ▇▇▇▇ 6.修改成绩▇▇▇▇\n"); printf(" ◥▇▇▇7.不及格名单▇▇▇◤\n"); printf(" ◥▇▇8.平均成绩及排名▇▇◤\n"); printf(" ◥▇▇▇▇9.存储信息▇▇▇▇◤\n");printf(" ◥▇▇▇10.退出成绩管理系统▇▇▇◤\n");printf(" ◥▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇◤\n");}void read(Lstudent *Ls,FILE *fp){system("cls");if((fp=fopen("score system.txt","rt+"))==NULL){printf("无法打开此文件\n");printf("请按回车键返回主界面");getchar();}else{while(!feof(fp))putchar(getc(fp));printf("按回车键返回主界面");getchar();getchar();}fclose(fp);}void input(Lstudent *Ls)/*输入学生的成绩*/{ int n;int i;system("cls");printf(" 请输入学生数:");scanf("%d",&n);Ls->length=n;for(i=0;i<n;i++){printf(" 输入第%d个学生的数据:\n",i+1); printf(" 姓名:");scanf("%s",&Ls->s[i].name);printf(" 学号:");scanf("%d",&Ls->s[i].num);printf(" 班级:");scanf("%d",&Ls->s[i].classes);printf(" 年龄:");scanf("%d",&Ls->s[i].age);printf(" 性别:");scanf("%s",&Ls->s[i].sex);printf(" 课程编号:");scanf("%d",&Ls->s[i].bianhao);printf(" 课程名称:");scanf("%s",&Ls->s[i].mingcheng);printf(" 学分:");scanf("%d",&Ls->s[i].xuefen);printf(" 考试成绩:");scanf("%d",&Ls->s[i].kaoshi);printf(" 平时成绩:");scanf("%d",&Ls->s[i].pingshi);printf(" 课程编号:");scanf("%d",&Ls->s[i].bianhao1);printf(" 课程名称:");scanf("%s",&Ls->s[i].mingcheng1);printf(" 学分:");scanf("%d",&Ls->s[i].xuefen1);printf(" 考试成绩:");scanf("%d",&Ls->s[i].kaoshi1);printf(" 平时成绩:");scanf("%d",&Ls->s[i].pingshi1);}printf("录入成绩完成,请按回车键返回主界面"); getchar();getchar();}void output(Lstudent *Ls)/*输出学生的成绩信息*/ {int i;system("cls");for(i=0;i<Ls->length;i++){printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");}printf("请按回车键回到主界面");getchar();getchar();}void insert(Lstudent *Ls)/*插入学生成绩信息*/{int n,i,l;system("cls");l=Ls->length;printf(" 请输入要插入的学生数:");scanf("%d",&n);for(i=0;i<n;i++){printf(" 请输入插入第%d个学生的数据:\n",i+1);printf(" 姓名:");scanf("%s",&Ls->s[i+1].name);printf(" 学号:");scanf("%d",&Ls->s[i+1].num);printf(" 班级:");scanf("%d",&Ls->s[i+1].classes);printf(" 年龄:");scanf("%d",&Ls->s[i+1].age);printf(" 性别:");scanf("%s",&Ls->s[i+1].sex);printf(" 课程编号:");scanf("%d",&Ls->s[i+1].bianhao);printf(" 课程名称:");scanf("%s",&Ls->s[i+1].mingcheng);printf(" 学分:");scanf("%d",&Ls->s[i+1].xuefen);printf(" 考试成绩:");scanf("%d",&Ls->s[i+1].kaoshi);printf(" 平时成绩:");scanf("%d",&Ls->s[i+1].pingshi);printf(" 课程编号:");scanf("%d",&Ls->s[i+1].bianhao1);printf(" 课程名称:");scanf("%s",&Ls->s[i+1].mingcheng1);printf(" 学分:");scanf("%d",&Ls->s[i+1].xuefen1);printf(" 考试成绩:");scanf("%d",&Ls->s[i+1].kaoshi1);printf(" 平时成绩:");scanf("%d",&Ls->s[i+1].pingshi1);}Ls->length+=n;printf("插入成绩完成,请按回车键返回主界面"); getchar();getchar();}void delet(Lstudent *Ls)/*按学号删除*/{int i=0,j,x;system("cls");printf(" 请输入要删除的学生的学号:"); scanf("%d",&x);while((i<Ls->length)&&(Ls->s[i].num!=x))i++;if(i<Ls->length){for(j=i;j<Ls->length;j++)Ls->s[j]=Ls->s[j+1];Ls->length--;printf(" 已成功删除");}elseprintf(" 对不起,无此学生成绩,无法删除\n");printf("请按回车键返回主界面");getchar();getchar();}void search(Lstudent *Ls)/*按学号查找*/{int i=0,x;system("cls");printf(" 请输入要查找学生的学号:");scanf("%d",&x);while((i<Ls->length)&&(Ls->s[i].num!=x))i++;if(i<Ls->length){printf("┏━━━┳━━━┳━━━┳━━━┳━━━┳\n");printf("┃姓名┃学号┃班级┃年龄┃性别┃\n");printf("┣━━━╋━━━╋━━━╋━━━╋━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);printf("┣━━━╋━━━╋━━━╋━━━╋━━━┫\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");printf("┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);printf("┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");}elseprintf(" 未找到此学生\n");printf("请按回车键回到主界面");getchar();getchar();}void save(Lstudent *Ls,FILE *fp)/*将学生成绩信息存储在文件score system.txt中*/{int i;system("cls");if((fp=fopen("score system.txt","wt+"))==NULL)printf("无法打开此文件\n");elsefor(i=0;i<Ls->length;i++){fprintf( fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━┳\n");fprintf( fp,"┃姓名┃学号┃班级┃年龄┃性别┃\n");fprintf( fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━╋\n");fprintf( fp,"┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-6.6s┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].classes,Ls->s[i].age,Ls->s[i].sex);fprintf( fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━┫\n");fprintf( fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");fprintf( fp,"┃课程1编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao,Ls->s[i].mingcheng,Ls->s[i].xuefen,Ls->s[i].kaoshi,Ls->s[i].pingshi,A);fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┏━━━━━┳━━━┳━━━━━┳━━━━━┳━━━━┳━━━━┳\n");fprintf( fp,"┃课程2编号┃名称┃学分┃考试成绩┃平时成绩┃综合成绩┃\n");fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"┃%-4d ┃%-6.6s┃%-4d ┃%-4d ┃%-4d ┃%-4.1f ┃\n",Ls->s[i].bianhao1,Ls->s[i].mingcheng1,Ls->s[i].xuefen1,Ls->s[i].kaoshi1,Ls->s[i].pingshi1,B);fprintf( fp,"┣━━━━━╋━━━╋━━━━━╋━━━━━╋━━━━╋━━━━╋\n");fprintf( fp,"☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");} //注中括号在循环语句中的使用printf("信息已存储在名为“score system.txt的文件中”,按回车键返回主界面");fclose(fp);getchar();getchar();}void aver(Lstudent *Ls)//计算平均分并排序{int i=0,n,j,k;float a[20],t;for(i=0;i<Ls->length;i++)//逐个赋值,千万不能少{a[i]=(A+B)/2;}system("cls");for(k=0;k<Ls->length;k++) //此处为冒泡排序法for(j=1;j<Ls->length;j++)for(i=0;i<Ls->length-j;i++)if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("┏━━━┳━━━┳━━━━┳\n");printf("┃名次┃姓名┃平均分┃\n");printf("┣━━━╋━━━╋━━━━╋\n");for(i=0;i<Ls->length;i++)// 已输入学生长度为Ls->length{ printf("┃%-4d ┃%-6.6s┃%-4.1f ┃\n",i+1,Ls->s[i].name,a[i]);printf("┣━━━╋━━━╋━━━━╋\n");//注意有调用顺序问题}getchar();getchar();}void nopass(Lstudent *Ls)//? 列出不及格学生清单(学号、姓名、不及格的课程和成绩){int n;system("cls");int i;printf("不及格学生信息\n");for(i=0;i<Ls->length;i++){if(A<60){printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");printf("┃姓名┃学号┃课程┃考试成绩┃\n");printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-6.6s┃%-4.1f ┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng,A);printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n"); }if(B<60){ printf("┏━━━┳━━━━━┳━━━┳━━━━┳\n");printf("┃姓名┃学号┃课程┃考试成绩┃\n");printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");printf("┃%-6.6s┃%-4d ┃%-6.6s┃%-4.1f ┃\n",Ls->s[i].name,Ls->s[i].num,Ls->s[i].mingcheng1,B);}printf("┣━━━╋━━━━━╋━━━╋━━━━╋\n");}printf("请按回车键回到主界面");getchar();getchar();}void change(Lstudent *Ls)//修改成绩{int i=0,n;printf("请输入要修改的学号:");scanf("%d",&n);if(Ls->s[i].num==n){printf("\n 请输入学生姓名:");fflush(stdin);scanf("%s",&Ls->s[i].name);printf("\n 请输入学生班级:");fflush(stdin);scanf("%s",&Ls->s[i].classes);printf("\n 请输入学生年龄:");fflush(stdin);scanf("%d",&Ls->s[i].age);printf("\n 请输入学生性别:");fflush(stdin);scanf("%s",&Ls->s[i].sex);printf("\n 请输入课程1编号:");fflush(stdin);scanf("%d",&Ls->s[i].bianhao);printf("\n 请输入课程名称:");fflush(stdin);scanf("%s",&Ls->s[i].mingcheng);printf("\n 请输入课程学分:");fflush(stdin);scanf("%d",&Ls->s[i].xuefen);printf("\n 请输入课程考试成绩:");fflush(stdin);scanf("%d",&Ls->s[i].kaoshi);printf("\n 请输入课程平时成绩:");fflush(stdin);scanf("%d",&Ls->s[i].pingshi);printf("\n 请输入课程2编号:");fflush(stdin);scanf("%d",&Ls->s[i].bianhao1);printf("\n 请输入课程名称:");fflush(stdin);scanf("%s",&Ls->s[i].mingcheng1);printf("\n 请输入课程学分:");fflush(stdin);scanf("%d",&Ls->s[i].xuefen1);printf("\n 请输入课程考试成绩:");fflush(stdin);scanf("%d",&Ls->s[i].kaoshi1);printf("\n 请输入课程平时成绩:");fflush(stdin);scanf("%d",&Ls->s[i].pingshi1);printf("修改成功!");printf("\n");}elseprintf("未找到该学号\n");printf("请按回车键回到主界面");getchar();getchar();return;}int _tmain(int argc, _TCHAR* argv[]){printf("=====================================================\n");printf(" === 学生成绩管理系统===\n");printf(" === ===\n");printf(" === 设计者:===\n");printf(" === ===\n");printf(" === 指导老师:===\n");printf(" === ===\n");printf(" === 中南大学信息科学与工程学院===\n");printf(" === ===\n");printf(" === 2011级===\n");printf(" === ===\n");printf(" === 2012年6月===\n");printf("=====================================================\n");getchar();int choice;Lstudent Ls;FILE *fp=NULL;while(1){system("cls");welcome();printf("请选择您要的操作:");scanf("%d",&choice);switch(choice){case 0:read(&Ls,fp);break;case 1:input(&Ls);break;case 2:output(&Ls);break;case 3:insert(&Ls);break;case 4:delet(&Ls);break;case 5:search(&Ls);break;case 6: change (&Ls);break;case 7:nopass (&Ls);break;case 8:aver(&Ls);break;case 9:save(&Ls,fp);break;//修改成绩case 10:printf("谢谢使用!\n");exit(0); default:printf("选择有误,请重新输入\n"); }}return 0;}。c语言程序设计之学生成绩管理系统精华版