学习完C语言基础知识点,现在来用单链表、函数、指针的相关知识写一个简单版学生成绩管理系统,主要实现增删改查的基本功能。
主界面:(自己设计)
void main()
{
system("cls");
printf("
");
printf(" ===========================================
");
printf(" | |
");
printf(" | 欢迎来到学生成绩管理系统 |
");
printf(" | |
");
printf(" |=========================================|
");
printf(" | 请选择要操作的命令 |
");
printf(" |-----------------------------------------|
");
printf(" | |
");
printf(" | 1.录入学生信息 |
");
printf(" | 2.显示学生信息 |
");
printf(" | 3.增加学生信息 |
");
printf(" | 4.删除学生信息 |
");
printf(" | 5.修改学生信息 |
");
printf(" | 6.查找学生信息 |
");
printf(" | 7.按总分排序 |
");
printf(" | |
");
printf(" ===========================================
");
int Item;//保存操作命令
pnode phead=NULL;//定义一个指针
while(1)
{
printf("请选择操作命令:");
scanf("%d",&Item);
system("cls");//清屏
switch(Item)
{
case 1://录入学生信息
{
phead=Input();
}
break;
case 2://显示学生信息
{
Show(phead);
}
break;
case 3://增加学生信息
{
Add(phead);
}
break;
case 4://删除学生信息
{
Delete(phead);
}
break;
case 5://修改学生信息
{
Change(phead);
}
break;
case 6://查找学生信息
{
Search(phead);
}
break;
case 7://总分排序
{
Sort(phead);
Show(phead);
}
break;
default:
break;
}
}
system("pause");
}
1.定义一个学生结构和一个结点结构,用于存储信息。
学生结构:
//学生结构
struct Student
{
char Name[10];
int Num;
float Computer;
float Math;
float English;
float Total;
float Ave;
};
结点结构:
//结点
typedef struct Node
{
struct Student st;//数据域
struct node *pnext;//指针域
}node, *pnode;//*node等价于struct Student st,pnode等价于struct Node *pNext
2.定义一些函数来处理学生信息。
函数模块:
//函数
pnode Input();//录入学生信息
void Show(pnode phead);//显示学生信息
void Add(pnode phead);//增加学生信息
void Delete(pnode phead);//删除学生信息
void Change(pnode phead);//修改学生信息
void Search(pnode phead);//查找学生信息
void Sort(pnode phead);//总分排序
1)录入学生信息pnode Input()
//录入学生信息
pnode Input()
{
int num;//学生的人数
node stu;//学生结构
pnode phead=(pnode)malloc(sizeof(node));//定义一个头结点并且为头结点分配内存
//判断内存是否为空
if(NULL==phead)
{
printf("内存分配失败,程序终止!
");
exit(-1);
}
pnode ptail