学生成绩管理系统

#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值