学生信息管理系统

博主第一次完成一个系统,有些边界设定,输入错误情况没考虑,但是还是想发出来,纪念我的第一个完成的系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node{
    int classroom;
    int number;
    char name[10];
    int sex;
    int age;
    int bianhao;
    char subject[10];
    int credit;
    float test_score;
    float daily_score;
    float score;
    struct node *next;
}student;
student *head;
student *create()//录入信息函数
{
    int num;
    printf("请输入您想要录入的学生人数:");
    scanf("%d", &num);
    student *pf,*pb;
    if ((head = (student *)malloc(sizeof(student))) == NULL)
    {
        printf("录入失败");
        exit(0);
    }
    pf = head;
    for (int i = 0; i < num; i++)
    {
        pb = (student *)malloc(sizeof(student));
        printf("请输入该学生班级;");
        scanf("%d", &pb->classroom);
        printf("请输入该学生学号:");
        scanf("%d", &pb->number);
        printf("请输入该学生姓名:");
        scanf("%s", pb->name);
        printf("请输入该学生性别(男1女0):");
        scanf("%d", &pb->sex);
        printf("请输入该学生年龄:");
        scanf("%d", &pb->age);
        printf("请输入该学生课程编号:");
        scanf("%d", &pb->bianhao);
        printf("请输入该学生课程名称:");
        scanf("%s", pb->subject);
        printf("请输入该学生学分:");
        scanf("%d", &pb->credit);
        printf("请输入该学生考试成绩:");
        scanf("%f", &pb->test_score);
        printf("请输入该学生平时成绩:");
        scanf("%f", &pb->daily_score);
        printf("***********************\n");
        pb->score= pb->test_score*0.7 + pb->daily_score*0.3;
        pb->next = NULL;
        pf->next = pb;
        pf = pb;
    }
    printf("已经录入完成\n");
    return (head);
}
student *search(student *searc)//查询函数
{
    int m;
    char namee[10];
    student *p = searc;
    p = searc->next;
    printf("选择1、姓名查询,选择2、学号查询\n");
    scanf("%d", &m);
    if (m == 1)
        goto usename;
    else goto usenumber;
usename:    
    printf("请输入该生姓名\n");
    scanf("%s", namee);
    while(p!= NULL)
    {
        if (strcmp(p->name, namee)==0)
        {
            printf("该生信息是:\n");
            printf("班级%d\n学号%d\n姓名%s\n性别(男1女0)%d\n年龄%d\n课程编号%d \n课程名称%s \n学分%d \n考试成绩%f \n平时成绩%f\n综合成绩%f\n", p->classroom, p->number, p->name, p->sex, p->age, p->bianhao, p->subject, p->credit, p->test_score, p->daily_score,p->score);
            return(p);
        }
        else p = p->next; 
    }
    printf("未找到该生\n");
    return(p);
usenumber:
    int t;
    printf("请输入该生学号\n");
    scanf("%d", &t);
    while(p != NULL)
    {
        if (p->number==t)
        {
            printf("该生信息是:\n");
            printf("班级%d\n学号%d\n姓名%s\n 性别(男1女0)%d\n 年龄%d\n 课程编号%d \n课程名称%s \n学分%d \n考试成绩%f \n平时成绩%f\n 综合成绩%f\n", p->classroom, p->number, p->name, p->sex, p->age, p->bianhao, p->subject, p->credit, p->test_score, p->daily_score, p->score);
            return(p);
        }

        else p = p->next;  
    }
    printf("未找到该生\n");
    return(p);

}
void change()//信息修改函数
{
    int m;
    student *p;
    printf("请输入该生的学号\n");
    scanf("%d", &m);
    p= head->next;
    while (p != NULL)
    {
        if (p->number == m)
        {
            printf("请输入该学生班级;");
            scanf("%d", &p->classroom);
            printf("请输入该学生学号:");
            scanf("%d", &p->number);
            printf("请输入该学生姓名:");
            scanf("%s", p->name);
            printf("请输入该学生性别(男1女0):");
            scanf("%d", &p->sex);
            printf("请输入该学生年龄:");
            scanf("%d", &p->age);
            printf("请输入该学生课程编号:");
            scanf("%d", &p->bianhao);
            printf("请输入该学生课程名称:");
            scanf("%s", p->subject);
            printf("请输入该学生学分:");
            scanf("%d", &p->credit);
            printf("请输入该学生考试成绩:");
            scanf("%f", &p->test_score);
            printf("请输入该学生平时成绩:");
            scanf("%f", &p->daily_score);
            p->score = p->test_score*0.7 + p->daily_score*0.3;
            printf("修改完成\n");
            break;
        }
        else if(p->next!=NULL)p = p->next;
        else {
            printf("未找到该生\n"); break;
        }
    }
}
void insert()//插入函数
{
    student *p,*q;
    p = head->next;
    while (p->next != NULL)
        p = p->next;
    q = (student *)malloc(sizeof(student));
    printf("请输入该学生班级;");
    scanf("%d", &q->classroom);
    printf("请输入该学生学号:");
    scanf("%d", &q->number);
    printf("请输入该学生姓名:");
    scanf("%s", q->name);
    printf("请输入该学生性别(男1女0):");
    scanf("%d", &q->sex);
    printf("请输入该学生年龄:");
    scanf("%d", &q->age);
    printf("请输入该学生课程编号:");
    scanf("%d", &q->bianhao);
    printf("请输入该学生课程名称:");
    scanf("%s", q->subject);
    printf("请输入该学生学分:");
    scanf("%d", &q->credit);
    printf("请输入该学生考试成绩:");
    scanf("%d", &q->test_score);
    printf("请输入该学生平时成绩:");
    scanf("%d", &q->daily_score);
    q->score = q->test_score*0.7 + q->daily_score*0.3;
    q->next = NULL;
    p->next = q;
    printf("插入成功\n");
}
void del()//数据删除函数
{
    int m;
    student *pf, *pb;
    printf("请输入您要删除的学生学号:");
    scanf("%d", &m);
    pf = head;
    pb = head->next;
    while (pb != NULL)
    {
        if (pb->number == m)
        {
            pf->next = pb->next;
            free(pb);
            printf("删除完成\n");
            break;
        }
        else if (pb->next != NULL) {
            pf = pb;
            pb = pb->next;
        }
        else {
            printf("未找到该生\n");
            break;
        }
    }
}
void main()
{
    int num;
    printf("\t\t***************************************************\n");
    printf("\t\t*          欢迎来到学生成绩管理系统               *\n");
    printf("\t\t***************************************************\n");
    printf("请输入您想进行的功能\n");
    while (1)
    {
        printf("选择1、录入学生信息\n选择2、查询学生信息\n选择3、修改学生数据\n选择4、删除学生信息\n选择5、插入学生数据\n选择6、退出\n");
        scanf("%d", &num);
        switch (num)
        {
           case 1:system("cls");
                  printf("\t\t***************************************************\n");
                  printf("\t\t*          欢迎来到学生成绩管理系统               *\n");
                  printf("\t\t***************************************************\n");
                  create(); break;
           case 2:system("cls");
                  printf("\t\t***************************************************\n");
                  printf("\t\t*          欢迎来到学生成绩管理系统               *\n");
                  printf("\t\t***************************************************\n");
                  search(head); break;
           case 3:system("cls");
                  printf("\t\t***************************************************\n");
                  printf("\t\t*          欢迎来到学生成绩管理系统               *\n");
                  printf("\t\t***************************************************\n");
                  change(); break;
           case 4:system("cls");
                  printf("\t\t***************************************************\n");
                  printf("\t\t*          欢迎来到学生成绩管理系统               *\n");
                  printf("\t\t***************************************************\n");
                  del(); break;
           case 5:system("cls");
                  printf("\t\t***************************************************\n");
                  printf("\t\t*          欢迎来到学生成绩管理系统               *\n");
                  printf("\t\t***************************************************\n"); 
                  insert(); break;
           case 6:exit(0);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值