#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _Student
{
char name[20];
int age;
int stuNum;
int Cscore;
int Mscore;
int Escore;
int Gscore;
double AvgScore;
}Student;
//定义链表的结点
typedef struct _Node
{
Student stu;//学生-数据域
struct _Node* pNext;//指向下一个结点的指针
}Node;
//定义头结点
Node* g_pHead = NULL;
//录入学生信息
void inputStudent()
{
//创建一个结点-动态开辟
Node* pNewNode = (Node*)malloc(sizeof(Node));
pNewNode->pNext = NULL;
//头插法
if (g_pHead == NULL)//原来什么也没有
{
g_pHead = pNewNode;
}
else
{
pNewNode->pNext = g_pHead;
g_pHead = pNewNode;
}
printf("请输入学生姓名:\n");
scanf("%s", pNewNode->stu.name);//name是数组名,不用加&
printf("请输入学生年龄:\n");
scanf("%d", &pNewNode->stu.age);
printf("请输入学生的学号:\n");
scanf("%d", &pNewNode->stu.stuNum);
printf("请输入学生的C成绩:\n");
scanf("%d", &pNewNode->stu.Cscore);
printf("请输入学生的数学成绩:\n");
scanf("%d", &pNewNode->stu.Mscore);
printf("请输入学生的英语成绩:\n");
scanf("%d", &pNewNode->stu.Escore);
pNewNode->stu.Gscore = pNewNode->stu.Cscore + pNewNode->stu.Mscore + pNewNode->stu.Escore;
pNewNode->stu.AvgScore = pNewNode->stu.Gscore / 3.0;
printf("录入完成!\n");
system("pause");
system("cls");//清屏
}
//主菜单
void mainMenu()
{
printf("*\t学生成绩管理系统\t*\n");
printf("——————————————------\n");
printf("*\t1.输入学生信息\t\t*\n");
printf("*\t2.显示学生信息\t\t*\n");
printf("*\t3.保存学生信息\t\t*\n");
printf("*\t4.读取学生信息\t\t*\n");
printf("*\t5.统计记录\t\t*\n");
printf("*\t6.查找学生信息\t\t*\n");
printf("*\t7.更新学生信息\t\t*\n");
printf("*\t8.删除学生信息\t\t*\n");
printf("*\t9.学生成绩排序\t\t*\n");
printf("*\t0.退出系统\t\t*\n");
printf("——————————————------\n");
}
//键盘输入
void keyDown()
{
char ch = _getch();
switch (ch)
{
case '1'://录入
inputStudent();
break;
case '2'://打印
printStudent();
break;
case '3'://保存
saveStudent();
break;
case '4'://读取
readStudent();
break;
case '5'://统计
printf("学生总人数为:%d\n", countStudent());
system("pause");
system("cls");
break;
case '6'://查找
{
Node* p = findStudent();
if (p != NULL)
{
printf("学号:%d\t姓名:%s\t年龄:%d\tC成绩:%d\t数学成绩:%d\t英语成绩:%d\n", p->stu.stuNum, p->stu.name, p->stu.age, p->stu.Cscore, p->stu.Mscore, p->stu.Escore);
}
else
{
printf("没有找到该学生。\n");
}
system("pause");
system("cls");
break;
}
case '7'://修改
modifyStudent();
break;
case '8'://删除
deleteStudent();
break;
case '9'://排序
不会;
case '0'://退出
exit(0);
break;
default:
printf("输入错误,请重新输入。\n");
system("pause");
system("cls");
break;
}
}
int main(void)
{
while (1)
{
mainMenu();
keyDown();
}
return 0;
}
case'9'://排序 用以上相同的方法继续下去怎么做?单科排名、平均分排名、总分排名。其他功能不用做