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

学生信息管理系统-----C语言

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

学生信息管理系统-----C语言

这只是一个简单的版本,还有待于后续更新。

具有以下几个功能:

1.读取文件获取学生信息(特定文件)

2.添加学生信息

3.修改学生信息

4.删除学生信息

5.查找学生信息

6.对学生按成绩进行排序

7.输出所有学生的信息

8.保存学生信息到指定文件

创建学生信息与链表更新

typedef struct Student
{
    char name[100];                                         //姓名  
    char number[100];                                       //学号  
    char sex[10];                                           //性别 
    int age;                                                //年龄  
    int score;                                              //成绩  
    int telephone[100]                                      //手机号
    char place[100]                                         //地址
}stu;
typedef struct LN
{
    stu data;
    struct LN* next;
}Link;
 
void Insert(Link* L, Link* p)                               //插入新的节点  
{
    Link* q = L;
    p->next = q->next;
    q->next = p;
}

​

 载入界面,退出界面,菜单

void gotoxy(int i, int j)       //移动光标
{
    COORD position = { i,j };
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), position);
}

void welocome()                                             //登陆界面  
{
    system("color b1");
    printf("t         ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★n");
    printf("t         ★                                                                         ★n");                                   
    printf("t         ★                                                                         ★n");                                   
    printf("t         ★                                                                         ★n");                                   
    printf("t         ★                        欢迎访问学生信息管理系统!                        ★n");                                   
    printf("t         ★                                                                         ★n");
    printf("t         ★                                                                         ★n");
    printf("t         ★                                                                         ★n");
    printf("t         ★                                                                         ★n");
    printf("t         ★                                                                         ★n");
    printf("t         ★                                                                         ★n");
    printf("t         ★                                                                         ★n");
    printf("t         ★                                                                         ★n");
    printf("t         ★                                                                         ★n");
    printf("t         ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★nn");
    int i, m;
    CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
    gotoxy(46, 7);
    printf("   Loading......n");
    for (i = 10, m = 1; i < 60; i++, m += 2)
    {
        gotoxy(82, 10);
        printf("    ");
        gotoxy(82, 10);
        printf("%-2d%%", m);
        gotoxy(82, 10);
        printf("    ");
        gotoxy(82, 10);
        printf("%-2d%%", m + 1);
        gotoxy(i + 20, 10);
        printf("》");
        Sleep(i + m);
    }
}

void tail()                                                 //退出界面
{
    system("color b1");
	printf("nt                         ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★nn");
	puts("t                           |                                               |");
	puts("t                           |                                               |");
	puts("t                           |           感谢访问学生信息管理系统!           |");
	puts("t                           |                                               |");
	puts("t                           |                                               |");
	puts("n ");
    
}

void menu()                                                 //功能菜单  
{
    system("color f2");
    printf("t                           ________________________________________________ n");
    printf("t                          |                                                |n");
    printf("t                          |                学生信息管理系统                |n");
    printf("t                          |                                                |n");
    printf("t                          |               1、增加学生信息                  |n");
    printf("t                          |               2、删除学生信息                  |n");
    printf("t                          |               3、修改学生信息                  |n");
    printf("t                          |               4、查找学生的信息                |n");
    printf("t                          |               5、按照学生成绩排序              |n");
    printf("t                          |               6、浏览全部学生信息              |n");          
    printf("t                          |               7、保存学生信息到文件            |n");
    printf("t                          |               0、退出系统                      |n");
    printf("t                          |                                                |n");
    printf("t                          |________________________________________________|n");
    printf("请输入您要选择的功能键:");
}

 添加学生

void add(Link* L)                                           //增加新的学生  
{
    system("color f2");
    printf("请输入学生的信息:n");
    printf("学号:");
    scanf("%s", number);
    Link* q = L->next;
    while (q != NULL)
    {
        if (strcmp(q->data.number, number) == 0)            //判断学生是否存在  
        {
            printf("该生已存在n");
            break;
        }
        q = q->next;
    }
    if (q == NULL)
    {
        Link* p= (Link*)malloc(sizeof(Link));;
        p->next = NULL;
        strcpy(p->data.number, number);
        printf("姓名:");
        scanf("%s", name);
        strcpy(p->data.name, name);
        printf("性别:");
        scanf(" %s", sex);
        strcpy(p->data.sex, sex);
        printf("年龄:");
        scanf("%d", &age);
        p->data.age = age;
        printf("总成绩:");
        scanf("%d", &score);
        p->data.score = score;
        Insert(L, p);
    }
    printf("按任意键继续");
    getch();
    system("cls");
}

删除学生

void deletestu(Link* L)                                     //删除学生  
{
    system("color f2");
    printf("请输入您要删除的学生的学号:");
    scanf("%s", number); 
    Link* p, * pre;
    if (L->next == NULL)
    {
        printf("还没有学生信息,请增加学生信息n");
        return;
    }
    pre = L;
    p = pre->next;
    int judge = 0;
    while (p)
    {
        if (strcmp(p->data.number, number) == 0)
        {
            judge = 1;
            pre->next = p->next;
            free(p);
            printf("删除学生成功n");
            break;
        }
        pre = p;
        p = p->next;
    }
    if (judge == 0)
        printf("该生不存在n");
    printf("按任意键继续");
    getch();
    system("cls");
}

修改学生信息

void change(Link* L)                                        //修改学生信息  
{
    int judge = 0, n = 0;
    char a = 0;
    system("color f2");
    printf("请输入您要修改学生的学号:");
    scanf("%s", number);
    Link* q = L->next;
    while (q != NULL)
    {
        if (strcmp(q->data.number, number) == 0)
        {
            judge = 1;
            do 
            {
                printf("请选择您要修改的信息: 1.姓名  2.学号  3.性别  4.年龄  5.总成绩  0.取消n");
                loop: scanf("%d", &n);
                switch (n)
                {
                case 0:
                    break;
                case 1:
                    printf("请输入您要修改的姓名:");
                    scanf("%s", name);
                    printf("修改的姓名为:%sn请确认是否修改[Y/N]", name);
                    getchar();
                    a = getchar();
                    if (a == 'y' || a == 'Y')
                    {
                        strcpy(q->data.name, name);
                        printf("修改成功!n");
                    }
                    else
                        printf("修改失败!n");
                    break;
                case 2:
                    printf("请输入您要修改的学号:");
                    scanf("%s", number);
                    printf("修改的学号为:%sn请确认是否修改[Y/N]", number);
                    getchar();
                    a = getchar();
                    if (a == 'y' || a == 'Y')
                    {
                        strcpy(q->data.number, number);
                        printf("修改成功!n");
                    }
                    else
                        printf("修改失败!n");
                    break;
                case 3:
                    printf("请输入您要修改的性别:");
                    scanf("%s", sex);
                    printf("修改的性别为:%sn请确认是否修改[Y/N]", sex);
                    getchar();
                    a = getchar();
                    if (a == 'y' || a == 'Y')
                    {
                        strcpy(q->data.sex, sex);
                        printf("修改成功!n");
                    }
                    else
                        printf("修改失败!n");
                    break;
                case 4:
                    printf("请输入您要修改的年龄:");
                    scanf("%d", &age);
                    printf("修改的年龄为:%dn请确认是否修改[Y/N]", age);
                    getchar();
                    a = getchar();
                    if (a == 'y' || a == 'Y')
                    {
                        strcpy(q->data.age, age);
                        printf("修改成功!n");
                    }
                    else
                        printf("修改失败!n");
                    break;
                case 5:
                    printf("请输入您要修改的总成绩");
                    scanf("%d", &score);
                    printf("修改的总成绩为:%dn请确认是否修改[Y/N]", score);
                    getchar();
                    a = getchar();
                    if (a == 'y' || a == 'Y')
                    {
                        strcpy(q->data.score, score);
                        printf("修改成功!n");
                    }
                    else
                        printf("修改失败!n");
                    break;
                default:
                    printf("请输入正确的选项n");
                    goto loop;
                    break;
                }
                printf("是否继续修改n按任意键继续修改  按0退出n");
                n = getch()-48;
            } while (n);
        }
        q = q->next;
    }
    if (judge == 0)
    {
        printf("该生不存在n");
    }
    system("cls");
}

查找学生

