| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1088 人关注过本帖
标题:有挺多问题的,可以帮忙看一下吗,明天就要交了
只看楼主 加入收藏
晚叹诶
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-5-8
结帖率:0
收藏
 问题点数:0 回复次数:0 
有挺多问题的,可以帮忙看一下吗,明天就要交了
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 15
struct student{
    union{
    struct a;//本科生
    struct b;//研究生
    };
    enum{a,b};
    struct student *link;
};
struct a{       //本科生
    int n;//
int number;//学号
char name[N];//姓名
char sex;//性别
int cla;//班别
char major;//专业
int score[3];//成绩
int sum;//总分
int ave;//平均分
}stu[N];

struct b{         //研究生
    int n;//
int number;//
char name[N];//
char sex;//
int cla;//
char major;//
char yjfx;//研究方向
char teacher;//导师
int score[2];
int sum;
int ave;
}stu[N];

void menu();

void write();   //添加信息

int change(int n);//修改信息

int del(int n);//删除信息

void outputonestudent(int i);//查询一个学生信息

void searchmenu(int n);//查询信息操作

void searchnumber(int n);//按学号查询

void searchname(int n);//按姓名查询

void inturn(struct a c[]);//排序

void inturn(struct b c[]);//排序

void tongji();//统计

void xjzf();

void bjzf();

void save(int x);//保存

void mainn(){
int choice;

printf("学生成绩管理系统");
while(1){
menu();
printf("请选择:");
scanf("%d",&choice);

if(choice==0){
printf("谢谢使用!");
break;
}
switch(choice){
case 1:
    write();
    inturn(stu);//为什么这里显示“a”的实参“student”的形参不兼容
    save(N);
    break;
case 2:
    change(n);//为什么说没定义
    break;
case 3:
    del(n);
    break;
case 4:
    searchmenu(n);
    break;
case 5:
    tongji();
case 0:
    printf("谢谢使用!再见。");
default:
    printf("按键错误,请重新选择!");
}
}
}
void menu(){
printf("请输入所需选择\n");

printf("1.添加学生信息\n");

printf("2.修改学生信息\n");

printf("3.删除学生信息\n");

printf("4.查询学生信息\n");

printf("5.统计学生信息\n");

printf("0.退出系统\n");
}




