*?文件名称:指针和链表实现?2.cpp
*?文件标识:
*?摘要:指针和链表实现学生成绩管理系统
*
*?要求有:初始化链表,创建链表,删除指定学号的记录,打印学生成绩信息,
计算学生成绩的总分平均分,插入一条学生记录,退出。
*/
/***************************头文件*********************************/
#include?
#include?
#include?
/***************************常量***********************************/
#define?MENU_NUM?10
#define?N?3
/****************************结构体********************************/
typedef?struct?s1
{
charno[10]?;//学号由?10?个字符组成
charname[15]?;//学生姓名
floatscore[N]?;//各门课成绩
floatsum?;//总分
floataverage?;//平均分
struct?s1?*next?;//指向后继结点的指针
}STUDENT;//定义结构体类型
/********************************全局变量*************************/
struct?s1?*?head=NULL;//链表头结点
/********************************函数声明*************************/
void?InputData(?STUDENT?*?ptr?);//录入信息
void?PrintMenu(?);//显示菜单
int?MenuSelect(?);//选择菜单项
void?Init(?);//初始化
void?create(?);//创建链表
void?print(?)?;//打印链表数据
void?Delete(?);//删除指定学号的记录数据
void?append();//追加一个数据到链表尾部
void?computer();//计算链表中所有人的总分和平均分
/***********************************主函数********************************/
void?main()
{
int?key;
while(1)?{
key=MenuSelect();
switch(key)
{
case?1:
Init();//初试化链表。也就是若链表不为空则释放
链表中所有数据,将?head?置为空(NULL)
break;
case?2:
create();//创建链表,输入数据
break;
case?3:
Delete();//删除一个指定学号的记录数据
break;
case?4:
print();//打印链表中所有数据
break;
case?5:
computer();//计算链表中所有人的总分和平均分
break;
case?6:
append();//追加一个数据到链表的尾部
break;
case?7:
Init();//释放链表
exit(0);
}
}
}
/*****************************************************************
*函数名:PrintMenu
*
*描?述:显示操作菜单*
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void?PrintMenu(?)
{
int?i;
char?*?menu[]={
"-----------------------------------------------",
"|基于指针和链表的学生成绩管理系统|",
"|1.?初始化链表|",
"|2.?创建链表|",
"|3.?删除指定学号的记录|",
"|4.?打印学生成绩信息|",
"|5.?计算学生的总分和平均分|",
"|6.?插入一条学生记录|",
"|7.?退出|",
"-----------------------------------------------",
};
printf("\n\n");
for?(i=0;i
printf("%s\n",menu[i]);