void find(Link* L)                                          //查找学生 
{
    int flag;
    system("color b1");
    printf("1.按学号查询:n");
    printf("2.按姓名查询:n");
    printf("请输入查询方式:");
    scanf("%d", &flag);
    if (flag == 1) 
    {
        printf("请输入该生学号:");
        scanf("%s", number); 
        Link* q = L->next;
        while (q != NULL)
        {
            if (strcmp(q->data.number, number) == 0)
            {
                printf("姓名:%sn", q->data.name);
                printf("学号:%sn", q->data.number);
                printf("性别:%sn", q->data.sex);
                printf("年龄:%dn", q->data.age);
                printf("总成绩:%dn", q->data.score);
                break;
            }
            q = q->next;
        }
        if (q == NULL)
            printf("该生不存在n");
    }
    else {
        printf("请输入该生姓名:");
        scanf("%s", name);
        Link* q = L->next;
        while (q != NULL)
        {
            if (strcmp(q->data.name, name) == 0)
            {
                printf("姓名:%sn", q->data.name);
                printf("学号:%sn", q->data.number);
                printf("性别:%cn", q->data.sex);
                printf("年龄:%dn", q->data.age);
                printf("总成绩:%dn", q->data.score);
                break;
            }
            q = q->next;
        }
        if (q == NULL)
            printf("该生不存在n");
    }
    getchar();
    printf("按任意键继续");
    getch();
    system("cls");
}

 浏览全部学生信息

void display(Link* L)                                       //浏览全部学生信息  
{
    Link* q = L->next;
    if (q == NULL)
    {
        printf("还没有学生信息,请增加学生信息n");
        return;
    }
    while (q)
    {
        system("color f2");
        printf(" 学号:%s 姓名:%s 性别:%s 年龄:%d  总成绩:%d n", q->data.number, q->data.name, 
            q->data.sex, q->data.age,q->data.score);
        q = q->next;
    }
    printf("按任意键继续");
    getch();
    system("cls");
}

排序

void sort(Link* L)                                         //按成绩排序排序 并输出排序后的结果  
{
    system("color f2");
    Link* q, * p, * r = L->next; 
    if (r == NULL)
    {
        printf("还没有学生信息,请增加学生信息n");
        return;
    }
    while (r)   
    {
        p = r;
        q = r->next;
        Link* tp= (Link*)malloc(sizeof(Link));              //用于排序时暂存数据  
        tp->next = NULL;;
        while (q)
        {
            if (q->data.score > p->data.score)
            {
                //复制q结点信息到tp
                strcpy(tp->data.number, q->data.number);
                strcpy(tp->data.name, q->data.name);
                strcpy(tp->data.sex, q->data.sex);
                tp->data.age = q->data.age;
                tp->data.score = q->data.score;
                //复制p结点信息到q
                strcpy(q->data.number, p->data.number);
                strcpy(q->data.name, p->data.name);
                strcpy(q->data.sex, p->data.sex);
                q->data.age = p->data.age;
                q->data.score = p->data.score;
                //复制tp结点信息到p
                strcpy(p->data.number, tp->data.number);
                strcpy(p->data.name, tp->data.name);
                strcpy(p->data.sex, tp->data.sex);
                p->data.age = tp->data.age;
                p->data.score = tp->data.score;
            }
            q = q->next;
        }
        r = r->next;
    }

    printf("排序后的学生信息是:n");
    display(L);
}

读取文件与保存文件

void readfile(Link* L)                                      //读取文件内容
{
    FILE* fp;
    fp = fopen("student.txt", "rb");                        //打开文件 
    if (fp == NULL)
    {
        printf("文件不存在n");
        return;
    }
    else
    {
        printf("已获取文件内容n");
    }
    int i = 0;
    while (!feof(fp))
    { 
        fscanf(fp, " %s %s %s %d %d", number, name, sex, &age, &score);
        i++;
    }
    fclose(fp);
    
    FILE* FP;
    FP = fopen("student.txt", "rb");                        //打开文件
    int b = i - 1, j = 1;
    while (!feof(FP))
    {
        fscanf(FP, "%s %s %s %d %d", number, name, sex, &age, &score);
        Link* n = (Link*)malloc(sizeof(Link));
        n->next = NULL;
        strcpy(n->data.number, number); 
        strcpy(n->data.name, name);
        strcpy(n->data.sex, sex);
        n->data.age = age;
        n->data.score = score;
        Insert(L, n);                                       //插入新的节点  
        if (j == b)
            break;
        j++;
    }
    fclose(FP);                                             //关闭文件  
}


void save(Link* L)                                          //保存学生信息到文件  
{
    FILE* fp;
    Link* p = L->next;
    int judge = 0;
    if ((fp = fopen("student.txt", "w")) == NULL)           //打开文件
    {
        printf("不能打开此文件!n");
        return;
    }
    while (p)
    {
        fprintf(fp, "%s  %s  %s  %d  %d  n", p->data.number, p->data.name, p->data.sex, p->data.age, p->data.score);
        p = p->next;
    }
    printf("保存成功n");
    fclose(fp);
    getchar();
    printf("按任意键继续");
    getch();
    system("cls");
}

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

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

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