void write(){   //添加学生信息.....如何分别输入本科生和研究生的信息?
int i;
struct a A;
struct b B;
int choice;
printf("0.本科生   1.研究生\n");
printf("请输入选择:");
scanf("%d",&choice);
if(choice==0){
printf("添加本科生信息");   
}
printf("输入本科生人数:",A.n);
scanf("%d",&A.n);
for(i=0;i<A.n;i++){

        printf("输入第%d个学生的学号:\n",i+1);
    scanf("%d",&A.number);

        printf("输入第%d个学生的姓名:\n",i+1);
    scanf("%s",A.name[i]);

        printf("输入第%d个学生的性别:\n",i+1);
    scanf("%d",&A.sex);

        printf("输入第%d个学生的专业:\n",i+1);
    scanf("%d",&A.major);

        printf("输入第%d个学生的班级:\n",i+1);
    scanf("%d",&A.cla);

        printf("输入第%d个学生的c语言成绩:\n",i+1);
    scanf("%f",&A.score[0]);

        printf("输入第%d个学生的高数成绩:\n",i+1);
    scanf("%f",&A.score[1]);

        printf("输入第%d个学生的英语成绩:\n",i+1);
    scanf("%f",&A.score[2]);

        A.sum=A.score[0]+A.score[1]+A.score[2];
    A.ave=A.sum/3.0f;
}
printf("学号\t姓名\t性别\t专业\t班级\tc语言成绩\t高数成绩\t英语成绩\t\n");

printf("%d%s%s%s%d%d%d%d",A.number,A.name[i],A.sex,A.major,A.cla,A.score[0],A.score[1],A.score[2]);

if(choice==1){
printf("添加研究生信息");   
}
printf("输入研究生人数:",B.n);
scanf("%d",&B.n);
for(i=0;i<B.n;i++){

        printf("输入第%d个学生的学号:\n",i+1);
    scanf("%d",&A.number);

        printf("输入第%d个学生的姓名:\n",i+1);
    scanf("%s",B.name[i]);

        printf("输入第%d个学生的性别:\n",i+1);
    scanf("%d",&B.sex);

        printf("输入第%d个学生的专业:\n",i+1);
    scanf("%d",&B.major);

        printf("输入第%d个学生的班级:\n",i+1);
    scanf("%d",&B.cla);

        printf("输入第%d个学生的研究方向:\n",i+1);
    scanf("%f",B.yjfx);

        printf("输入第%d个学生的导师:\n",i+1);
    scanf("%f",B.teacher);

        printf("输入第%d个学生的课程综合成绩:\n",i+1);
    scanf("%f",&B.score[0]);

            printf("输入第%d个学生的论文成绩:\n",i+1);
    scanf("%f",&B.score[1]);

        B.sum=B.score[0]+B.score[1];
    B.ave=B.sum/2.0f;
}
printf("学号\t姓名\t性别\t专业\t班级\t研究方向\t导师\t课程综合成绩\t论文成绩\t\n");

printf("%d%s%s%s%d%s%s%d%d",B.number,B.name[i],B.sex,B.major,B.cla,B.yjfx,B.teacher,B.score[0],B.score[1]);


}
////
////
////
////
void inturn(struct a m[]){
int x;
struct a A;
struct b B;

printf("输入所需操作:\n");
printf("1.校级按总分排序操作\n");
printf("2.班级按总分排序操作\n");
printf("0.返回主菜单\n");
printf("输入选择:");
scanf("%d",&x);
while(x>0&&x<4){
    switch(x){
    case 1:
        xjzf();
        break;
    case 2:
        bjzf();
        break;
    case 0:
        printf("再见\n");
        return;
    default:
        printf("重新输入");
   
    }
}


}
////
///
///
void save(int x){
FILE *fp;
int i;
if((fp=fopen("student.dat","rb+"))==NULL){
printf("不能打开\n");
exit(1);
}
for(i=0;i<N;i++)
    if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
        printf("文件写入错误\n");
fclose(fp);
printf("写入成功\n");
}
///
///
///
int change(int n){                    ////修改

struct a A;
struct b B;
int choice;
int k=-1,x,i;
char c1='y',c2;
printf("0.本科生   1.研究生\n");
printf("输入选择:",choice);
scanf("%d",&choice);
if(choice==0){
printf("修改本科生信息\n");
}
while(c1=='y'){
c2='y';
printf("输入要修改的学生的学号:");
scanf("%d",&x);
for(i=0;i<n;i++){
    if(x==stu[i].number){
    k=i;
    break;
    }
    if(k<0)
        printf("输入有误,重新输入");
    else{
    printf("输入修改后的信息:\n");
    printf("学号\t姓名\t性别\t专业\t班级\tc语言成绩\t高数成绩\t英语成绩\t\n");
    scanf("%d%s%s%s%d%d%d%d",A.number,A.name[i],A.sex,A.major,A.cla,A.score[0],A.score[1],A.score[2]);
A.sum=(A.score[0]+A.score[1]+A.score[2]);
A.ave=A.sum/3.0f;
stu[k]=A;
printf("修改成功");
break;
    }
    saveallstudent(k);
    c1=getchar();
    getchar();
    return(n);
}
printf("任意键继续");
getchar();
}
if(choice==1){
printf("修改研究生信息\n");
}
while(c1=='y'){
c2='y';
printf("输入要修改的学生的学号:");
scanf("%d",&x);
for(i=0;i<n;i++){
    if(x==stu[i].number){
    k=i;
    break;
    }
    if(k<0)
        printf("输入有误,重新输入");
    else{
    printf("输入修改后的信息:\n");
    printf("学号\t姓名\t性别\t专业\t班级\t研究方向\t导师\t课程综合成绩\t论文成绩\t\n");
    scanf("%d%s%s%s%d%s%s%d%d",B.number,B.name[i],B.sex,B.major,B.cla,B.yjfx,B.teacher,B.score[0],B.score[1]);
    B.sum=(B.score[0]+B.score[1]);
B.ave=B.sum/2.0f;
stu[k]=B;
       printf("修改成功");
break;     
    }
        saveallstudent(k);
    c1=getchar();
    getchar();
}
printf("任意键继续");
getchar();
}

}
 
////
///
///
//删除函数
int del(int n){
int i,k=-1,x;
char c1='y',c2;
while(c1=='y'){
c2='n';
printf("输入要删除的学生学号:\n");
scanf("%d",&x);
for(i=0;i<n;i++){
    if(x==stu[i].number){
    k=i;
    break;
    }
    if(k<0)
        printf("输入有误,重新输入");
    else{
    printf("该学生信息如下:\n");
    inputonestudent(k);
    printf("删除\n");
    c2=getchar();
    getchar();
    if(c2=='y'){
        for(i=k;i<n;i++){
        stu[i]=stu[i+1];
        n--;
        printf("删除成功");
        }
        c1=getchar();
        getchar();
    }
    }
}
}
save(n);
printf("任意键继续");
getchar();
return(n);
}

