| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6643 人关注过本帖
标题:学生成绩管理系统源代码
只看楼主 加入收藏
致远
Rank: 1
来 自:江西南昌
等 级:新手上路
帖 子:4
专家分:7
注 册:2013-3-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
学生成绩管理系统源代码
/*程序名称:学生成绩管理系统*/
/*程序设计者:致远          */
/*设计时间:2013-3-15       */


/**************************************************************************************************/
#include <stdio.h>
#include <string.h>
#define N  150
int temp;
struct student
{
    char num[15];
    char name[20];
    int score[3];
    float av;
}stu[N];




/**************************************************************************************************/
save(int n)   
{
    FILE *p;
    int i;
    p=fopen("stud","wb");
    for (i=0;i<n;i++)
        fwrite(&stu[i],sizeof(struct student),1,p);
    fclose(p);
    return (n);
}




/**************************************************************************************************/
count()
{
    FILE *p;
    int i;
    p=fopen("stud","rb");
    for(i=0;!feof(p);i++)
        fread(&stu[i],sizeof(struct student),1,p);
    fclose(p);
    return(i-1);
}




/**************************************************************************************************/
void average(int n)
{
    int i,j,sum;
    for(i=0;i<n;i++)
    {
        sum=0;
        for(j=0;j<3;j++)
            sum+=stu[i] .score[j];
        stu[i].av=sum/3.0;
    }
}



/**************************************************************************************************/
void creat()
{
    int i,j,n;
    temp=count();
    if(temp!=0)
    {printf("\n亲! 已录入学生的记录,是否要添加记录?\n\t是,请选择“2”!\n\n");}
    else
    {
        printf("请输入首次录入的数量:");
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            printf("\n请输入第%d个学生数据:\n",i+1);
            printf("学号:");
            scanf("%s",&stu[i] .num );
            printf("姓名:");
            scanf("%s",&stu[i] .name );
            for(j=0;j<3;j++)
            {
                printf("成绩%d:",j+1);
                scanf("%d",&stu[i].score[j]);
            }            
        }
    temp=1;
    average (n);
    save (n);
    }
}



/**************************************************************************************************/
void add()
{
    int i,j,n,k,sum=0;
n=count();
printf("请输入添加记录的个数:");
scanf("%d",&k);
for(i=0;i<k;i++)
    {
        printf("\n请输入需添加的第%d个学生数据:\n",i+1);
        printf("学号:");
        scanf("%s",&stu[n+i].num );
        printf("姓名:");
        scanf("%s",&stu[n+i].name );
        for(j=0;j<3;j++)
        {
            printf("成绩%d:",j+1);
            scanf("%d",&stu[n+i].score[j]);
            sum+=stu[n+i].score[j];            
        }
    stu[n+i].av =sum/3.0;
    sum=0;
    }
    save (n+k);
}



/**************************************************************************************************/
void modify()
{
    int i,j,n,k=-1;
    struct student s;
    n=count();
    printf("请输入要修改学生的学号:");
    scanf("%s",&s .num);
    for(i=0;i<n;i++)
        if(strcmp(s .num,stu[i].num)==0)
        {k=i;break;}
        if(k==-1) printf("该学号不存在\n");
        else
        {
            printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
            printf("%s\t%s\t",stu[k].num,stu[k].name);
            for(j=0;j<3;j++)
                printf("%d\t",stu[k].score[j]);
            printf("%.2f\n",stu[k].av );
            printf("\n");
            printf("\n请重新输入该学生数据:\n");
            printf("学号:");
            scanf("%s",&stu[k].num);
            printf("姓名:");
            scanf("%s",&stu[k].name);
            for(j=0;j<3;j++)
            {
                printf("成绩%d:",j+1);
                scanf("%d",&stu[k].score[j]);
            }
            stu[k].av =(stu[k].score[0]+stu[k].score[1]+stu[k].score[2])/3.0;
        }
        save(n);
}



