#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
//学生结点类型
typedef struct student
{
long no ;
char name[10];
char addr[20];
}STUDENT;
//链表结点类型
typedef struct node
{
STUDENT data;
struct node * pNext;
}SNODE;
//函数前置声明
SNODE * initList(SNODE * pHead);
SNODE * createList(SNODE * pHead, int len);
void inputInfor(SNODE * pHead);
void traverseList(SNODE * pHead);
SNODE * insertNode(SNODE * pHead,SNODE * pInsert);
void showMenu(void);
//初始化链表
SNODE * initList(SNODE * pHead)
{
pHead = NULL;
return pHead;
}
//展示菜单
void showMenu()
{
printf("___________________________________________\n");
printf(" 欢迎使用学生成绩管理系统\n");
printf("\t 【1】创建学生信息\n");
printf("\t 【2】插入学生信息\n");
printf("\t 【3】删除学生信息\n");
printf("\t 【4】显示学生信息\n");
printf("\t 【5】退出系统\n");
printf("___________________________________________\n");
return;
}
//输入学生信息
void inputInfor(SNODE * pNew)
{
printf("请输入学生信息:\n");
printf("学号=");
scanf("%ld",&pNew->data.no);
printf("姓名=");
scanf("%s",pNew->data.name);
printf("地址=");
scanf("%s",pNew->data.addr);
return;
}
//创建一个无头结点的链表
SNODE * createList(SNODE * pHead, int len)
{
SNODE * pNew;
SNODE * pTail;
int i;
for ( i = 0;i<len;i++)
{
pNew = ( SNODE * )malloc(sizeof(SNODE));
if(NULL == pNew)
{
printf("动态内存分配失败!\n");
exit(-1);
}
inputInfor(pNew);
if(NULL == pHead)
{
pHead = pNew;
pTail = pNew;
pTail->pNext = NULL;
}
else
{
pTail->pNext = pNew;
pTail = pNew;
pTail->pNext = NULL;
}
}
return pHead;
}
//链表节点的插入
SNODE * insertNode(SNODE * pHead,SNODE * pInsert)
{
return pHead;
}
//链表的遍历输出
void traverseList(SNODE * pHead)
{
SNODE * cur;
int i = 0;
if(NULL == pHead )
{
printf("链表创建失败!\n");
return;
}
else
{
cur = pHead;
while(NULL != cur)
{
printf("第%d个学生的信息为:",i+1);
printf("%-5ld%-5s%-5s\n",cur->data.no,cur->data.name,cur->data.addr);
cur = cur->pNext;
i++;
}
}
return;
}
//主函数
int main(void)
{
SNODE * pHead ,* pInsert;
int len,choice;
while(true)
{
showMenu();
printf("请输入您的选择:\n");
scanf("%d",&choice);
switch(choice)
{
case 1: printf("请输入原始班级的学生人数:\n");
scanf("%d",&len);
pHead = initList(pHead);
pHead = createList(pHead,len);
system("cls");
printf("创建后班级学生信息为:\n");
printf(" 学号 姓名 地址\n");
traverseList(pHead);
printf("*************************\n");
break;
case 2: printf("插入节点前班级学生信息为:\n");
traverseList(pHead);
printf("请输入需要插入学生信息:\n");
pInsert = (SNODE * )malloc(sizeof(SNODE));
if(NULL == pInsert)
{
printf("动态内存分配失败!\n");
exit(-1);
}
inputInfor(pInsert);
system("cls");
pHead = insertNode(pHead,pInsert);
printf("插入节点后班级学生信息为:\n");
traverseList(pHead);
break;
case 3:
break;
case 4:printf("班级学生信息为:\n");
break;
case 5:
break;
default:
printf("您的输入有误!\n");
}
}
return 0;
}
学生成绩管理系统
最新推荐文章于 2023-09-27 03:45:00 发布