若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

3391: 课程设计代码

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,471

题目描述

请提交如下内容,注意只允许提交一次

一、文件清单:

例如:
1. add.c
2. sub.c
3. score.c
4. score.h

二、各文件代码:

1. add.c 文件代码

*********
********
********
2. sub.c 文件代码
********
********
********
3. score.c 文件代码
********
********
********
4. score.h 文件代码
********
********
********

输入

暂无

输出

暂无

样例输入

暂无

样例输出

暂无

参考代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int num=0;
struct Student 
{
    char number[20];
    char name[20];
    int  grade1;
    int grade2;
    int grade3;
    int average;
}
stu[100];
void stu_read()//读入文件 
{
    FILE*fp=fopen("xyx.txt","r");
    int j=0;
    while(fscanf(fp,"%s%s%d%d%d%d",stu[j].number,stu[j].name,&stu[j].grade1,&stu[j].grade2,&stu[j].grade3,&stu[j].average)==6)
            j++;
    num=j;
    fclose(fp);
}
void stu_put()//输出文件 
{
    FILE*fp=fopen("xyx.txt","w");
    int j=0;
    for (j=0;j<num;j++) 
    {
        fprintf(fp,"%s %s %d %d %d %dn",stu[j].number,stu[j].name,stu[j].grade1,stu[j].grade2,stu[j].grade3,stu[j].average);
    }
    fclose(fp);
}
float average(struct Student stu)//平均值
{
    float grade;
    grade=(stu.grade1+stu.grade2+stu.grade3)/3;
    return grade;
}
int stu_number(char id[])//通过学号返回下标
{
    int i;
    for(i=0;i<num;i++)
    {
        if(strcmp(stu[i].number,id)==0)
        {
            return i;
        }
    }
    return -1;
}
int stu_name(char name1[])//通过名字返回下标
{
    int i;
    for(i=0;i<num;i++)
    {
        if(strcmp(stu[i].name,name1)==0)
        {
            return i;
        }
    }
    return -1;
}
void stu_record(int i)//学生信息
{
    printf("学号:%sn",stu[i].number);
    printf("姓名:%sn",stu[i].name);
    printf("语文:%dn",stu[i].grade1);
    printf("数学:%dn",stu[i].grade2);
    printf("嘤语:%dn",stu[i].grade3);
    printf("平均分:%dn",stu[i].average);
}
void stu_insert()//插入学生信息
{
    char a;
    while(1)
    {
        printf("输入学号:");scanf("%s",stu[num].number);
        printf("输入姓名:");scanf("%s",stu[num].name);
        printf("输入语文成绩:");scanf("%d",&stu[num].grade1);
        printf("输入数学成绩:");scanf("%d",&stu[num].grade2);
        printf("输入嘤语成绩:");scanf("%d",&stu[num].grade3);
        stu[num].average=average(stu[num]);
        num++;
        printf("是否继续:y/nn");
        a=getchar();
        while(a!='n'&&a!='y')a=getchar();
        if(a=='n')
        {
            break;
        }
    }
}
void stu_amend()//修改学生信息
{
    char a;
    while(1)
    {
        char id[20];
        int i;
        printf("请输入要修改的学号:");
        scanf("%s",&id);
        i=stu_number(id);
        if(i==-1)
            printf("不存在该学号的学生n");
        else
        {
            printf("输入学号:");scanf("%s",stu[i].number);printf("n");
            printf("输入姓名:");scanf("%s",stu[i].name);printf("n");
            printf("输入语文成绩:");scanf("%d",&stu[i].grade1);printf("n");
            printf("输入数学成绩:");scanf("%d",&stu[i].grade2);printf("n");
            printf("输入嘤语成绩:");scanf("%d",&stu[i].grade3);printf("n");
            stu[i].average=average(stu[i]);
        }
        printf("是否继续:y/nn");
        a=getchar();
        while(a!='n'&&a!='y')a=getchar();
        if(a=='n')
        {
            break;
        }
    }
}
void stu_delete()//删除学生信息
{
    int i;
    char a;
    while(1)
    {
        char id[20];
        int j,o;
        printf("请输入要删除的学生学号:");
        scanf("%s",&id);
        j=stu_number(id);
        if(j==-1)
            printf("不存在该学号的学生");
        else
        {
            printf("是否删除:y/nn");
            o=getchar();
        while(o!='n'&&o!='y')o=getchar();
            if(o=='y')
            {
                for(i=j;i<num-1;i++)
                    stu[i]=stu[i+1];
                num--;
            }
        }
        printf("是否继续:y/nn");
        a=getchar();
        while(a!='n'&&a!='y')a=getchar();
        if(a=='n')
        {
            break;
        }
    }
}
void stu_select()//按姓名查找
{
    char a;
    while(1)
    {
        char name[20];
        int i;
        printf("请收徒要查询学生的姓名:");
        scanf("%s",&name);
        i=stu_name(name);
        if(i==-1)
            printf("不存在叫%s的学生",name);
        else
            stu_record(i);
        printf("是否继续:y/nn");
        a=getchar();
        while(a!='n'&&a!='y')a=getchar();
        if(a=='n')
        {
            break;
        }
    }
}
void stu_ave()//按平均分排序
{
    int i;
    int j;
    struct Student t;
    for(i=0;i<num;i++)
    {
        for(j=0;j<num-1;j++)
        {
            if(stu[j].average<stu[j+1].average)
            {
                t=stu[j];
                stu[j]=stu[j+1];
                stu[j+1]=t;
            }
        }
    }
    for(i=0;i<num;i++)
    {
        printf("%d->%st%st%dt%dt%dt%dn",i,stu[i].number,stu[i].name,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].average);
    }
}
void main()
{
    int choice;
    stu_read();
    while(1)
    {
        printf("n------ 学生成绩管理系统------n");
        printf("1. 增加学生记录n");
        printf("2. 修改学生记录n");
        printf("3. 删除学生记录n");
        printf("4. 按姓名查询学生记录n");
        printf("5. 按平均成绩排序n");
        printf("6. 当场去世n");
        printf("请选择(1-6):");
        scanf("%d",&choice);
        switch(choice)
        {
            case 1:
            {
                stu_insert();
                break;
            }
            case 2:
            {
                stu_amend();
                break;
            }
            case 3:
            {
                stu_delete();
                break;
            }
            case 4:
            {
                stu_select();
                break;
            }
            case 5:
            {
                stu_ave();
                break;
            }
            case 6:
            {
                return;
                break;
            }
        }
        stu_put();
    }
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Skip Dreams孤独患者 原站点
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist