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

xxxx信息管理系统

简介

因为大作业规定的踩分项就那么多,为了不浪费时间 + 得分,就写成这样。现在看看,命名不规范,书写风格糟糕,全塞在一个源代码中······

不过,应付大作业是没问题的

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

实验报告

设计一个成绩管理系统,包括考生成绩数据的增删改查等基本操作,要求编程实现如下菜单驱动的校招成绩管理系统:
  • 使用链表录入每个考生的考号、姓名和笔试面试综测的成绩;
  • 计算每个考生的总分;
  • 按总成绩升序或降序排名;
  • 按考号查询考生排名及其考试成绩;
  • 按姓名修改考试成绩;
  • 输出每个考生的考号、姓名、成绩,以及总分;
  • 将每个考生的记录信息写入文件;
  • 从文件读入每个考生的信息;
要求程序运行后先显示如下菜单,并提示用户输入选项:
* 1.成绩录入
* 2.数据修改
* 3.数据查询
* 4.数据删除
* 5.排名
* 6.打印
* 7.保存
* 8.读入
* 0.退出
* 请选择:
然后,根据用户输入的选项执行相应的操作。
输入输出设计
  • 程序输入数据包括选择值,考生信息。选择值为整型变量,为了方便搭配switch语句.考生信息中,姓名,性别,考号为字符串类型,成绩则为数组,方便访问.对考号的输入格式有检查函数,对非法数据输入有检测.

  • 在保存读入的函数中,对文件指针fp有打开失败的检查及提示.使用的数据类型—-链表,也有对动态内存申请不成功的检查及提示.搜索函数,修改函数和排序函数的参数为链表的头节点,函数都会对链表进行检查,特判无元素和只有一个元素.

  • 输出格式与提示格式相同,为了一个大型表格,方便阅读,模拟了一个系统界面,提示用户的体验.函数封装有开始提示及结束提示,可以方便用户使用.另外,增加了一个模拟”初始化”的功能,增加趣味性,让系统界面更加仿真.为了防止出现错误,链表在最后会进行释放,文件在打开后会关闭,提升了程序的稳定性.防御性的代码较多.

代码

点击查看代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#define maxchar 10
#define maxid 20

typedef struct student
{
    char name[maxchar];
    char id[maxid];
    char sex[3];
    int score[5];
    struct student* next;
}STU;//&#x5B9A;&#x4E49;&#x4E00;&#x4E2A;&#x53EF;&#x4EE5;&#x5B58;&#x653E;&#x8003;&#x751F;&#x4FE1;&#x606F;&#x7684;  ****&#x94FE;&#x8868;

void Stu_Input(STU* head);//&#x8F93;&#x5165;&#x4FE1;&#x606F;
void Stu_Output(STU* head);//&#x6253;&#x5370;&#x6210;&#x7EE9;&#x5355;
void Stu_Search(STU* head);//&#x6839;&#x636E;&#x8003;&#x53F7;&#x67E5;&#x8BE2;****&#x67E5;&#x627E;&#x7B97;&#x6CD5; ****&#x679A;&#x4E3E;&#x7B97;&#x6CD5;
void change(STU* head);//&#x6839;&#x636E;&#x59D3;&#x540D;&#x67E5;&#x627E;&#x5230;&#x4EBA;&#x4EE5;&#x540E;&#x4FEE;&#x6539;
void Stu_delete(STU* head);//&#x6839;&#x636E;&#x59D3;&#x540D;&#x5220;&#x9664;&#x8003;&#x751F;
int JudgeID(char mid[]);//&#x5224;&#x65AD;&#x8003;&#x53F7;&#x662F;&#x5426;&#x8F93;&#x5165;&#x6B63;&#x786E;
void save_file(STU* head);//&#x4FDD;&#x5B58;&#x94FE;&#x8868;&#x5185;&#x5BB9;&#x5230;&#x6587;&#x4EF6;****&#x6587;&#x4EF6;&#x64CD;&#x4F5C;
STU* free_head(STU* head);//&#x91CA;&#x653E;&#x94FE;&#x8868;
void sort(STU *head,int (*cmp)(int,int));//&#x5192;&#x6CE1;&#x6392;&#x5E8F;
int Ascend(int x,int y);//&#x5347;&#x5E8F;
int Descend(int x,int y);//&#x964D;&#x5E8F;
void sortWindows(STU* head);
void load_file(STU* head);//&#x8BFB;&#x53D6;&#x6587;&#x4EF6;

int main()
{
    int select = 1;//&#x9009;&#x62E9;
    STU *head=(STU*)malloc(sizeof(STU));//&#x5B9A;&#x4E49;&#x94FE;&#x8868;&#x5934;
    head->next = NULL;
    system ("color f0");//&#x767D;&#x8272;&#x80CC;&#x666F;
    /*&#x4EA4;&#x4E92;&#x754C;&#x9762;*/
    while (select != 0)
    {
        printf("\n\n");
        printf("***************************************\n");
        printf("**            &#x8003;&#x8BD5;&#x4FE1;&#x606F;&#x7BA1;&#x7406;           **\n");
        printf("**===================================**\n");
        printf("**            1. &#x6210;&#x7EE9;&#x5F55;&#x5165;            **\n");
        printf("**            2. &#x6570;&#x636E;&#x4FEE;&#x6539;            **\n");
        printf("**            3. &#x6570;&#x636E;&#x67E5;&#x8BE2;            **\n");
        printf("**            4. &#x6570;&#x636E;&#x5220;&#x9664;            **\n");
        printf("**            5. &#x6392;    &#x540D;            **\n");
        printf("**            6. &#x6253;    &#x5370;            **\n");
        printf("**            7. &#x4FDD;    &#x5B58;            **\n");
        printf("**            8. &#x8BFB;    &#x53D6;            **\n");
        printf("***************************************\n");
        printf("**            0. &#x9000;    &#x51FA;            **\n");
        printf("***************************************\n");
        printf("&#x8BF7;&#x9009;&#x62E9;&#xFF1A;");
        scanf("%d",&select);
        switch(select){
            case 1:
                Stu_Input(head);
                break;
            case 2:
                change(head);
                break;
            case 3:
                Stu_Search(head);
                break;
            case 4:
                Stu_delete(head);
                break;
            case 5:
                sortWindows(head);
                break;
            case 6:
                Stu_Output(head);
                break;
            case 7:
                save_file(head);
                break;
            case 8:
                load_file(head);
                break;
            case 0:
                break;
            default:
                break;
        }
    }
    save_file(head);//&#x81EA;&#x52A8;&#x4FDD;&#x5B58;&#x529F;&#x80FD;
    free_head(head);//&#x91CA;&#x653E;&#x94FE;&#x8868;
    return 0;
}

/*&#x8F93;&#x5165;*/
void Stu_Input(STU* head)
{
    system("cls");//&#x6E05;&#x5C4F;
    STU* p = (STU*)malloc(sizeof(STU));//&#x7533;&#x8BF7;&#x5185;&#x5B58;
    STU* q=NULL;
    if (p == NULL)
    {
        printf("&#x7533;&#x8BF7;&#x5185;&#x5B58;&#x5931;&#x8D25;!\n"); return;//&#x7533;&#x8BF7;&#x5185;&#x5B58;&#x5931;&#x8D25;&#x5219;&#x9000;&#x51FA;&#x7A0B;&#x5E8F;
    }
    p->next = NULL;//&#x4F7F;&#x94FE;&#x8868;&#x672B;&#x5C3E;&#x4E3A;&#x7A7A;
    int j,sum=0,temp;
    char leason[4][maxchar] = { "&#x7B14;&#x8BD5;","&#x4E00;&#x9762;","&#x4E8C;&#x9762;","&#x7EFC;&#x6D4B;" };//&#x540D;&#x5B57;
    char mname[maxchar] = { 0 };//&#x6682;&#x5B58;&#x7684;&#x540D;&#x5B57;
    char mid[maxid] = { 0 };//&#x6682;&#x5B58;&#x7684;id&#x3002;
    int mscore[5];//&#x5B58;&#x653E;&#x5404;&#x79D1;&#x7684;&#x6210;&#x7EE9;
    char msex[3] = { 0 };//&#x6027;&#x522B;
    printf("&#x521D;&#x59CB;&#x5316;&#x4E2D;&#xFF1A;");
    for(j=1; j<=4; j++) { printf("."); sleep(500); } printf("\n"); printf("** 成绩录入系统: **\n"); printf("***************************************\n"); printf("请输入名字:"); scanf("%s", mname); while (1) printf("请输入考号(4位):"); mid); if (judgeid(mid) !="0)" printf("你输入的考号有问题,请重新输入"); else break; printf("请输入性别:"); msex); for (j="0;" j < 4; printf("请输入%s的成绩:", leason[j]); scanf("%d", &mscore[j]); *将暂存的存到链表里* strcpy(p->name, mname);
    strcpy(p->id, mid);
    strcpy(p->sex, msex);
    /*&#x5C06;&#x5206;&#x6570;&#x5B58;&#x5230;&#x94FE;&#x8868;&#x91CC;*/
    for (j = 0; j < 4; j++)
    {
        p->score[j] = mscore[j];
        sum+=mscore[j];
    }
    p->score[4]=sum;
    q = head->next;
    if (q == NULL)//&#x5224;&#x65AD;&#x5982;&#x679C;&#x94FE;&#x8868;&#x5934;&#x4E3A;&#x7A7A;&#x5219;&#x5B58;&#x5230;&#x94FE;&#x8868;&#x5934;
    {
        head->next = p;
    }else
    {
        /*&#x627E;&#x5230;&#x94FE;&#x8868;&#x7684;&#x672B;&#x5C3E;*/
        while (q->next!=NULL)
        {
            q = q->next;
        }
        q->next = p;
    }
    printf("&#x8F93;&#x5165;&#x6210;&#x529F;&#xFF01;\n");
    printf("&#x662F;&#x5426;&#x7EE7;&#x7EED;&#x8F93;&#x5165;&#xFF1F;&#x5982;&#x679C;&#x662F;&#x5219;&#x8F93;&#x5165;1&#xFF0C;&#x4E0D;&#x662F;&#x5219;&#x8F93;&#x5165;&#x5176;&#x4ED6;&#x6570;&#x5B57;.");
    scanf("%d",&temp);
    if(temp==1)
    {
        Stu_Input(head);//                        ****&#x9012;&#x5F52;&#x51FD;&#x6570;
    }else
    {
        return;
    }
}

/*&#x8F93;&#x51FA;*/
void Stu_Output(STU *head)
{
    system("cls");//&#x6E05;&#x5C4F;
    int j;
    STU* q=head->next;
    printf("&#x521D;&#x59CB;&#x5316;&#x4E2D;&#xFF1A;");
    for(j=1; j<=4; j++) { printf("."); sleep(500); } printf("\n"); printf("** 打印系统: **\n"); printf("***************************************\n"); printf("\n\n姓名\t性别 考号\t笔试\t一面\t二面\t综测\t总分\t\n"); while(q) printf("%s\t", q->name);
        printf("%-5s", q->sex);
        printf("%-10s\t", q->id);
        q->score[4] = 0;
        for (j = 0; j < 5; j++)
        {
            printf("%d\t", q->score[j]);
            q->score[4] += q->score[j];//&#x8BA1;&#x7B97;&#x603B;&#x6210;&#x7EE9;
        }
        printf("\n");
        q = q->next;
    }
    printf("\n");
}

