学籍管理系统,初始C语言编写

// 学生.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
#include

typedef struct Student
{
char Id[20];
char Name[20];
int Chieve[6];
double avg;
}T;

typedef struct
{
T *date;

}BAN;

int total;
void Creat(BAN P);
void CaculateAvg(BAN P);
void Search(BAN P);
void PaiXu(BAN P);
void ChaRu(BAN P);
void ShanChu(BAN P);

int main()
{
BAN P;
P.date = (T *)malloc(61 *sizeof(T));//给班开辟61个学生的信息空间
int xz = 1;
while(xz)
{
printf(" 学生成绩信息系统\n");
printf("===========================================\n");
printf(" 1.输入学生信息\n");
printf(" 2.输出每人的平均成绩并统计优秀人数\n");
printf(" 3.查询学生信息\n");
printf(" 4.排序输出学生信息\n");
printf(" 5.插入学生信息\n");
printf(" 6.删除学生信息\n");
printf(" 0.退出\n");
printf("===========================================\n");
printf("请选择:");
scanf("%d",&xz);
switch(xz)
{
case 1 : Creat(P); break;
case 2 : CaculateAvg(P); break;
case 3 : Search(P); break;
case 4 : PaiXu(P); break;
case 5 : ChaRu(P); break;
case 6 : ShanChu(P); break;
}
}
return 0;
}
void Creat(BAN P)
{
int i = 0;
while(1)
{
printf("请输入学生学号:");
scanf("%s",&P.date[i].Id);
if(strcmp(P.date[i].Id,"N") == 0)
{
total = i;
break;
}
printf("请输入学生姓名 五门成绩:");
scanf("%s %d %d %d %d %d",&P.date[i].Name,&P.date[i].Chieve[0],&P.date[i].Chieve[1],&P.date[i].Chieve[2],&P.date[i].Chieve[3],&P.date[i].Chieve[4]);
i++;
}
printf("输入完毕!\n");
}
void CaculateAvg(BAN P)
{
int T = 0;
for(int i = 0; i < total; i++)
{
P.date[i].avg = (P.date[i].Chieve[0] + P.date[i].Chieve[1] + P.date[i].Chieve[2] + P.date[i].Chieve[3] + P.date[i].Chieve[4]) / (5.0);
if(P.date[i].avg >= 90)
T++;
printf("学号:%-15s姓名:%-7s成绩平均分:%.4f\n",P.date[i].Id,P.date[i].Name,P.date[i].avg);
}
printf("\n优秀总学生数:%d\n",T);
printf("统计完毕!\n");
}
void Search(BAN P)
{
char search[20];
int i;
printf("请输入需要查询的学生姓名或学号:");
scanf("%s",&search);
for(i = 0; i < total; i++)
{
if(strcmp(P.date[i].Id,search) == 0 || strcmp(P.date[i].Name,search) == 0)
{
printf("学号:%-15s姓名:%-7s成绩1:%-4d成绩2:%-4d成绩3:%-4d成绩4:%-4d成绩5:%-4d成绩平均分:%.4f\n",
P.date[i].Id,P.date[i].Name,P.date[i].Chieve[0], P.date[i].Chieve[1],P.date[i].Chieve[2],P.date[i].Chieve[3], P.date[i].Chieve[4],P.date[i].avg);
break;
}
}
if(i >= total)
printf("没有此学生信息\n");
}
void PaiXu(BAN P)
{
BAN P2 = P;
T temp;
int i,j;
P2.date = (T *)malloc(61 *sizeof(T));
for(i = 0; i < total; i++)
P2.date[i] = P.date[i];
for(i

= 0; i < total; i++)
{
for(j = i; j < total; j++)
{
if(P2.date[i].avg > P2.date[j].avg)
{
temp = P2.date[i];
P2.date[i] = P2.date[j];
P2.date[j] = temp;
}
}
}
for(i = 0; i < total; i++)
{
printf("学号:%-15s姓名:%-7s成绩1:%-4d成绩2:%-4d成绩3:%-4d成绩4:%-4d成绩5:%-4d成绩平均分:%.4f\n",
P2.date[i].Id,P2.date[i].Name,P2.date[i].Chieve[0], P2.date[i].Chieve[1],P2.date[i].Chieve[2],P2.date[i].Chieve[3], P2.date[i].Chieve[4],P2.date[i].avg);
}
printf("输出完毕!\n");
}
void ChaRu(BAN P)
{
int a;
while(1)
{
printf("请输入要插入的位置:");
scanf("%d",&a);
if(a > total || a <= 0)
printf("输入错误!\n");
else
break;
}
for(int i = total; i >= a; i--)
P.date[i] = P.date[i-1];
printf("请输入学生学号 姓名 五门成绩:");
scanf("%s %s %d %d %d %d %d",&P.date[a].Id,&P.date[a].Name,&P.date[a].Chieve[0],&P.date[a].Chieve[1],&P.date[a].Chieve[2],&P.date[a].Chieve[3],&P.date[a].Chieve[4]);
P.date[a].avg = (P.date[a].Chieve[0] + P.date[a].Chieve[1] + P.date[a].Chieve[2] + P.date[a].Chieve[3] + P.date[a].Chieve[4]) / (5.0);
printf("插入完毕!\n");
total++;

}
void ShanChu(BAN P)
{
char search[20];
int i;
int temp = total;
printf("请输入需要删除的学生的姓名或学号:");
scanf("%s",&search);
for(i = 0; i < total; i++)
{
if(strcmp(P.date[i].Id,search) == 0 || strcmp(P.date[i].Name,search) == 0)
{
for(int j = i; j < total; j++)
{
P.date[j] = P.date[j+1];
}
total--;
printf("删除完毕!\n");
break;
}
}
if(temp == total)
printf("没有此学生!\n");

}

相关文档
最新文档