| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1873 人关注过本帖
标题:学C一个月。做了一个简单的学生成绩管理系统。欢迎前来测试。
只看楼主 加入收藏
a85703559
Rank: 2
等 级:论坛游民
帖 子:22
专家分:43
注 册:2011-4-11
结帖率:100%
收藏
 问题点数:0 回复次数:20 
学C一个月。做了一个简单的学生成绩管理系统。欢迎前来测试。
由于还没看链表。所以程序没使用到链表。
这是本人学了C将近一个月后,花了一天做的。
欢迎大家前来测试。
此管理系统能实现1.载入成绩。2.成绩统计。3.显示成绩。4.查询成绩。
5.录入成绩。6.修改成绩。7.保存成绩。8.删除成绩。9.成绩排名。
代码VS2010已通过。
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int man;//学生人数
long long int t;//学生号数
char s[20];//文件名
struct student
{
    long long int id;
    char name[8];
    char sex[2];
    int n1;
    int n2;
    int n3;
    int n4;
    int zong;
    float ping;
}stu[1000], temp;
void menu(void)
{
    int i;
    printf("----------------------------------by HelΙo-----------------------------------\n");
    printf("              ");
    for (i = 0; i< 50; i++)
        printf("*");
    printf("\n");
    printf("              #                                                #\n");
    printf("              #    1.载入成绩     2.成绩统计     3.显示成绩    #\n");
    printf("              #    4.查询成绩     5.录入成绩     6.修改成绩    #\n");
    printf("              #    7.保存成绩     8.删除成绩     9.成绩排名    #\n");
    printf("              #          ‘+’键退出     按0键返回菜单         #\n");
    printf("              #                                                #\n");
    printf("              ");
    for (i = 0; i < 50; i++)
        printf("*");
    printf("\n");
}
void zairu(void)
{
    FILE *wj;
    int i;
    man = 0;
    printf("请输入要打开的文件,若不存在则创建.(文件名应包含扩展名):\n");
    scanf("%s", s);
    if ((wj = fopen(s, "at+")) == NULL)
    {
        printf("打开失败:\n");
    }
    for (i = 0; i < 1000; i++)
    {
        if (fscanf(wj, "%lld %s %s %d %d %d %d %d %f", &stu[i].id, stu[i].name, stu[i].sex, &stu[i].n1, &stu[i].n2, &stu[i].n3, &stu[i].n4, &stu[i].zong, &stu[i].ping) == -1)
        break;
        man++;
    }
    printf("从%s处读取了%d条记录.\n", s, man);
    fclose(wj);
}
void xianshi(void)
{
    int i;
    printf(" ");
    for (i = 0; i < 72; i++)
        printf("*");
    printf("\n");
    printf("|    学号        姓名    性别   语   数   英   计算机   总 分   平均分   |\n");
    for (i = 0; i < man; i++)
        printf("|%-12lld   %-6s    %s   %3d  %3d  %3d    %3d     %3d     %6.2f   |\n",stu[i].id, stu[i].name, stu[i].sex, stu[i].n1, stu[i].n2, stu[i].n3, stu[i].n4, stu[i].zong, stu[i].ping);
    printf(" ");
    for (i = 0; i < 72; i++)
        printf("*");
    printf("\n");
}
void tongji (void)
{
    int i;
    for (i = 0; i < man; i++)
    {
    stu[i].zong = stu[i].n1 + stu[i].n2 + stu[i].n3 + stu[i].n4;
    stu[i].ping = float(stu[i].zong) / 4.0;
    }
}
int luru(void)
{
    int i, j;
    i = 1;
    while (1)
    {
        printf("是否录入?录入请按“1”,返回上一层请按0:\n");
        scanf("%d", &j);
        if (j == 1)
            break;
        else if (j == 0)
            return 0;
        else
            printf("输入错误,请重新输入\n");
    }
    while(1)
    {
        man++;
        printf("请输入要录入的第%d个的同学的相关信息(用空格键分开):\n", i);
        printf("    学号      姓名 性别 语 数 英 计算机\n");
        scanf("%lld %s %s %d %d %d %d", &stu[man + i - 2].id, stu[man + i - 2].name, stu[man + i - 2].sex, &stu[man + i - 2].n1, &stu[man + i - 2].n2, &stu[man + i - 2].n3, &stu[man + i - 2].n4);
        stu[man + i - 2].zong = stu[man + i - 2].n1 + stu[man + i - 2].n2 + stu[man + i - 2].n3 + stu[man + i - 2].n4;
        stu[man + i - 2].ping = float(stu[man + i - 2].zong) / 4.0;
        while(1)
        {
        printf("是否继续录入?继续请按“1”,返回菜单请按“0”\n");
        scanf("%d", &j);
        if (j == 1)
            break;
        else if (j == 0)
            return 0;
        else
            printf("输入错误,请重新输入\n");
        }
    }
    return 0;
}
int chaxun(void)
{
    int i, j, k, l;
    char a[12];
    while (1)
    {
        printf("请选择按什么查询。\n1.按学号。\n2.按名字。\n");
        scanf("%d", &i);
        if (i == 1)
        {
            l = 0;
            printf("请输入学号:\n");
            scanf("%lld", &t);
            for (i = 0; i < man; i++)
            {
                if (stu[i].id == t)
                {
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    printf("|    学号        姓名    性别   语   数   英   计算机   总 分   平均分   |\n");
                    printf("|%-12lld   %-6s    %s   %3d  %3d  %3d    %3d     %3d     %6.2f   |\n",stu[i].id, stu[i].name, stu[i].sex, stu[i].n1, stu[i].n2, stu[i].n3, stu[i].n4, stu[i].zong, stu[i].ping);
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    l++;//判断是否有查询到
                    break;
                }
            }
            if (l == 0)
        printf("查无此人\n");
        }
        else if (i == 2)
        {
            l = 0;
            printf("请输入姓名:\n");
            scanf("%s", a);
            for (i = 0; i < man; i++)
            {
                if ((strcmp(stu[i].name, a) == 0))
                {
                    printf(" ");
                    for (k = 0; k < 72; k++)
                    printf("*");
                    printf("\n");
                    printf("|    学号        姓名    性别   语   数   英   计算机   总 分   平均分   |\n");
                    printf("|%-12lld   %-6s    %s   %3d  %3d  %3d    %3d     %3d     %6.2f   |\n",stu[i].id, stu[i].name, stu[i].sex, stu[i].n1, stu[i].n2, stu[i].n3, stu[i].n4, stu[i].zong, stu[i].ping);
                    printf(" ");
                    for (k = 0; k < 72; k++)
                    printf("*");
                    printf("\n");
                    l++;
                    break;
                }
            }
            if (l != 1)
            printf("查无此人\n");
        }
        else 
            printf("输入错误.\n");
        printf("是否继续查询?是请按‘1’,否请按‘0’.\n");
        scanf("%d", &j);
        if (j == 1)
            ;
        else if (j == 0)
            return 0;
        else 
            printf("输入错误\n");
    }
}
int xiugai (void)
{
    int i, j, k, l;
    char a[12];
    while(1)
    {
        printf("请选择序号:\n1.输入学号修改成绩。\n2.输入姓名修改成绩。\n");
        scanf("%d", &j);
        if (j == 1)
        {
            printf("请输入学号:\n");
            scanf("%lld", &t);
            l = 0;
            for (i = 0; i < man; i++)
            {
                if (stu[i].id == t)
                {
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    printf("|    学号        姓名    性别   语   数   英   计算机   总 分   平均分   |\n");
                    printf("|%-12lld   %-6s    %s   %3d  %3d  %3d    %3d     %3d     %6.2f   |\n",stu[i].id, stu[i].name, stu[i].sex, stu[i].n1, stu[i].n2, stu[i].n3, stu[i].n4, stu[i].zong, stu[i].ping);
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    printf("请输入修改后的成绩依次为:\n");
                    printf("语文:\n");
                    scanf("%d", &stu[i].n1);
                    printf("数学:\n");
                    scanf("%d", &stu[i].n2);
                    printf("英语:\n");
                    scanf("%d", &stu[i].n3);
                    printf("计算机:\n");
                    scanf("%d", &stu[i].n4);
                    printf("修改后成绩为:\n");
                    stu[i].zong = stu[i].n1 + stu[i].n2 + stu[i].n3 + stu[i].n4;
                    stu[i].ping = float(stu[i].zong) / 4.0;
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    printf("|    学号        姓名    性别   语   数   英   计算机   总 分   平均分   |\n");
                    printf("|%-12lld   %-6s    %s   %3d  %3d  %3d    %3d     %3d     %6.2f   |\n",stu[i].id, stu[i].name, stu[i].sex, stu[i].n1, stu[i].n2, stu[i].n3, stu[i].n4, stu[i].zong, stu[i].ping);
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    l++;//判断是否有查询到
                    break;
                }
            }
            if (l == 0)
        printf("查无此人\n");
        }
        else if (j == 2)
        {
            printf("请输入姓名:\n");
            scanf("%s", a);
            l = 0;
            for (i = 0; i < man; i++)
            {
                if ((strcmp(stu[i].name, a) == 0))
                {
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    printf("|    学号        姓名    性别   语   数   英   计算机   总 分   平均分   |\n");
                    printf("|%-12lld   %-6s    %s   %3d  %3d  %3d    %3d     %3d     %6.2f   |\n",stu[i].id, stu[i].name, stu[i].sex, stu[i].n1, stu[i].n2, stu[i].n3, stu[i].n4, stu[i].zong, stu[i].ping);
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    printf("请输入修改后的成绩依次为:\n");
                    printf("语文:\n");
                    scanf("%d", &stu[i].n1);
                    printf("数学:\n");
                    scanf("%d", &stu[i].n2);
                    printf("英语:\n");
                    scanf("%d", &stu[i].n3);
                    printf("计算机:\n");
                    scanf("%d", &stu[i].n4);
                    printf("修改后成绩为:\n");
                    stu[i].zong = stu[i].n1 + stu[i].n2 + stu[i].n3 + stu[i].n4;
                    stu[i].ping = float(stu[i].zong) / 4.0;
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    printf("|    学号        姓名    性别   语   数   英   计算机   总 分   平均分   |\n");
                    printf("|%-12lld   %-6s    %s   %3d  %3d  %3d    %3d     %3d     %6.2f   |\n",stu[i].id, stu[i].name, stu[i].sex, stu[i].n1, stu[i].n2, stu[i].n3, stu[i].n4, stu[i].zong, stu[i].ping);
                    printf(" ");
                    for (k = 0; k < 72; k++)
                        printf("*");
                    printf("\n");
                    l++;//判断是否有查询到
                    break;
                }
            }
            if (l == 0)
        printf("查无此人\n");
        }
        else 
        {
            printf("输入错误:\n");
        }
        printf("是否继续修改?是请按‘1’,否请按‘0’.\n");
        scanf("%d", &j);
        if (j == 1)
            ;
        else if (j == 0)
            return 0;
        else 
            printf("输入错误\n");
    }
}    
int paiming(void)
{
    int i, j, k, l;
    while(1)
    {
    printf("请选择按什么排列:\n1.学号。\n2.总分或平均分。\n3.单科排名。\n");
    scanf("%d", &k);
    if (k == 1)
    {
        for (i = 0; i< man; i++)
            for (j = i + 1; j < man; j++)
            {
                if (stu[i].id > stu[j].id)
                {
                    temp = stu[i];
                    stu[i] = stu[j];
                    stu[j] = temp;
                }
            }
            return 0;
    }
    else if (k == 2)
    {
        for (i = 0; i< man - 1; i++)
            for (j = i + 1; j < man; j++)
            {
                if (stu[i].zong < stu[j].zong)
                {
                    temp = stu[i];
                    stu[i] = stu[j];
                    stu[j] = temp;
                }
            }
            return 0;
    }
    else if (k == 3)
    {
        printf("请输入按哪一科排名?\n1.语文\n2.数学\n3.英语\n4.计算机\n");
        scanf("%d", &l);
        if (l == 1)
        {
            for (i = 0; i< man - 1; i++)
                for (j = i + 1; j < man; j++)
                {
                    if (stu[i].n1 < stu[j].n1)
                    {
                        temp = stu[i];
                        stu[i] = stu[j];
                        stu[j] = temp;
                    }
                }
                return 0;
        }
        else if (l == 2)
        {
            for (i = 0; i< man - 1; i++)
                for (j = i + 1; j < man; j++)
                {
                    if (stu[i].n2 < stu[j].n2)
                    {
                        temp = stu[i];
                        stu[i] = stu[j];
                        stu[j] = temp;
                    }
                }
                return 0;
        }
        else if (l == 3)
        {
            for (i = 0; i< man - 1; i++)
                for (j = i + 1; j < man; j++)
                {
                    if (stu[i].n3 < stu[j].n3)
                    {
                        temp = stu[i];
                        stu[i] = stu[j];
                        stu[j] = temp;
                    }
                }
                return 0;
        }
        else if (l == 4)
        {
            for (i = 0; i< man - 1; i++)
                for (j = i + 1; j < man; j++)
                {
                    if (stu[i].n4 < stu[j].n4)
                    {
                        temp = stu[i];
                        stu[i] = stu[j];
                        stu[j] = temp;
                    }
                }
                return 0;
        }
        else 
        {
            printf("输入错误。\n");
            return 0;
        }
    }
    else 
        printf("输入错误,请重新输入。\n");
    }
}
int baocun(void)
{
    FILE *fp;
    int i, t;
    char a[20];
    while(1)
        {
            printf("是否确认保存?确认请按‘1’,返回请按‘0’。\n");
            scanf("%d", &t);
            if (t == 1)
                break;
            else if (t == 0)
                return 0;
            else printf("输入错误,请重新输入。\n");
    }
    printf("请输入文件名,若文件已存在则覆盖(文件名应含扩展名):\n");
    scanf("%s", a); 
    fp = fopen(a,"w");
    for (i = 0; i < man; i++)
        fprintf(fp, "%lld %s %s %d %d %d %d %d %f\n",stu[i].id, stu[i].name, stu[i].sex, stu[i].n1, stu[i].n2, stu[i].n3, stu[i].n4, stu[i].zong, stu[i].ping);
    fclose(fp);
    printf("保存完毕\n");
    printf("在文件%s处储存了%d条记录.\n", a, man);
    return 0;
}
int shanchu(void)
{
    int i, j, l, m;
    char a[12];
    while (1)
    {
        printf("请选择按什么删除。\n1.按学号。\n2.按名字。\n");
        scanf("%d", &i);
        if (i == 1)
        {
            l = 0;
            printf("请输入学号:\n");
            scanf("%lld", &t);
            while(1)
            {
            printf("确定删除?确定请按‘1’,取消请按‘0’。\n");
            scanf("%d", &m);
            if (m == 1)
                break;
            else if (m == 0)
                return 0;
            else printf("输入错误,请重新输入:\n");
            }
            for (i = 0; i < man; i++)
            {
                if (stu[i].id == t)
                {
                    for(; i < man - 1;i++)
                        stu[i] = stu[i + 1];
                    man--;//总人数减1
                    l++;//判断是否有此人
                    break;
                }
            }
            if (l == 0)
        printf("查无此人\n");
        }
        else if (i == 2)
        {
            l = 0;
            printf("请输入姓名:\n");
            scanf("%s", a);
            while(1)
            {
            printf("确定删除?确定请按‘1’,取消请按‘0’。\n");
            scanf("%d", &m);
            if (m == 1)
                break;
            else if (m == 0)
                return 0;
            else printf("输入错误,请重新输入:\n");
            }
            for (i = 0; i < man; i++)
            {
                if ((strcmp(stu[i].name, a) == 0))
                {
                    for(; i < man - 1;i++)
                        stu[i] = stu[i + 1];
                    man--;//总人数减1
                    l++;//判断是否有此人
                    break;
                }
            }
            if (l != 1)
            printf("查无此人\n");
        }
        else 
            printf("输入错误.\n");
        printf("是否继续删除?是请按‘1’,否请按‘0’.\n");
        scanf("%d", &j);
        if (j == 1)
            ;
        else if (j == 0)
            return 0;
        else 
            printf("输入错误\n");
    }
}