/*&#x67E5;&#x627E;*/
void Stu_Search(STU *head)
{
    system("cls");
    STU* q = head->next;
    char m_id[maxid] = { 0 };//&#x5B9A;&#x4E49;&#x8003;&#x53F7;
    int j;
    int myflag = 1;//&#x5224;&#x65AD;&#x5F53;&#x627E;&#x4E0D;&#x5230;&#x8BE5;&#x8003;&#x751F;&#x65F6;&#x662F;&#x5426;&#x8F93;&#x5165;
    printf("&#x521D;&#x59CB;&#x5316;&#x4E2D;&#xFF1A;");
    for(j=1; j<=4; j++) { printf("."); sleep(500); } printf("\n"); printf("** 查询系统: **\n"); printf("***************************************\n"); printf("请输入你要查找的考号:"); scanf("%s", m_id); printf("\n\n"); while(q) if (strcmp(q->id, m_id) == 0)
        {
            break;
        }
        q = q->next;
    }
    if (q == NULL)
    {
        printf("&#x6CA1;&#x627E;&#x5230;&#x8BE5;&#x8003;&#x751F;");
        printf("&#x4F60;&#x8981;&#x8F93;&#x5165;&#x5417;&#xFF1F;1--&#x8F93;&#x5165;&#xFF0C;2--&#x653E;&#x5F03;\n");//&#x5224;&#x65AD;
        scanf("%d", &myflag);
        if (myflag != 1)
        {
            printf("&#x6210;&#x529F;&#x9000;&#x51FA;!\n");
            return;
        }
        else
        {
            Stu_Input(head);//&#x8C03;&#x7528;&#x8F93;&#x5165;&#x51FD;&#x6570;
            return;
        }
    }
    printf("&#x8BE5;&#x8003;&#x751F;&#x7684;&#x6210;&#x7EE9;&#x4E3A;:\n");
    printf("&#x59D3;&#x540D;\t&#x6027;&#x522B; &#x8003;&#x53F7;\t&#x7B14;&#x8BD5;\t&#x4E00;&#x9762;\t&#x4E8C;&#x9762;\t&#x7EFC;&#x6D4B;\t&#x603B;&#x5206;\t\n");
    printf("%s\t", q->name);
    printf("%-5s", q->sex);
    printf("%-10s\t", q->id);
    q->score[4] = 0;
    /*&#x8BA1;&#x7B97;&#x603B;&#x5206;&#x5E76;&#x4E14;&#x5B58;&#x5165;*/
    for (j = 0; j < 5; j++)
    {
        printf("%d\t", q->score[j]);
        q->score[4] += q->score[j];
    }
    printf("\n");
}

/*&#x4FEE;&#x6539;*/
void change(STU *head)
{
    system("cls");
    STU* q = head->next;
    int j;
    int flag = 0;//&#x5B9A;&#x4E49;flag&#x53CD;&#x5E94;&#x662F;&#x5426;&#x627E;&#x5230;&#x8BE5;&#x8003;&#x751F;
    char m_name[maxchar] = { 0 };
    int  change_score = 0;
    int myflag = 1;//&#x7528;&#x4E8E;&#x5224;&#x65AD;&#x5982;&#x679C;&#x627E;&#x4E0D;&#x5230;&#x8BE5;&#x8003;&#x751F;&#x662F;&#x5426;&#x8F93;&#x5165;&#x3002;
    printf("&#x521D;&#x59CB;&#x5316;&#x4E2D;&#xFF1A;");
    for(j=1; j<=4; j++) { printf("."); sleep(500); } printf("\n"); printf("** 修改系统: **\n"); printf("***************************************\n"); printf("请输入你要修改的考生名字:"); scanf("%s", m_name); while(q!="NULL)" if (strcmp(q->name, m_name) == 0)//&#x5B57;&#x7B26;&#x4E32;&#x5339;&#x914D;&#x51FD;&#x6570;
        {
            flag = 1;
            break;
        }
        q = q->next;
    }
    if (flag)
    {
        printf("&#x8BE5;&#x8003;&#x751F;&#x5F53;&#x524D;&#x7684;&#x6210;&#x7EE9;&#x4E3A;:\n");
        printf("&#x59D3;&#x540D;\t&#x6027;&#x522B; &#x8003;&#x53F7;\t&#x7B14;&#x8BD5;\t&#x4E00;&#x9762;\t&#x4E8C;&#x9762;\t&#x7EFC;&#x6D4B;\t&#x603B;&#x5206;\t\n");
        printf("%s\t", q->name);
        printf("%-5s", q->sex);
        printf("%-10s\t", q->id);
        q->score[4] = 0;
        for (j = 0; j < 5; j++)
        {
            printf("%df\t", q->score[j]);
            q->score[4] += q->score[j];
        }
        printf("\n");
        printf("&#x8BF7;&#x8F93;&#x5165;&#x4F60;&#x8981;&#x4FEE;&#x6539;&#x7684;&#x6210;&#x7EE9;:\n");
        printf("1-&#x7B14;&#x8BD5;,2-&#x4E00;&#x9762;&#xFF0C;3-&#x4E8C;&#x9762;&#xFF0C;4-&#x7EFC;&#x6D4B;\n");
        scanf("%d", &change_score);
        while (change_score)
        {
            switch (change_score)//switch&#x8BED;&#x53E5;&#x5206;&#x652F;&#x4FEE;&#x6539;&#x65B9;&#x9762;
            {
            case 1:
                printf("&#x8BF7;&#x8F93;&#x5165;&#x4F60;&#x8981;&#x4FEE;&#x6539;&#x7684;&#x7B14;&#x8BD5;&#x6210;&#x7EE9;:");
                scanf("%d", &q->score[0]);
                printf("&#x662F;&#x5426;&#x8981;&#x7EE7;&#x7EED;&#x4FEE;&#x6539;&#xFF0C;&#x5982;&#x679C;&#x662F;&#x8BF7;&#x8F93;&#x5165;&#x4FEE;&#x6539;&#x79D1;&#x76EE;&#x7684;&#x5E8F;&#x53F7;&#xFF0C;&#x5426;&#x5219;&#x8F93;&#x5165;&#x96F6;\n");
                printf("1-&#x7B14;&#x8BD5;,2-&#x4E00;&#x9762;&#xFF0C;3-&#x4E8C;&#x9762;&#xFF0C;4-&#x7EFC;&#x6D4B;\n");
                scanf("%d", &change_score);
                break;
            case 2:
                printf("&#x8BF7;&#x8F93;&#x5165;&#x4F60;&#x8981;&#x4FEE;&#x6539;&#x7684;&#x4E00;&#x9762;&#x6210;&#x7EE9;:");
                scanf("%d", &q->score[1]);
                printf("&#x662F;&#x5426;&#x8981;&#x7EE7;&#x7EED;&#x4FEE;&#x6539;&#xFF0C;&#x5982;&#x679C;&#x662F;&#x8BF7;&#x8F93;&#x5165;&#x4FEE;&#x6539;&#x79D1;&#x76EE;&#x7684;&#x5E8F;&#x53F7;&#xFF0C;&#x5426;&#x5219;&#x8F93;&#x5165;&#x96F6;\n");
                printf("1-&#x7B14;&#x8BD5;,2-&#x4E00;&#x9762;&#xFF0C;3-&#x4E8C;&#x9762;&#xFF0C;4-&#x7EFC;&#x6D4B;\n");
                scanf("%d", &change_score);
                break;
            case 3:
                printf("&#x8BF7;&#x8F93;&#x5165;&#x4F60;&#x8981;&#x4FEE;&#x6539;&#x7684;&#x4E8C;&#x9762;&#x6210;&#x7EE9;:");
                scanf("%d", &q->score[2]);
                printf("&#x662F;&#x5426;&#x8981;&#x7EE7;&#x7EED;&#x4FEE;&#x6539;&#xFF0C;&#x5982;&#x679C;&#x662F;&#x8BF7;&#x8F93;&#x5165;&#x4FEE;&#x6539;&#x79D1;&#x76EE;&#x7684;&#x5E8F;&#x53F7;&#xFF0C;&#x5426;&#x5219;&#x8F93;&#x5165;&#x96F6;\n");
                printf("1-&#x7B14;&#x8BD5;,2-&#x4E00;&#x9762;&#xFF0C;3-&#x4E8C;&#x9762;&#xFF0C;4-&#x7EFC;&#x6D4B;\n");
                scanf("%d", &change_score);
                break;
            case 4:
                printf("&#x8BF7;&#x8F93;&#x5165;&#x4F60;&#x8981;&#x4FEE;&#x6539;&#x7684;&#x7EFC;&#x6D4B;&#x6210;&#x7EE9;:");
                scanf("%d", &q->score[3]);
                printf("&#x662F;&#x5426;&#x8981;&#x7EE7;&#x7EED;&#x4FEE;&#x6539;&#xFF0C;&#x5982;&#x679C;&#x662F;&#x8BF7;&#x8F93;&#x5165;&#x4FEE;&#x6539;&#x79D1;&#x76EE;&#x7684;&#x5E8F;&#x53F7;&#xFF0C;&#x5426;&#x5219;&#x8F93;&#x5165;&#x96F6;\n");
                printf("1-&#x7B14;&#x8BD5;,2-&#x4E00;&#x9762;&#xFF0C;3-&#x4E8C;&#x9762;&#xFF0C;4-&#x7EFC;&#x6D4B;\n");
                scanf("%d", &change_score);
                break;
            default:
                printf("&#x4F60;&#x8F93;&#x5165;&#x7684;&#x9009;&#x62E9;&#x6709;&#x95EE;&#x9898;&#xFF0C;&#x8BF7;&#x91CD;&#x65B0;&#x8F93;&#x5165;:");//&#x5BF9;&#x975E;&#x6CD5;&#x8F93;&#x5165;&#x5224;&#x65AD;
                break;
            }
        }
        printf("&#x8BE5;&#x8003;&#x751F;&#x4FEE;&#x6539;&#x540E;&#x7684;&#x6210;&#x7EE9;&#x4E3A;:\n");
        printf("&#x59D3;&#x540D;\t&#x6027;&#x522B; &#x8003;&#x53F7;\t&#x7B14;&#x8BD5;\t&#x4E00;&#x9762;\t&#x4E8C;&#x9762;\t&#x7EFC;&#x6D4B;\t&#x603B;&#x5206;\t\n");
        printf("%s\t", q->name);
        printf("%-5s", q->sex);
        printf("%-10s\t", q->id);
        q->score[4] = 0;
        for (j = 0; j < 5; j++)
        {
            printf("%d\t", q->score[j]);
            q->score[4] += q->score[j];
        }
        printf("\n");
    }else
    {
        printf("&#x76EE;&#x524D;&#x6CA1;&#x6709;&#x8BE5;&#x8003;&#x751F;&#x3002;\n");
        printf("&#x4F60;&#x8981;&#x8F93;&#x5165;&#x5417;&#xFF1F;1--&#x8F93;&#x5165;&#xFF0C;2--&#x653E;&#x5F03;\n");
        scanf("%d", &myflag);
        if (myflag != 1)
        {
            printf("&#x6210;&#x529F;&#x9000;&#x51FA;!\n");
            return;
        }
        else
        {
            Stu_Input(head);
            return;
        }
    }
}
// &#x9884;&#x8BFB;&#x6587;&#x4EF6;
void load_file(STU* head)
{
    system("cls");//&#x6E05;&#x5C4F;
    int j;
    STU* q= head;
    static char file1[] = "./sometext.txt";
    STU temp;
    FILE* fp = fopen(file1,"r");

    if(fp == NULL)
    {
        printf("&#x6587;&#x4EF6;&#x6253;&#x5F00;&#x5931;&#x8D25;!\n\n");
        return ;
    }

    while(q->next != NULL)//&#x627E;&#x5230;&#x94FE;&#x8868;&#x672B;&#x5C3E;
    {
        q = q->next;
    }

    fscanf(fp,"%*[^\n]"); //&#x8DF3;&#x8FC7;&#x7B2C;&#x4E00;&#x884C;
    while(fscanf(fp,"%s %s %s %d %d %d %d %d",temp.name, temp.sex, temp.id, &temp.score[0],
        &temp.score[1], &temp.score[2], &temp.score[3], &temp.score[4]) != EOF)
    {
        STU* p = (STU*)malloc(sizeof(STU));//&#x7533;&#x8BF7;&#x5185;&#x5B58;
        strcpy(p->name, temp.name);
        strcpy(p->id, temp.id);
        strcpy(p->sex, temp.sex);
        /*&#x5C06;&#x5206;&#x6570;&#x5B58;&#x5230;&#x94FE;&#x8868;&#x91CC;*/
        for (j = 0; j <= 4; j++) { p->score[j] = temp.score[j];
        }

        p->next = NULL;
        q->next = p;

        q = q->next;
    }
    fclose(fp);
    printf("&#x6587;&#x4EF6;&#x8BFB;&#x53D6;&#x6210;&#x529F;&#xFF01;\n");
    return;
}
/*&#x4FDD;&#x5B58;&#x5230;&#x6587;&#x4EF6;*/
void save_file(STU* head)
{
    system("cls");//&#x6E05;&#x5C4F;
    int j;
    STU* q= head->next;

    FILE* fp;
    fp=fopen("sometext.txt", "wt");
    if (fp == NULL)
    {
        printf("&#x6587;&#x4EF6;&#x6253;&#x5F00;&#x5931;&#x8D25;!\n");//&#x7A0B;&#x5E8F;&#x5065;&#x58EE;&#x6027;
        return ;
    }
    if (q == NULL)
    {
        printf("&#x65E0;&#x8003;&#x751F;&#x4FE1;&#x606F;!\n");//&#x7A0B;&#x5E8F;&#x5065;&#x58EE;&#x6027;
        return ;
    }
    fprintf(fp, "&#x59D3;&#x540D;\t&#x6027;&#x522B;\t&#x8003;&#x53F7;\t\t&#x7B14;&#x8BD5;\t&#x4E00;&#x9762;\t&#x4E8C;&#x9762;\t&#x7EFC;&#x6D4B;\t&#x603B;&#x5206;\t\n");
    while (q != NULL)
    {
        fprintf(fp,"%s\t", q->name);
        fprintf(fp,"%-5s\t", q->sex);
        fprintf(fp,"%-10s\t\t", q->id);
        q->score[4] = 0;
        for (j = 0; j < 5; j++)
        {
            fprintf(fp,"%d\t", q->score[j]);
            q->score[4] += q->score[j];
        }
        fprintf(fp,"\n");
        q = q->next;
    }
    fclose(fp);
    printf("&#x6587;&#x4EF6;&#x4FDD;&#x5B58;&#x6210;&#x529F;!\n");//&#x63D0;&#x793A;
}

