有没有懂c++的大佬解答一下疑惑

如以下代码,此代码为学生管理系统。其中第七项保存成绩在保存完毕后在相应的csv或txt文本中没有显示结果求解答。

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define MAXN 100 //一个班最多的人数

#define MAXM 3 //成绩的课程门数

int R;

void input(); //1.学生成绩新建

void sort(); //2.学生成绩插入

void load(); //3.学生成绩修改

void print(); //4.学生成绩删除

void total(); //5.学生成绩统计

void search(); //6.学生成绩查询

void save(); //7.学生成绩保存

void end(); //8.结束

struct student

{

char name[20]; //保存全班姓名

char num[12]; //保存全班学号

float score[MAXM]; //保存全班所有课程成绩

float sum; //保存全班每个人的总成绩

float avg; //保存每个人的平均成绩

};

struct student s[MAXN];

struct http

{

char subject[20]; //保存全班所有课程

};

struct http c[MAXM];

int main() //欢迎首界面

{

int select,l;

system("cls");

while(1)

{

system("cls");

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(" *   8.退出 *\n");

printf(" ******************************************************\n");

printf("\n"); printf("\n 请输入您的选择编号,回车键继续:\n");

printf(" ---------------------------------------------------------------------------\n");

scanf("%d",&select);

{

if(select<1||select>8)

{

printf(" 您输入有误,请重新输入,谢谢!!!\n");

scanf("%d",&select);

}

l=select;

}

while(l<1||l>8);

switch(select)

{

case 1:input();break; //1.输入学生成绩

case 2:sort(); break; //2.学生成绩插入

case 3:load(); break; //3.学生成绩修改

case 4:print(); break; //4.学生成绩删除

case 5:total();break; //5.学生成绩统计

case 6:search();break; //6.学生成绩查询

case 7:save();break; //7.学生成绩保存

case 8: end();break; //8.结束

default:printf(" 请按相应数学选择系统功能:");

}

}

}

void input() //1学生成绩输入成绩模块

{

int i,j,b;

float a=0;

printf(" 请输入该班同学的人数:\n");

printf(" 班同学的人数在1~%d之间:\n",MAXN);

scanf("%d",&R);

{

if(R<1||R>100)

{

printf(" 您输入有误,请重新输入,谢谢!!!\n");

scanf("%d",&R);

}

b=R;

}

while(b<1||b>100);

for(i=0;i<MAXM;i++)

{

printf(" 请输入该班同学的第%d门课程名称为:\n",(i+1));

scanf("%s", &c[i].subject);

}

for(i=0;i<R;i++)

{

printf(" 请输入第%d个同学的姓名:\n",(i+1));

scanf("%s",&s[i].name);

printf(" 请输入第%d个同学的学号:\n",(i+1));

scanf("%s",&s[i].num);

printf(" 请依次输入%d门学科的成绩:\n",MAXM);

for(j=0;j<MAXM;j++)

{

printf(" 请输入课程%s的成绩为:\n",c[j].subject);

scanf("%f",&s[i].score[j]);

a=a+s[i].score[j];

}

s[i].sum=a;

s[i].avg=s[i].sum/MAXM;

a=0;

}

}

void sort() //2学生成绩插入成绩模块

{

int i,j,k,b;

float a=0;

printf(" 请输入要插入的学生的位置1~%d号:\n",R);

printf(" 第几个学生的位置之后:\n");

scanf("%d",&k);

{

if(k<1||k>R)

{

printf(" 您输入有误,请重新输入,谢谢!!!\n");

scanf("%d",&k);

}

b=k;

}

while(b<1||b>R);

R=R+1;

for(i=R;i>k;i--)

{

strcpy(s[i].name,s[i-1].name);

strcpy(s[i].num,s[i-1].num);

s[i].sum=s[i-1].sum;

s[i].avg=s[i-1].avg;

for(j=0;j<MAXM;j++)

{

s[i].score[j]=s[i-1].score[j];

}

}

printf(" 请输入第%d个同学的姓名:\n",(k+1));

scanf("%s",&s[k].name);

printf(" 请输入第%d个同学的学号:\n",(k+1));

scanf("%s",&s[k].num);

printf(" 请依次输入%d门学科的成绩:\n",MAXM);

for(j=0;j<MAXM;j++)

{

printf(" 请输入课程%s的成绩为:\n",&c[j].subject);

scanf("%f", &s[k].score[j]);

a=a+s[k].score[j];

}

s[k].sum=a;

s[k].avg=s[k].sum/MAXM;

}

void load() //3学生成绩修改

{

float a=0,h[MAXM];

int i,j,b;

printf(" 请输入修改学生的位置1~%d 号: \n",R);

scanf("%d",&i);

do

{

if(i<1||i>R)

{

printf(" 您输入有误,请重新输入,谢谢!!!\n");

scanf("%d",&i);

}

b=i;

}

while(b<1||b>R);

printf(" 请输入%d号的新学号: \n",i);

scanf("%s",&s[i-1].name);

printf(" 请输入%d号的新姓名: \n",i);

scanf("%s",&s[i-1].num);

for(j=0;j<MAXM;j++)

{

printf(" 请输入课程%s的成绩为:\n",&c[j].subject);

scanf("%f",&h[j]);

s[i-1].score[j] =h[j];

a=a+s[i-1].score[j];

}

s[i-1].sum=a;

s[i-1].avg=s[i-1].sum/MAXM;

}