int main(void)
{
    menu();
    char i;
    while(1)
    {
        printf("请输入要使用的功能的序号:\n");
        scanf("%c", &i);
        if (i == '1')
        {
            zairu();
            system("pause");
            system("cls");
            menu();
            printf("已载入。\n");
        }
        else if (i == '2')
        {
            tongji();
            xianshi();
            system("pause");
            system("cls");
            menu();
        }
        else if (i == '3')
        {
            xianshi();
            system("pause");
            system("cls");
            menu();
        }
        else if (i == '4')
        {
            chaxun();
            system("pause");
            system("cls");
            menu();
        }
        else if (i == '5')
            {
            luru();
            xianshi();
            system("pause");
            system("cls");
            menu();
            printf("已录入。\n");
        }
        else if (i == '6')
        {
            xiugai();
            system("pause");
            system("cls");
            menu();
            printf("已修改。\n");
        }
        else if (i == '7')
        {
            baocun();
            system("pause");
            system("cls");
            menu();
            printf("已保存。\n");
        }
        else if (i == '8')
        {
            shanchu();
            system("pause");
            system("cls");
            menu();
            printf("已删除。\n");
        }
        else if (i == '9')
        {
            paiming();
            xianshi();
            system("pause");
            system("cls");
            menu();
        }
        else if (i == '0')
        {
            menu();
            system("pause");
            system("cls");
            menu();
        }
        else if (i == '+')
            exit(1);
        getchar();//防止出现两条“请输入要使用的序号(按‘0’键显示菜单):”
    }
    return 0;
}