/*&#x5220;&#x9664;*/
void Stu_delete(STU* head)
{
    system("cls");//&#x6E05;&#x5C4F;
    int i;
    int myflag;
    STU* q =head;
    STU* p = head->next;
    char mname[maxchar] = {0};
    printf("&#x521D;&#x59CB;&#x5316;&#x4E2D;&#xFF1A;");
    for(i=1; i<=4; i++) { printf("."); sleep(500); } printf("\n"); printf("** 删除系统: **\n"); printf("***************************************\n"); printf("请输入你要删除的考生名字:"); scanf("%s", mname); for (; p!="NULL" ;p="p-">next,q=q->next)//                  ****&#x679A;&#x4E3E;
    {
        if (strcmp(p->name, mname) == 0)
        {
            break;
        }
    }

    if (p==NULL)
    {
        printf("&#x6CA1;&#x6709;&#x8BE5;&#x8003;&#x751F;\n");//&#x5065;&#x58EE;&#x6027;&#x63D0;&#x793A;
    }else
    {
        printf("&#x8BE5;&#x8003;&#x751F;&#x7684;&#x6210;&#x7EE9;&#x4E3A;&#xFF1A;\n");
        printf("&#x59D3;&#x540D;\t&#x6027;&#x522B; &#x8003;&#x53F7;\t&#x7B14;&#x8BD5;\t&#x4E00;&#x9762;\t&#x4E8C;&#x9762;\t&#x7EFC;&#x6D4B;\t&#x603B;&#x5206;\t\n");
        printf("%s\t", p->name);
        printf("%-5s", p->sex);
        printf("%-10s\t", p->id);
        p->score[4] = 0;
        for (i = 0; i < 5; i++)
        {
            printf("%d\t", p->score[i]);
        }
        printf("\n");
        printf("&#x662F;&#x5426;&#x5220;&#x9664;&#x8BE5;&#x8003;&#x751F;&#xFF1F;1--&#x662F;&#xFF0C;2--&#x5426;\n");
        scanf("%d", &myflag);
        if (myflag == 1)
        {
            if (p->next==NULL)
            {
                q->next = NULL;;
            }else
            {
                q->next=p->next;
            }
            free(p);
            printf("&#x5220;&#x9664;&#x5B8C;&#x6BD5;\n");
        }else
        {
            printf("&#x5DF2;&#x4FDD;&#x7559;\n");
        }
    }
}

/*&#x5224;&#x65AD;&#x8003;&#x53F7;&#x8F93;&#x5165;&#x662F;&#x5426;&#x6B63;&#x786E;*/
int JudgeID(char mid[])
{
    int i;
    for (i = 0; i  < strlen(mid); i++)
    {
        if (mid[i] < '0' || mid[i] > '9')   return 1;
    }

    return 0;
}

STU* free_head(STU* head)
{
    STU *p=head->next;
    STU *temp=head;
    while(p!=NULL)
    {
        temp=p;
        p=p->next;
        free(temp);//&#x7533;&#x8BF7;&#x540E;&#x518D;&#x91CA;&#x653E;
    }
    head->next=NULL;
    printf("&#x94FE;&#x8868;&#x91CA;&#x653E;&#x5B8C;&#x6BD5;&#xFF01;&#x6309;&#x4EFB;&#x610F;&#x952E;&#x8FD4;&#x56DE;.\n");

    return head;
}
int Descend(int x,int y)
{
    if(x<y) { return 0; }else 1; } int ascend(int x,int y) if(x<y) void sort(stu *head,int(*cmp)(int,int)) i; printf("初始化中:"); for(i="1;" i<="4;" i++) 模拟系统 printf("."); sleep(500); if(head->next==NULL)//&#x7A0B;&#x5E8F;&#x7684;&#x5065;&#x58EE;&#x6027;
    {
        printf("&#x4FE1;&#x606F;&#x4E3A;&#x7A7A;!\n");
        return;
    }
    if(head->next->next==NULL)//&#x7A0B;&#x5E8F;&#x7684;&#x5065;&#x58EE;&#x6027;
    {
        printf("&#x53EA;&#x6709;&#x4E00;&#x7EC4;&#x4FE1;&#x606F;!\n");
        return;
    }
    STU *p1;
    STU *p2;
    int temp;//&#x4EA4;&#x6362;
    char tempname[maxchar],tempid[maxid],tempsex[3];

    for (p1=head->next; p1->next!=NULL;p1=p1->next)
    {
         for (p2=p1->next; p2!=NULL; p2=p2->next)
         {
            if ((*cmp)(p1->score[4],p2->score[4]))
            {
                for(i=0;i<5;i++) 交换成绩 { temp="p1-">score[i];
                    p1->score[i]=p2->score[i];
                    p2->score[i]=temp;
                }
                strcpy(tempname,p1->name);//&#x4EA4;&#x6362;&#x540D;&#x5B57;
                strcpy(p1->name,p2->name);
                strcpy(p2->name,tempname);

                strcpy(tempid,p1->id);//&#x4EA4;&#x6362;&#x8003;&#x53F7;
                strcpy(p1->id,p2->id);
                strcpy(p2->id,tempid);

                strcpy(tempsex,p1->sex);//&#x4EA4;&#x6362;&#x6027;&#x522B;
                strcpy(p1->sex,p2->sex);
                strcpy(p2->sex,tempsex);

            }
        }
    }
    printf("&#x6392;&#x540D;&#x6210;&#x529F;&#xFF01;\n");
}
void sortWindows(STU* head)
{
    system("cls");
    int i,select=1;
    printf("&#x521D;&#x59CB;&#x5316;&#x4E2D;&#xFF1A;");//&#x6A21;&#x62DF;&#x7CFB;&#x7EDF;
    for(i=1; i<=4; i++) { printf("."); sleep(500); } printf("\n"); printf("** 排序系统: **\n"); 交互式界面 printf("***************************************\n"); 1. 按总成绩升序排名 2. 按总成绩降序排名 0. 退出 while(select!="0)//&#x9009;&#x62E9;" printf("请选择:"); scanf("%d",&select); switch(select) case 1: sort(head,descend); 调用排序函数 break; 2: sort(head,ascend); 应用函数指针 0: printf("退出成功!\n"); default: printf("请重新输入:"); 防御性,可重复性 return ; < code></=4;></5;i++)></y)></=4;></=></=4;></=4;></=4;></=4;></conio.h></windows.h></stdlib.h></string.h></stdio.h>

Original: https://www.cnblogs.com/Az1r/p/16666358.html
Author: 江水为竭
Title: C语言大作业-学生信息管理系统

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/683749/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球