c语言程序设计之学生成绩管理系统精华版
// 111.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
#include
#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
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 { 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 { 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 { 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 i++; if(i { for(j=i;j Ls->s[j]=Ls->s[j+1]; Ls->length--; printf(" 已成功删除"); } else printf(" 对不起,无此学生成绩,无法删除\n"); printf("请按回车键返回主界面"); getchar(); getchar(); } void search(Lstudent *Ls)/*按学号查找*/ { int i=0,x; system("cls"); printf(" 请输入要查找学生的学号:"); scanf("%d",&x); while((i i++; if(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("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"); } else printf(" 未找到此学生\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"); else for(i=0;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 { a[i]=(A+B)/2; } system("cls"); for(k=0;k for(j=1;j for(i=0;i