学生成绩管理系统.rar (11.62 KB)


[ 本帖最后由 a85703559 于 2011-4-21 22:36 编辑 ]
搜索更多相关主题的帖子: 查询成绩 统计 
2011-04-19 13:06
a85703559
Rank: 2
等 级:论坛游民
帖 子:22
专家分:43
注 册:2011-4-11
收藏
得分:0 
都没人来给点意见.......
2011-04-19 15:06
a85703559
Rank: 2
等 级:论坛游民
帖 子:22
专家分:43
注 册:2011-4-11
收藏
得分:0 
都没人来给点意见.......
2011-04-19 15:06
xjzxylj
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:113
注 册:2011-4-18
收藏
得分:0 
看得眼花,新手过来捧个人场

淫一手湿,简单;难的是,淫一被子湿。(富有诗意,此处抄袭)
2011-04-19 15:07
a85703559
Rank: 2
等 级:论坛游民
帖 子:22
专家分:43
注 册:2011-4-11
收藏
得分:0 
回复 3楼 a85703559
。。。。。
我也是新手额。。
2011-04-19 15:35
a85703559
Rank: 2
等 级:论坛游民
帖 子:22
专家分:43
注 册:2011-4-11
收藏
得分:0 
回复 3楼 a85703559
。。。。。
我也是新手额。。
2011-04-19 15:35
没有注册过的
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:22
专家分:42
注 册:2011-4-16
收藏
得分:0 
好长········!眼晕~!

就是想学~!
2011-04-19 17:05
yoy
Rank: 2
等 级:论坛游民
帖 子:29
专家分:24
注 册:2011-3-9
收藏
得分:0 
main里面可以用switch()
2011-04-19 17:31
dyn123
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-4-19
收藏
得分:0 
一个月?兄弟,好牛啊!
2011-04-19 18:07
zhujianhe
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-4-19
收藏
得分:0 
拜服!!
2011-04-19 18:12
快速回复:学C一个月。做了一个简单的学生成绩管理系统。欢迎前来测试。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.069217 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved