首页 > 其他分享 >学生成绩管理--C语言

学生成绩管理--C语言

时间:2023-12-02 15:12:16浏览次数:42  
标签:head -- system C语言 stu 学生 printf 成绩 pnext

# 学生成绩管理系统

效果

image-20231202144849125

1.菜单选项

void welcome()//菜单
{
    printf("欢迎使用学生管理系统\n");
    printf("  1.增加学生信息\n");
    printf("  2.展示学生信息\n");
    printf("  3.删除学生信息\n");
    printf("  4.修改学生信息\n");
    printf("  5.查看学生信息\n");
    printf("  6.保存学生信息\n");
    printf("  7.读取学生信息\n");
    printf("  0.退出\n");
}

2.增加学生信息

void addstudnet()//增加学生信息
{
    node* pnewnode=(node*)malloc(sizeof(node));
    pnewnode->pnext=NULL;
    if(head==NULL)
    {
        head=pnewnode;
    }
    else
    {
        pnewnode->pnext=head;
        head=pnewnode;
    }
    printf("请输入学生的学号\n");
    scanf("%d",&pnewnode->stu.no);
    printf("请输入学生的姓名\n");
    scanf("%s",pnewnode->stu.name);
    printf("请输入学生的年龄\n");
    scanf("%d",&pnewnode->stu.age);
    printf("请输入学生的分数\n");
    scanf("%s",pnewnode->stu.score);
    printf("学生信息录入成功\n");
	system("pause");
	system("cls");
}

3.展示学生信息

void showstudent()//展示学生信息
{
    node* p=head;
    printf("学号\t姓名\t年龄\t分数\n");
    while(p!=NULL)
    {
        printf("%d\t%s\t%d\t%s\n",p->stu.no,p->stu.name,p->stu.age,p->stu.score);
        p=p->pnext;
    }
    system("pause");
    system("cls");
}

4.删除学生信息

void deletestudent()//删除学生信息
{
    int dno;
    printf("请输入需要删除学生的学号:");
    scanf("%d",&dno);
    if(head->stu.no==dno)
    {
         node* p1=head;
         head=head->pnext;
         free(p1);
        printf("删除成功\n");
        system("pause");
        system("cls");
         return;
    }
    node* p=head;
    node* p2;
    while(p->pnext!=NULL)
    {
        if(p->pnext->stu.no==dno)
        {
            p2=p->pnext;
            p->pnext=p->pnext->pnext;
            free(p2);
            printf("删除成功\n");
            system("pause");
            system("cls");
            return;
        }
        p=p->pnext;
        if(p->pnext==NULL)
        {
            break;
        }
    }
    if(p->pnext==NULL)
    {
        printf("查无此人\n");
        system("pause");
        system("cls");
    }
}

5.修改学生信息

void editstudent()//修改学生信息
{
    int eno;
    printf("请输入需要修改学生的学号:");
    scanf("%d",&eno);
    node* p=head;
    while(p->pnext!=NULL)
    {
        if(p->stu.no==eno)
        {
            printf("请输入学生的学号\n");
            scanf("%d",&p->stu.no);
            printf("请输入学生的姓名\n");
            scanf("%s",p->stu.name);
            printf("请输入学生的年龄\n");
            scanf("%d",&p->stu.age);
            printf("请输入学生的分数\n");
            scanf("%s",p->stu.score);
            printf("学生信息修改成功\n");
            system("pause");
            system("cls");
            return;
        }
        p=p->pnext;
        if(p==NULL)
        {
            break;
        }
    }
    printf("查无此人!\n");
    system("pause");
    system("cls");
}

6.查找学生信息

node* findstudent()//查看学生信息
{
    int fno;
    printf("请输入需要查找学生的学号:");
    scanf("%d",&fno);
    node* p=head;
    while (p!=NULL)
    {
        if(p->stu.no==fno)
        {
            printf("学号\t姓名\t年龄\t分数\n");
            printf("%d\t%s\t%d\t%s\n",p->stu.no,p->stu.name,p->stu.age,p->stu.score);
            system("pause");
            system("cls");
            return p;
        }
        p=p->pnext;
    }
    printf("查无此人\n");
    return NULL;
    system("pause");
    system("cls");
}

