学生成绩管理代码(c代码)

author:chen ming dong
一个简单的学成成绩管理系统,就是对结构体的简单应用,也没有用指针,只适合初学结构体,想用结构体做一个小项目的人Look
自己还加了一些特殊的功能。。供大家参考

//这段代码实在visualstudio2016环境下写的
// 要移植到 vc6 中 就去掉几个头文件,把scanf_s(,,,)改成scanf(, , )最后那个参数不要
//#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
//定义一个数组,用来存储学生信息
typedef struct student
{
    char name[20];
    int chinese;
    int math;
    int english;
}str;
int i = 0;
// 没有用指针,就用数组,来存储学生信息,最多100人
str a[100];
//input功能
int input()
{
    for (i = 0; i <= 100; i++)
    {
        printf("请输入姓名:");
        scanf_s("%s", a[i].name, sizeof(a[i].name));
        printf("请输入语文成绩:");
        scanf_s("%d", &a[i].chinese);
        printf("请输入数学成绩:");
        scanf_s("%d", &a[i].math);
        printf("请输入外语成绩:");
        scanf_s("%d", &a[i].english);
        char b[20];
        getchar();
        while (1)
        {
            printf("dong是否还想输入  y/n\n");
            scanf_s("%s", &b, sizeof(b));
            getchar();
            if (!strcmp(b, "y") || !strcmp(b, "Y"))
                break;
            else if (!strcmp(b, "n") || !strcmp(b, "N"))
                return i;
            else
            {
                continue;
            }
        }
    }
    return i;
}
//output 功能
void output()
{
    if (i != 0)
    {
        for (int j = 0; j <=i; j++)
        {
            printf("%d-------------\n", j + 1);
            printf("姓名:%s\n", a[j].name);
            printf("语文:%d\n数学:%d\n外语:%d\n\n", a[j].chinese, a[j].math, a[j].english);
        }
    }
    else
        printf("还没有数据\n\n");
}
void chazhao(char c[20])
{
    int j;
    for (j = 0; j <=i; j++)
    {
        if (!strcmp(a[j].name, c))
        {
            printf("%d-------------\n",j+1);
            printf("姓名:%s\n", a[j].name);
            printf("语文:%d\n数学:%d\n外语:%d\n", a[j].chinese, a[j].math, a[j].english);
            break;
        }
    }
    if (j - 1 == i)
    {
        printf("没有这个人\n\n");
    }
}
//允许我用拼音  好久以前巧的代码了(不想改他了),O(∩_∩)O哈哈~
void charu()
{
    int b,c;
    printf("要插入到第几个:");
    scanf_s("%d", &b, sizeof(int));
    for (c=i; b-1 <=c; c--)
    {
        strcpy(a[c + 1].name, a[c].name);
        a[c + 1].chinese = a[c].chinese;
        a[c + 1].math = a[c].math;
        a[c + 1].english = a[c].english;
    }
    i++;
    printf("请输入学生信息:\n");
    printf("请输入姓名:");
    scanf_s("%s", a[b-1].name, sizeof(a[b].name));
    printf("请输入语文成绩:");
    scanf_s("%d", &a[b-1].chinese);
    printf("请输入数学成绩:");
    scanf_s("%d", &a[b-1].math);
    printf("请输入外语成绩:");
    scanf_s("%d", &a[b-1].english);
}
//删除功能
void shanchu()
{
    int c;
    printf("要删除第几个:");
    scanf_s("%d", &c, sizeof(int));
    for (c = c - 1; c < i;c++)
    {
        strcpy(a[c].name, a[c+1].name);
        a[c].chinese = a[c+1].chinese;
        a[c].math = a[c+1].math;
        a[c].english = a[c+1].english;
    }
    i--;
}
//自动生成姓名,这个过程可能有点慢
char* xingming()
{
        char **p;
        char xingming[20];
        xingming[0] = '\0';
        p = (char **)malloc(19 * sizeof(char *));
        for (int b = 0; b<19; b++)
            *(p + b) = (char *)malloc(6 * sizeof(char));
        strcpy(p[0], "明");
        strcpy(p[1], "龙");
        strcpy(p[2], "天");
        strcpy(p[3], "阳");
        strcpy(p[4], "东");
        strcpy(p[5], "牛");
        strcpy(p[6], "强");
        strcpy(p[7], "帅");
        strcpy(p[8], "伟");
        strcpy(p[9], "舞");
        strcpy(p[10], "横");
        strcpy(p[11], "鬼");
        strcpy(p[12], "桂");
        strcpy(p[13], "浩");
        strcpy(p[14], "爽");
        strcpy(p[15], "龍");
        strcpy(p[16], "伊");
        strcpy(p[17], "运");
        strcpy(p[18], "雷");
        srand(time(0));
        int c = rand() % 2+1;
        for (int d = 0; d <= c; d++)
        {
            int j = rand() % 18 + 1;
            strcat(xingming, p[j]);
        };
            return xingming;
}
void yuanshi()
{
    int b;
    srand(time(0));
    for (i = 0; i < 10; i++)
    {
        strcpy(a[i].name, xingming());
        b = rand() % 10+ 1;
        a[i].chinese = b;
        Sleep(350);
        printf(".");
        b = rand() % 100 + 1;
        a[i].math = b;
        Sleep(350);
        printf(".");
        b = rand() % 100 + 1;
        a[i].english = b;
        Sleep(350);
        printf(".");
    }
    i--;
    printf("\n");
}
int main()
{
    int n;
    char name[20];
    while (1)
    {
        printf("1-重新输入成绩\t2-输出所有成绩\t3-查找\t4-插入\t5-自动生成(需要11秒)\t6-删除\t\t9-退出\t\t(请不要乱按)\n");
        scanf_s("%d", &n, 4);
        if (n == 1)
            int i = input();
        if (2 == n)
            output();
        if (3 == n)
        {
            printf("请输入要查找的人:");
            scanf("%s", name, sizeof(name));
            chazhao(name);
        }
        if (4 == n)
        {
            charu();
        }
        if (5 == n)
        {
            yuanshi();
        }
        if (6 == n)
        {
            shanchu();
        }
        if (9 == n)
            break;
    }
    system("pause");
    return 0;
}

一个c文件解决
,,大家,,不要学我啊,,会用多个文件的,尽量用.h文件。。不要让一个文件代码太多。。
其实这点代码也不算多,想象uboot中的Makefile一个文件有3000行的。看着都头晕。
但是初学者要学会用,多文件(哈哈。。本人也是个初学者,希望大家给个评价,也促进我学习)
give my best wishes to you!!

你可能感兴趣的:(C语言)