栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

高校学生成绩管理系统1.0

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

高校学生成绩管理系统1.0

头部文件

#include
#include
#include
#include

//定义一个学生
typedef struct _Student
{
    char name[20];    //姓名
    int    age;        //年龄
    int stuNum;        //学号
    int score;        //成绩
}Student;

//节点()车厢
typedef struct _Node
{
    Student stu;//学生
    struct _Node* pNext;//指向下一个节点的指针
}Node;


Node *g_pHead = NULL;//头节点

//声明欢迎
void Welcome();
//声明录入学生信息
void InputStudent();
//打印学生信息
void PrintfStudent();
//保存学生信息
void SaveStudent();
//读取学神信息
void ReadStudent();
//统计所有学生人数
int CountStudent();
//查找学生
Node* FindStudent();
//修改学生信息
void ModifyStudent();
//删除学生
void DeleteStudent();

源文件

#include "StudentManagerSystem.h"

int main()
{
    while (1)
    {
        
        Welcome();//欢迎
        
        char ch = getch();//从键盘接受一个字符

        switch (ch)
        {
        case '1'://录入学生信息
            InputStudent();
            break;
        case '2'://打印学生信息
            PrintfStudent();
            break;
        case '3'://保存学生信息
             SaveStudent();
            break;
        case '4'://读取学生信息
            ReadStudent();
            break;
        case '5'://统计所有学生信息
            printf("学生总人数为:%dn", CountStudent());
            system("pause");    //暂停
            system("cls");        //清屏
            break;
        case '6'://查找学生信息
        {    
            Node* p = FindStudent();
        if (p != NULL)
            printf("学号:%dt姓名:%st年龄:%dt成绩:%dn", p->stu.stuNum, p->stu.name, p->stu.age, p->stu.score);
        else
            printf("没有找到该学员n");
        system("pause");    //暂停
        system("cls");        //清屏
        break;
        }
            break;
        case '7'://修改学生信息
            ModifyStudent();
            break;
        case '8'://删除学生信息
            DeleteStudent();
            break;
        case '0'://退出系统
            printf("Bye Bye!!!n");
            return 0;
        default:
            printf("你的输入有误,请重新输入n");
            system("pause");    //暂停
            system("cls");        //清屏
        }
    }
    return 0;
}

void Welcome()//欢迎函数
{
        printf("*************************************************n");
        printf("*t欢迎使用高校学生成绩管理系统1.0t*n");
        printf("*************************************************n");
        printf("*ttt请选择功能列表tt*n");
        printf("*************************************************n");
        printf("*tt1.录入学生信息ttt*n");
printf("*tt2.打印学生信息ttt*n");
printf("*tt3.保存学生信息ttt*n");
printf("*tt4.读取学生信息ttt*n");
printf("*tt5.统计所有学生信息tt*n");
printf("*tt6.查找学生信息ttt*n");
printf("*tt7.修改学生信息ttt*n");
printf("*tt8.删除学生信息ttt*n");
printf("*tt0。退出系统ttt*n");
printf("*************************************************n");
}

//录入学生信息
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);//从键盘接收一个字符串,整数等等
    printf("请输入学生的年龄:n");
    scanf("%d", &pNewNode->stu.age);//&:取地址运算符
    printf("请输入学生的学号:n");
    scanf("%d", &pNewNode->stu.stuNum);
    printf("请输入学生的成绩:n");
    scanf("%d", &pNewNode->stu.score);

    printf("学生信息录入成功n");
    system("pause");    //暂停
    system("cls");        //清屏
}