void outputonestudent(int i){
    struct a A;
    struct b B;
printf("学号:%d  姓名:%s  性别:%s  专业:%s  班级:%d\n",A.number,A.name[i],A.sex,A.major,A.cla);
printf("c语言:%d  高数:%d  英语:%d",A.score[0],A.score[1],A.score[2]);

printf("学号:%d  姓名:%s  性别:%s  专业:%s  班级:%d  研究方向:%s  导师:%s\n",B.number,B.name[i],B.sex,B.major,B.cla,B.yjfx,B.teacher);
printf("课程综合成绩:%d  论文成绩:%d",B.score[0],B.score[1]);

}
////
/////////////////
//////////////////
/////////////////

void searchmenu(int n){      //查询
int selet;
while(1){
printf("进入查询功能\n");

printf("1.按姓名查询\n");
printf("1.按学号查询\n");
printf("输入所需操作:\n");
scanf("%d",&selet);
getchar();
switch(selet){
case 1:
    searchname(n);
    break;
case 2:
    searchnumber(n);
case 0:
    return;
default:
    printf("输入错误,重新输入\n");
}
}
}

void searchname(int n){
int i,j,k;
char xname[N],c='y';
while(c=='y'){
k=-1;
printf("输入学生姓名:");
gets(xname);
for(i=0,j=1;i<n;i++){
    if(strcmp(stu[i].name,xname)==0){
    k=i;
    printf("学生%d的信息:\n",j++);
    outputonestudent(k);
    }
}
}
}

void searchnumber(int n){
int i,j,k,x;
char c='y';
while(c=='y'){
k=-1;
printf("输入学生学号:\n");
scanf("%d",&x);
for(i=0,j=1;i<n;i++){
    if(stu[i].number==x){
    k=i;
    printf("学生%d的信息:\n",j++);
    outputonestudent(k);
    }
}
}

}





void tongji(){
int x;
printf("进入统计系统\n");
printf("输入所需操作:\n");
printf("1.统计某门课每个班的平均成绩操作\n");
printf("2.某班级某课程不同等级的学生人数操作\n");
printf("0.返回主菜单\n");
printf("输入选择:");
scanf("%d",&x);
while(x>0&&x<4){
    switch(x){
    case 1:
        avecj();
        break;
    case 2:
        dengji();
        break;
    case 0:
        printf("再见\n");
        return;
    default:
        printf("输入错误,重新输入\n");
    }
}
}




void xjzf(){
FILE *wj,*fp;
int i,j;
struct a A;
struct b B;
if((fp=fopen("student.dat","wb"))==NULL){
exit(1);
}
for(i=0;i<N-1;i++)
    for(j=0;j<N-i-1;j++)
        if(stu[i].sum<stu[j].sum){
        A=stu[j];
        stu[j]=stu[i];
        stu[i]=A;
        }
        if((wj=fopen("student.dat","wb+"))==NULL){
        exit(1);
        }
        else{
        for(i=0;i<N;i++)
            fwrite(&stu[i],sizeof(struct student),1,wj);
        }
        fclose(fp);
        fclose(wj);

if((fp=fopen("student.dat","wb"))==NULL){
exit(1);
}
for(i=0;i<N-1;i++)
    for(j=0;j<N-i-1;j++)
        if(stu[i].sum<stu[j].sum){
        B=stu[j];                       //////////////////////////////////////////////eorr
        stu[j]=stu[i];
        stu[i]=B;                        //////////////////////////////////////////////eorr
        }
        if((wj=fopen("student.dat","wb+"))==NULL){
        exit(1);
        }
        else{
        for(i=0;i<N;i++)
            fwrite(&stu[i],sizeof(struct student),1,wj);
        }
        fclose(fp);
        fclose(wj);
}



void avecj(){
int i=0;
struct a A;
struct b B;
printf("每门课的每班的平均成绩:\n");
for(i=1;i<N;i++){
    if(A.cla==i){
        (A.n*A.score[0])/i;
    printf("c语言每班的平均成绩:%f",(A.n*A.score[0])/i);
    }
}
}
搜索更多相关主题的帖子: 研究生 include number 本科生 姓名 
2017-05-09 21:23
快速回复:有挺多问题的,可以帮忙看一下吗,明天就要交了
数据加载中...
 
   



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

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