7.保存学生信息

void savestudent()
{
	FILE* fp = fopen("D:\\demo02.txt", "w");
    if(fp==NULL)
    {
        printf("打开文件失败\n");
        system("pause");
        system("cls");
        return;
    }
    node* p=head;
    while(p!=NULL)
    {
        fwrite(&p->stu,sizeof(student),1,fp);
        p=p->pnext;
    }
    fclose(fp);
    printf("保存成功\n");
    system("pause");
    system("cls");
}

8.读取学生信息

void readstudent()
{
    FILE* fp=fopen("D:\\demo02.txt","r");
    if(fp==NULL)
    {
        printf("打开文件失败\n");
        system("pause");
        system("cls");
        return;
    }
    student stu1;

    while(fread(&stu1,sizeof(student),1,fp))
    {
        node* p = (node*)malloc(sizeof(node));
        p->pnext=NULL;		
        memcpy(p, &stu1,sizeof(student));
		if (head == NULL)
		{
			head = p;
		}
		else
		{
			p->pnext = head;
			head = p;
		}
    }
    fclose(fp);
    printf("读取成功\n");
    system("pause");
    system("cls");
}

源码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>

typedef struct student
{
    int no;
    char name[10];
    int age;
    char score[10];
}student;
typedef struct node 
{
    struct student stu;
    struct node * pnext;
}node;

struct node* head=NULL;

void welcome();//菜单
void addstudnet();//增加学生信息
void showstudent();//展示学生信息
void deletestudent();//删除学生信息
void editstudent();//修改学生信息
node* findstudent();//查找学生信息
void savestudent();//保存学生信息
void readstudent();//读取学生信息

int main()
{
    int choice=0;
    while (1)
    {
        welcome();
        printf("请输入选择:");
        scanf("%d",&choice);
        switch (choice)
        {
        case 0:
            return 0;
            break;
        case 1:
            addstudnet();
            break;
        case  2:
            showstudent();
            break;
        case 3:
            deletestudent();
            break;
        case 4:
            editstudent();
            break;
         case 5:
            findstudent();
            break;
         case 6:
            savestudent();
            break;
         case 7:
            readstudent();
            break;
        default:
            printf("输入错误!\n");
            system("pause");
            system("cls");
            break;
        }
    }
}

void welcome()//菜单
{
    printf("欢迎使用学生管理系统\n");
    printf("  1.增加学生信息\n");
    printf("  2.展示学生信息\n");
    printf("  3.删除学生信息\n");
    printf("  4.修改学生信息\n");
    printf("  5.查看学生信息\n");
    printf("  6.保存学生信息\n");
    printf("  7.读取学生信息\n");
    printf("  0.退出\n");
}

void addstudnet()//增加学生信息
{
    node* pnewnode=(node*)malloc(sizeof(node));
    pnewnode->pnext=NULL;
    if(head==NULL)
    {
        head=pnewnode;
    }
    else
    {
        pnewnode->pnext=head;
        head=pnewnode;
    }
    printf("请输入学生的学号\n");
    scanf("%d",&pnewnode->stu.no);
    printf("请输入学生的姓名\n");
    scanf("%s",pnewnode->stu.name);
    printf("请输入学生的年龄\n");
    scanf("%d",&pnewnode->stu.age);
    printf("请输入学生的分数\n");
    scanf("%s",pnewnode->stu.score);
    printf("学生信息录入成功\n");
	system("pause");
	system("cls");
}

void showstudent()//展示学生信息
{
    node* p=head;
    printf("学号\t姓名\t年龄\t分数\n");
    while(p!=NULL)
    {
        printf("%d\t%s\t%d\t%s\n",p->stu.no,p->stu.name,p->stu.age,p->stu.score);
        p=p->pnext;
    }
    system("pause");
    system("cls");
}