void print() //4学生成绩删除

{

int i,j,k,b;

printf(" 请输入删除学生的位置1~%d 号:\n",R);

scanf("%d",&k);

do

{

if(k<1||k>R)

{

printf(" 您输入有误,请重新输入,谢谢!!!\n");

scanf("%d",&k);

}

b=k;

}

while(b<1||b>R);

i=k-1;

for(i;i<R;i++)

{

strcpy(s[i].name,s[i+1].name);

strcpy(s[i].num,s[i+1].num);

s[i].sum=s[i+1].sum;

s[i].avg=s[i+1].avg;

for(j=0;j<MAXM;j++)

{

s[i].score[j]=s[i+1].score[j];

}

}

R=R-1;

printf("删除成功! \n");

}

void total() //5.学生成绩统计

{

int i,j;

float a[MAXM],b=0;

printf("学号: 姓名:课程%s的分数: 课程%s的分数: 总成绩: 平均成绩:\n",c[0].subject,c[1].subject);

for(i=0;i<R;i++)

{

printf("%s%10.2s%16.2f%16.2f%16.2f%16.2f\n",s[i].num, s[i].name,s[i].score[0] ,s[i].score[1],s[i].sum,s[i].avg);

}

for(i=0;i<MAXM;i++)

{

for(j=0;j<R;j++)

{

b=b+s[j].score[i];

}

a[i]=b/R;

b=0;

}

for(i=0;i<MAXM;i++)

{

printf(" 全班课程%s的平均分为:%f \n",c[i].subject,a[i]);

}

printf("排序完毕.\n");

system("pause");

}

void search() //6查询成绩模块

{

int search1();

int search2();

int select,index,b;

while(1)

{

printf(" *************************************************************\n");

printf(" * 1.按学号查询 * \n");

printf(" * 2.按姓名查询 * \n");

printf(" * 0.返回 * \n");

printf(" * 请输入您的选择编号: * \n");

printf(" *************************************************************\n");

scanf("%d",&select);

do

{

if(select<0||select>2)

{

printf(" 您输入有误,请重新输入,谢谢!!!\n");

scanf("%d",&select);

}

b=select;

}

while(b<0||b>2);

switch(select)

{

case 1:index=search1(); break;

case 2:index=search2();break;

case 0:return;

}

if(index!=-1)

{

int i;

printf(" *****************************************************************\n");

printf(" 学号:%s \n", s[index].num);

printf(" 姓名:%s \n", s[index].name);

printf(" 总成绩:%f \n", s[index].sum);

printf(" 平均成绩:%f \n", s[index].avg);

for(i=0;i<MAXM;i++)

printf(" 课程%s的成绩为:%f \n", c[i].subject,s[index].score[i]);

printf(" *****************************************************************\n");

}

else printf("没有这个同学。\n");

}

}

int search1() //按学号查询模块

{

int i;

char s_num[12];

printf(" 请输入要查询的学号:");

scanf("%s",&s_num);

for(i=0;i<MAXN;i++)

if(strcmp(s[i].num,s_num)==0)

break;

if(i<MAXN)

return i;

else return -1;

}

int search2() //按姓名查询模块

{

int i;

char s_name[10];

printf(" 请输入要查询的姓名:");

scanf("%s",&s_name);

for(i=0;i<MAXN;i++)

if(strcmp(s[i].name,s_name)==0)

break;

if(i<MAXN)

return i;

else return -1;

}

void save() //7保存成绩模块

{

FILE *fp;

int i,j,k=0;

if((fp=fopen("十一组2.csv", "w"))=NULL);

fprintf(fp, "该班学生数和所修课程数分别为:%d,%d\n\n",R,MAXM);

fprintf(fp, "该班所修的课程有:\n");

for(j=0;j<MAXM;j++)

fprintf(fp, "课程%d:%s\n",1+j,c[j].subject);

fprintf(fp, "下面是该班学生信息:\n\n");

for(i=0;i<R;i++)

{

fprintf(fp, "学号:%s 姓名:%s\n",s[i].num,s[i].name);

for(j=0;j<MAXM;j++)

{

fprintf(fp, "%s:%5.2f\n",c[j].subject,s[k].score[j]);

}

fprintf(fp, "学生总成绩:%5.2f\n学生平均成绩:%5.2f\n\n",s[i].sum,s[i].avg);

k++;

}

fclose(fp);

printf("\n\n 保存成功\n\n\n\n");

fclose(fp);

printf("保存完毕.\n");

}

void end() //8.结束

{

printf("\n\n 谢谢您的使用。BYE!!!\n\n\n\n\n\n\n\n");

exit(0);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值