/**************************************************************************************************/
void del()
{
    int i,j,k,n;
    struct student s;
    n=count( );
    printf("\n\n--------------学生信息表--------------\n\n");
    printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
    for(i=0;i<n;i++)
    {
        printf("%s\t%s\t",stu[i].num ,stu[i].name);
        for(j=0;j<3;j++)
            printf("%d\t",stu[i].score[j]);
        printf("%.2f\n",stu[i].av);
        printf("\n");
    }
    printf("请输入要删除的学生的学号:");
    scanf("%s",&s.num);
    for(i=0;i<n;i++)
        if(strcmpi(s.num,stu[i].num)==0)
        {k=i;break;}
    if(k==-1) printf("数据不存在\n");
    else
    {
        printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
        printf("%s\t%s\t",stu[k].num ,stu[k].name );
        for(j=0;j<3;j++)
            printf("%d\t",stu[k].score [j]);
        printf("%.2f\n",stu[k].av);
        printf("\n");
        for(i=k;i<n-1;i++)
            stu[i]=stu[i+1];
        n=n-1;
        save(n);
    }
}



/**************************************************************************************************/
void show()
{
    int i,j,n;
    n=count();
    if(n==0) printf("\n\t还没学生记录\n\t选择“1”录入学生记录\n\n");
    else
    {
        printf("\n\n----------------------学生信息表---------------------\n\n");
        printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
        for(i=0;i<n;i++)
            {
                printf("%s\t%s\t",stu[i].num ,stu[i].name );
                for(j=0;j<3;j++)
                printf("%d\t",stu[i].score[j]);
            printf("%.2f\n",stu[i].av);
            //printf("\n");
            }
    }
}



/**************************************************************************************************/
void search()
{
    int i,j,n,k=-1;
    struct student s;
    n=count();
    printf("请输入要查找的学生的学号:");
    scanf("%s",&s.num);
    for(i=0;i<n;i++)
        if(strcmpi(s.num,stu[i].num)==0)
        {k=i;break;}
        if(k==-1) printf("数据不存在\n");
        else
        {
            printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
            printf("%s\t%s\t",stu[k].num ,stu[k].name );
            for(j=0;j<3;j++)
                printf("%d\t",stu[k].score[j]);
            printf("%.2f\n",stu[k].av);
            //printf("\n");
        }
}



/**************************************************************************************************/
void sort()
{
    int i,j,n;
    struct student temp;
    n=count();
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
            if(stu[i].av <stu[j].av)
            {
                temp=stu[i];
                stu[i]=stu[j];
                stu[j]=temp;
            }
        printf("-------------------学生信息表--------------------\n");
        printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
        for(i=0;i<n;i++)
        {
            printf("%s\t%s\t",stu[i].num ,stu[i].name);
            for(j=0;j<3;j++)
                printf("%d\t",stu[i].score[j]);
            printf("%.2f\n",stu[i].av);
        }
        //printf("\n\n");        
}



/**************************************************************************************************/
void showmenu()
{
    printf("            学生成绩管理系统            \n");
    printf("========================================\n");
    printf("               1.录入信息               \n");
    printf("               2.添加记录               \n");
    printf("               3.修改记录               \n");
    printf("               4.删除记录               \n");
    printf("               5.显示记录               \n");
    printf("               6.查找记录               \n");
    printf("               7.成绩排序               \n");
    printf("               0.退出系统               \n");
    printf("========================================\n");
    printf("\n请输入您的选择(0-7):");}




/**************************************************************************************************/
int main ()
{
    int choice,temp=0;
    showmenu();
    scanf("%d",&choice);
    while (choice!=0)
    {
        switch(choice)
        {
            case 1:creat();printf("———————————————————\n");break;
            case 2:add();printf("———————————————————————\n");break;
            case 3:modify();printf("————————————————————————\n");break;
            case 4:del();printf("————————————————————————\n");break;
            case 5:show();printf("————————————————————————\n");break;
            case 6:search();printf("————————————————————————\n");break;
            case 7:sort();printf("—————————————————————————\n");break;
        }
        showmenu();
        scanf("%d",&choice);
    }
return 0;
}
搜索更多相关主题的帖子: 管理系统 include 设计者 
2013-03-20 17:36
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:20 
命名 和缩进 不太理想,其他的还不错,帮顶

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-03-20 18:27
mskeheng
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:179
注 册:2013-3-13
收藏
得分:0 
编排蛮好啊
2013-03-29 15:30
小菜B
Rank: 2
等 级:论坛游民
帖 子:29
专家分:25
注 册:2013-3-6
收藏
得分:0 
还是c语言好看啊,可能是先入为主的观念。现在学c++都觉得不适应没有printf和scanf了
2013-03-29 23:41
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
蛮不错的
2013-03-30 01:27
快速回复:学生成绩管理系统源代码
数据加载中...
 
   



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

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