void deletestudent()//删除学生信息
{
    int dno;
    printf("请输入需要删除学生的学号:");
    scanf("%d",&dno);
    if(head->stu.no==dno)
    {
         node* p1=head;
         head=head->pnext;
         free(p1);
        printf("删除成功\n");
        system("pause");
        system("cls");
         return;
    }
    node* p=head;
    node* p2;
    while(p->pnext!=NULL)
    {
        if(p->pnext->stu.no==dno)
        {
            p2=p->pnext;
            p->pnext=p->pnext->pnext;
            free(p2);
            printf("删除成功\n");
            system("pause");
            system("cls");
            return;
        }
        p=p->pnext;
        if(p->pnext==NULL)
        {
            break;
        }
    }
    if(p->pnext==NULL)
    {
        printf("查无此人\n");
        system("pause");
        system("cls");
    }
}

void editstudent()//修改学生信息
{
    int eno;
    printf("请输入需要修改学生的学号:");
    scanf("%d",&eno);
    node* p=head;
    while(p->pnext!=NULL)
    {
        if(p->stu.no==eno)
        {
            printf("请输入学生的学号\n");
            scanf("%d",&p->stu.no);
            printf("请输入学生的姓名\n");
            scanf("%s",p->stu.name);
            printf("请输入学生的年龄\n");
            scanf("%d",&p->stu.age);
            printf("请输入学生的分数\n");
            scanf("%s",p->stu.score);
            printf("学生信息修改成功\n");
            system("pause");
            system("cls");
            return;
        }
        p=p->pnext;
        if(p==NULL)
        {
            break;
        }
    }
    printf("查无此人!\n");
    system("pause");
    system("cls");
}

node* findstudent()//查看学生信息
{
    int fno;
    printf("请输入需要查找学生的学号:");
    scanf("%d",&fno);
    node* p=head;
    while (p!=NULL)
    {
        if(p->stu.no==fno)
        {
            printf("学号\t姓名\t年龄\t分数\n");
            printf("%d\t%s\t%d\t%s\n",p->stu.no,p->stu.name,p->stu.age,p->stu.score);
            system("pause");
            system("cls");
            return p;
        }
        p=p->pnext;
    }
    printf("查无此人\n");
    return NULL;
    system("pause");
    system("cls");
}

void savestudent()
{
	FILE* fp = fopen("D:\\demo02.txt", "w");
    if(fp==NULL)
    {
        printf("打开文件失败\n");
        system("pause");
        system("cls");
        return;
    }
    node* p=head;
    while(p!=NULL)
    {
        fwrite(&p->stu,sizeof(student),1,fp);
        p=p->pnext;
    }
    fclose(fp);
    printf("保存成功\n");
    system("pause");
    system("cls");
}

void readstudent()
{
    FILE* fp=fopen("D:\\demo02.txt","r");
    if(fp==NULL)
    {
        printf("打开文件失败\n");
        system("pause");
        system("cls");
        return;
    }
    student stu1;

    while(fread(&stu1,sizeof(student),1,fp))
    {
        node* p = (node*)malloc(sizeof(node));
        p->pnext=NULL;		
        memcpy(p, &stu1,sizeof(student));
		if (head == NULL)
		{
			head = p;
		}
		else
		{
			p->pnext = head;
			head = p;
		}
    }
    fclose(fp);
    printf("读取成功\n");
    system("pause");
    system("cls");
}

推荐视频

【C/C++课程设计】史上最全最详细的学生成绩管理系统上线啦,完成大学课程设计不是问题!_哔哩哔哩_bilibili

标签:head,--,system,C语言,stu,学生,printf,成绩,pnext
From: https://www.cnblogs.com/lyk-23/p/17871618.html

相关文章

  • Go使用asynq
    asynq是基于reids的队列,支持多种形式消费者packagemainimport( "context" "fmt" "log" "os" "os/signal" "syscall" "time" "github.com/hibiken/asynq")//HandleMsg处理msgfuncHandl......
  • 可编辑Grid 设置字段只读。
    注册EditGridonrowselectedfunctiononRecordSelect(exeContext){//debugger;var_formContext=exeContext.getFormContext();vardisableFields=["name","estimatedclosedate"];lockFields(exeContext,disableFields);}functionlockFiel......
  • 第十三周学习笔记
    第十四章学习笔记1.数据库基础1.1数据库管理系统(DBMS)数据库管理系统的概念和作用。MySQL是一个开源的关系型数据库管理系统(RDBMS)。1.2数据库和表创建数据库:CREATEDATABASEdatabase_name;选择数据库:USEdatabase_name;删除数据库:DROPDATABASEdatabase_nam......
  • vue3使用富文本编辑器wangEditor 5,增加自定义下拉框,并动态改变下拉框内容
    官方资料wangEditor官网效果展示准备工作这里按照wangEditor官网提供的Vue3Demo操作就行,下面的内容可以直接跳过安装yarnadd@wangeditor/editor#或者npminstall@wangeditor/editor--saveyarnadd@wangeditor/editor-for-vue@next#或者npminstall@w......
  • 关于数据同步的探索(三)
    前面已经探索了两种方式。第一种方式,需要增加不少的过程数据,而且对数据的要求比较高。第二种方式,需要手动去同步,经常会忘了同步。而且搜索等因为没办法直接借助成熟的关系型数据库,不是特别方便,性能上估计也会差一点。而且这两种方式其实都绕不开需要手动确认和冲突解决。所以......
  • Vulkan/VkPresentModeKHR
    呈现模式:对于交换链对显示模式的设置应该是最重要的,因为它代表实际显示图像到屏幕的时机。在Vulkan中有四种显示模式:1.VK_PRESENT_MODE_IMMEDIATE_KHR由应用提交的图像立刻被传输到屏幕。这种方式可能导致图像不完整。2.VK_PRESENT_MODE_FIFO_KHR交换链是一个队列,当......
  • Spring Boot 3.2.0 试用CRaC,启动速度提升3到10倍
    CRaC(CoordinatedRestoreatCheckpoint)。CRaC是OpenJDK项目,能够把运行中的JVM,将其状态(包括您的应用程序)存储到磁盘中。然后,在另一个时间点,您可以从保存的检查点将JVM恢复到内存中。通过这种方式,可以启动一个应用程序,预热它,并创建一个检查点。从保存的检查点恢复到内存主要......
  • 2023-2024-1 20231323《计算机基础与程序设计》第十周学习总结
    2023-2024-120231323《计算机基础与程序设计》第十周学习总结作业信息所属课程2023-2024-1-计算机基础与程序设计作业要求2023-2024-1计算机基础与程序设计第周作业作业目标自学教材《计算机科学概论》第12,13,14章《C语言程序设计》第9章并完成云班课测试作业......
  • B. BerSU Ball
    B.BerSUBall排序后考虑\(dp\),\(dp_{i,j}\)表示前\(i\)个男生和前\(j\)个女生能匹配的最大数.\[\begin{aligned}if(|a_i-b_j|\le1)\dp_{i,j}=dp_{i-1,j-1}+1\\else\\\\\\\\dp_{i,j}=\max(dp_{i-1,j},dp_{i,j-1})\end{aligned}\]#include......
  • 【数论】同余 学习笔记
    同余定义费马小定理定理内容:若\(p\)是质数,则有:$\foralla\inZ,a^p\equiva\pmodp$。推论:当\(\gcd(a,p)=1\)时,\(a^{p-1}\equiv1\pmodp\)。裴蜀定理及拓展欧几里德算法裴蜀定理:\(\foralla,b\inZ\),一元二次不定方程\(ax+by=\gcd(a,b)\)有整数......