//打印学生信息
void PrintfStudent()
{
    system("cls");    //清屏
    printf("*************************************************************n");
    printf("*t欢迎使用高校学生成绩管理系统v1.0tt    *n");
    printf("*************************************************************n");
    printf("*t学号t*t姓名t*t年龄t*t成绩*n");
    printf("*************************************************************n");

    //遍历列表
    Node* p = g_pHead;
    while (p != NULL)
    {
        printf("*t%dt*t%st*t%dt*t%d*n",
            p->stu.stuNum,
            p->stu.name,
            p->stu.age,
            p->stu.score);

        p = p->pNext;
    }
    printf("*************************************************************n");
    system("pause");    //暂停
    system("cls");        //清屏
}
//保存学生信息
void SaveStudent()
{
    //打开文件
    FILE *fp = fopen("F:C语言stuinfo.data", "w");

    if (fp == NULL)
    {
        printf("打开文件失败n");
        return;
    }
    //遍历列表
    Node* p = g_pHead;
    while (p != NULL)
    {
        fwrite(&p->stu, 1, sizeof(Student), fp);
        p = p->pNext;
    }
    //关闭文件
    fclose(fp);
    printf("保存文件成功n");
    system("pause");    //暂停
    system("cls");        //清屏
}
//读取学生信息
void ReadStudent()
{
    //打开文件
    FILE *fp=fopen("F:C语言stuinfo.data", "r");
    if (fp == NULL)
    {
        printf("打开文件失败n");
        return;
    }
    //读取文件
    Student stu;
    while (fread(&stu, 1, sizeof(Student), fp))
    {
        //创建一个新节点
        Node* pNewNode = (Node*)malloc(sizeof(Node));
        
        pNewNode->pNext = NULL;

        memcpy(pNewNode,&stu, sizeof(Student));
        //头插法
        if (g_pHead == NULL)
        {
            g_pHead = pNewNode;
        }
        else
        {
            pNewNode->pNext = g_pHead;
            g_pHead = pNewNode;
        }
    }

    //关闭文件
    fclose(fp);
    printf("加载数据成功n");
    system("pause");    //暂停
    system("cls");        //清屏
}
int CountStudent()
{
    int nCount = 0;//学生总数

    //遍历列表
    Node* p = g_pHead;
    while (p != NULL)
    {
        nCount++;
        p = p->pNext;
    }
    return nCount;
}
//查找学生
Node* FindStudent()
{
    int nStuNum;
    char szName[20];
    printf("请输入要查找的学生的学号:n");
    scanf("%d",&nStuNum);

    printf("请输入要查找的学生的姓名:n");
    scanf("%s",szName);

    Node* p = g_pHead;
    while (p != NULL)
    {
        //strcmp字符串比较函数
        if (p->stu.stuNum == nStuNum || 0 == strcmp(p->stu.name, szName))
        {
            return p;
        }
        p = p->pNext;
    }
    return NULL;
}
//修改学生信息
void ModifyStudent()
{
    int nStuNum;
    printf("请输入需要修改的学生信息的学号:n");
    scanf("%d", &nStuNum);
    Node* p = g_pHead;
    while (p != NULL)
    {
        //strcmp字符串比较函数
        if (p->stu.stuNum == nStuNum )
        {
            printf("请输入要修改的学生姓名 年龄 成绩:n");
            scanf("%s %d %d", p->stu.name,&p->stu.age,&p->stu.score);
            printf("修改成功n");
            break;
        }
        p = p->pNext;
    }
    if (p == NULL)
    {
        printf("没有找到该学生信息n");
    }
    system("pause");    //暂停
    system("cls");        //清屏
}
void DeleteStudent()
{
    int nStuNum;
    printf("请输入要删除的学生的学号:n");
    scanf("%d", &nStuNum);

    Node* p1, *p2;
    //判断是不是头节点
    if (g_pHead->stu.stuNum == nStuNum)
    {
        p1 = g_pHead;
        g_pHead = g_pHead->pNext;
        free(p1);
        return;
    }
    //不是头节点
    Node* p = g_pHead;
    while (p->pNext != NULL)
    {
        if (p->pNext->stu.stuNum == nStuNum)
        {
            p2 = p->pNext;
            p->pNext = p->pNext->pNext;
            free(p2);
            system("pause");    //暂停
            system("cls");        //清屏
            return;
        }

        p = p->pNext;
        if (p->pNext == NULL)
        {
            break;
        }
    }

    if (p->pNext == NULL)
    {
        printf("没有找到该学员");
    }
    system("pause");    //暂停
    system("cls");        //清屏
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号