学生成绩管理系统-求改正,不知道为什么导不出文件

问题描述

求改正,不知道为什么导不出文件

#include
#include
#include
#include
#include
#include
#include
typedef struct student
{
char name[10];
int schoolnumber;
int classnumber;
float score[10];
struct student next;
} stu,*stupt;
stupt st=NULL;//学生信息的头指针
stupt qt=NULL;//学生信息的尾指针
FILE
fp;//文件指针

typedef struct user
{
char logname[10];
char passwd[6];
}*userpt,user;

void clear(void)//清空缓冲区函数
{
char ch;
do
{
ch=getchar();
}
while(ch!='n');
}

void Printf_help()//主菜单
{
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(" |
9.清屏 |n");
printf(" |
a.导出至文件 |n");
printf(" |
0.退出系统 *|n");
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ n");
printf(":");
}
//1.输入成绩
void inpu(stupt p)
{
int n;
int m=0;
int flag;
while(m
{
p->score[m]=0;
m++;
}
printf("请您输入姓名:");
scanf("%s",p->name);
clear();
printf("请您输入学号:");
scanf("%d",&p->schoolnumber);
clear();
printf("请您输入班级号(如:101):");
scanf("%d",&p->classnumber);
clear();
do
{
printf("请您输入第几次作业(1~10):");
scanf("%d",&n);
clear();
printf("请您输入该次作业成绩:");
scanf("%f",&p->score[n-1]);
clear();//清空缓冲区
printf("您是否继续输入该生成绩,退出请按q,其他键继续:");
flag=getchar();
clear();//清空缓冲区堆积
}
while(flag!='q');
}

void input(stupt st,stupt qt)
{
char flag;
stupt p,q;
p=q=NULL;
printf("请问您确认输入?y.是 n.取消(注意大小写)n");
while((flag=getchar())!='n')
{
clear();//清空缓冲区
if(flag=='y')
{
p=(stupt)malloc(sizeof(st));//动态申请空间
if(p==NULL)
exit(1);
inpu(p);
if(st==NULL)
st=qt=p;
else if(qt!=NULL)
{
qt->next=p; //尾指针非空(及链表已存在)接着尾指针建立链表
qt=p;
}
}
else
{
printf("温馨提示:您存在非法输入,请进入菜单界面重新选择(按8或9):");
return;
}
printf("请问您是否继续输入?y.是 n.否(注意大小写)n");
}
if(flag=='n')
{
Printf_help();
clear();
}
if(p!=NULL&&qt!=NULL)
{
qt->next=NULL;
}

}
//2.导入成绩、
void read1(stupt p,FILE* fp)
{
fscanf(fp,"%s",&p->name);
fscanf(fp,"%d",&p->schoolnumber);
fscanf(fp,"%d",&p->classnumber);
fscanf(fp,"%f",&p->score[0]);
fscanf(fp,"%f",&p->score[1]);
fscanf(fp,"%f",&p->score[2]);
fscanf(fp,"%f",&p->score[3]);
fscanf(fp,"%f",&p->score[4]);
fscanf(fp,"%f",&p->score[5]);
fscanf(fp,"%f",&p->score[6]);
fscanf(fp,"%f",&p->score[7]);
fscanf(fp,"%f",&p->score[8]);
fscanf(fp,"%f",&p->score[9]);
}
//从文件导入数据
void filep_read_to_st(stupt st,FILE* fp)
{
stupt p;
st=NULL;//置空st,准备从文件中导入学生信息
while(1)
{
p=(stupt)malloc(sizeof(stu));
read1(p,fp);
if(feof(fp)) //如果文件结束,则结束(feof:检测流上的文件结束符)
break;
if(st==NULL)

st=qt=p;
else if(qt!=NULL)
{
qt->next=p; //尾指针非空(即链表已存在)接着尾指针建立链表
qt=p;
}
}
if(feof(fp))
{
qt->next=NULL; //如果文件结束,尾指针next指空
}
if(st!=NULL&&feof(fp))
printf("温馨提示:您的文件导入成功!n");
else
printf("温馨提示:您的文件导入失败,请重新导入!n");
}
void readfile(stupt st,FILE* fp)//写入数据方式
{
char flag,flag_1;
char filename[90];
printf("温馨提示:您如果在导入前有过手动输入,请先导出至文件后再进行导入,否则输入那部分数据将丢失。n");
printf("按任意键继续,退出请按q:");
flag_1=getchar();
clear();
if(flag_1=='q')
{
return;
}
printf("程序默认路径导入:");
clear();
fp=fopen("student_homework_infor.txt","r");
if(access("student_homework_infor.txt",0)==1)
{
printf("温馨提示:您的文件不存在!n");
}
if(fp==NULL)
{
printf("温馨提示:打开程序所在目录下的student_homework_infor.txt文件失败,请返回主菜单重试!n");
return;
}
else filep_read_to_st(st,fp);
fclose(fp);

}
//3.按学号查询
void printf_score(stupt p)//输出该学号学生的成绩
{
int n=0;
printf("前十次成绩如下:n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n");
while(n
{
printf("%f ",p->score[n]);
n++;
}
printf("n");
}

void search(stupt st,int snum)//判断学号是否合法
{
stupt p,q;
if(st==NULL)
{
printf("未建立学生信息表,请返回主菜单输入或导入所有学生的信息n");
return;
}
else
{
p=st;
q=p->next;
}
if(p->schoolnumber==snum)
{
printf_score(p); //查找成功输出并返回上级函数
return;
}
while(q!=NULL)
{
if(q->schoolnumber==snum)
{
printf_score(q); //查找成功输出并返回上级函数
return;
}
q=q->next;//下一个
}
printf("查询失败,该学号学生信息不存在n");
}

void school_num_search(stupt st)
{
int snum;
char flag;
do
{
printf("请输入要查找的学生学号(如221):");
scanf("%d",&snum);
clear();//清空scanf结束时进入缓冲的enter符
search(st,snum);
printf("退出请按q,其它任意键继续查找:");
flag=getchar();
clear();//清空回车符
}
while(flag!='q');
if(flag=='q')
{
Printf_help();
}
}
//4.给定班级查询
void printf_infor(stupt p) //输出函数
{
printf("%-5d%-8s%-5d%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1fn",p->classnumber,p->name,p->schoolnumber,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4],p->score[5],p->score[5],p->score[7],p->score[8],p->score[9]);
printf("──────────────────────────────────────n");
}
void search_2(stupt st,int clnum)
{
stupt p,q;
int f=0;
if(st==NULL)
{
printf("未建立学生信息表,请返回主菜单输入所有学生的信息n");
return;
}
else
{
p=st;
q=p->next;
}
printf("班级 姓名 学号 成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10n");
printf("──────────────────────────────────────n");
if(p->classnumber==clnum)
{
printf_infor(p);
f++;
}//查找成功输出
while(q!=NULL)
{
if(q->classnumber==clnum)
{
printf_infor(q);
f++;
}//查找成功输出
q=q->next;//下一个

}
if(f==0)
{
    printf("没有该班级学生信息n");
}

}

void class_num_search(stupt st)//查找班级
{
int clnum;
char flag;
do
{
printf("请输入班级(如101):");
scanf("%d",&clnum);
clear();//清空scanf结束时进入缓冲的enter符
search_2(st,clnum);
printf("退出请按q,其它任意键继续查找:");
flag=getchar();
clear();//清空回车符
}
while(flag!='q');
if(flag=='q')
{
Printf_help();
}
}
//5.修改姓名班级成绩
void change_name(stupt p)//修改姓名
{
printf("原姓名为:%sn",p->name);
printf("请输入新姓名:");
scanf("%s",p->name);
clear();
}
void change_class(stupt p)//修改班级
{
printf("原班级为:%dn",p->classnumber);
printf("请输入新班级:");
scanf("%d",&p->classnumber);
clear();
}
void change_score(stupt p)//修改分数
{
int n;
char flag;
do
{
printf("请输入:要修改的作业的次数(1~10):");
scanf("%d",&n);
clear();//清空缓冲区
printf("原成绩为:%fn",p->score[n-1]);
printf("请输入:该次作业新成绩:");
scanf("%f",&p->score[n-1]);
clear();//清空缓冲区
printf("是否继续修改该生成绩,退出请按q,其他键继续");
flag=getchar();
clear();
}
while(flag!='q');
}
void printf_help_2()//帮助列表
{
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ n");
printf(" |* 请选择操作: |n");
printf(" |
1.修改姓名 |n");
printf(" |
2.修改班级 |n");
printf(" |
3.修改成绩 |n");
printf(" |
0.返回 *|n");
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ n");
printf(":");
}
void change(stupt p)
{
char a;
printf_help_2();
while((a=getchar())!='0')
{

    clear();
    printf("班级  姓名 学号 成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10n");
    printf("──────────────────────────────────────n");
    printf_infor(p);
    switch(a)
    {
    case '1':
    {
        printf("您选择了:1.修改姓名n");
        change_name(p);
        break;
    }
    case '2':
    {
        printf("您选择了:2.修改班级n");
        change_class(p);
        break;
    }
    case '3':
    {
        printf("您选择了:3.修改成绩n");
        change_score(p);
        break;
    }

    default:
    {
        printf("非法输入,请重新选择!n");
        break;
    }
    }
    printf_help_2();
}
if(a=='0')
{
    clear();
    printf("您选择了:0.返回n");
}

}
void search_3(stupt st,int snum)
{
stupt p,q;
int f=0;
if(st==NULL)
{
printf("未建立学生信息表,请返回主菜单输入或导入所有学生的信息n");
return;
}
else
{
p=st;
q=p->next;
}
if(p->schoolnumber==snum)
{
change(p); //查找成功并修改
f++;
return;
}
while(q!=NULL)
{
if(q->schoolnumber==snum)
{
change(q); //查找成功并修改
return;
}
q=q->next;//下一个
}
if(f==0)
{
printf("没有该学生信息n");
}
}
void school_num_change(stupt st)
{
int snum;
char flag;
do
{
printf("请输入要修改学生学号(如101):");
scanf("%d",&snum);
clear();//清空scanf结束时进入缓冲的enter符
search_3(st,snum);
printf("退出请按q,其它任意键继续按学号查找修改信息:");
flag=getchar();
clear();//清空回车符
}
while(flag!='q');
if(flag=='q')
{
Printf_help();
}
}
//6.删除学生信息

void delete_pt(stupt st,int snum)//判断并删除
{
stupt p,q;
if(st==NULL)
{
printf("未建立学生信息表,请返回主菜单输入或导入所有学生的信息n");
return;
}
else
{
p=st;
q=p->next;
}
if(p->schoolnumber==snum)//按照学号删除
{
st=q; //查找成功删除并返回上级函数
printf("班级 姓名 学号 成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10n");
printf("──────────────────────────────────────n");
printf_infor(p);
free(p);
printf("上面信息删除成功!n");
return;
}
while(q!=NULL)
{
if(q->schoolnumber==snum)
{
p->next=q->next; //查找成功删除并返回上级函数
printf("班级 姓名 学号 成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10n");
printf("──────────────────────────────────────n");
printf_infor(q);
free(q);
printf("上面信息删除成功!n");
return;
}
else//下一个
{
p=q;
q=p->next;
}
}
printf("删除失败,该学号学生信息不存在n");

}

void school_num_delete(stupt st)
{
int snum;
char flag;
do
{
printf("请输入要删除的学生学号(如221):");
scanf("%d",&snum);
clear();//清空scanf结束时进入缓冲的enter符
delete_pt(st,snum);
printf("返回请按q,其它任意键继续删除:");
flag=getchar();
clear();//清空回车符
}
while(flag!='q');
if(flag=='q')
{
Printf_help();
}
}
//7.查询成绩,按学号班级,降序

void printf_help_3()//帮助菜单
{
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ n");
printf(" |*请选择操作: |n");
printf(" |
1.按学号查看学生平均成绩 |n");
printf(" |
2.按班级查看学生平均成绩 |n");
printf(" |
3.按平均成绩降序排序(操作执行后将会对学生信息排序 )*|n");
printf(" |* 0.返回主菜单 *|n");
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ n");
printf(":");
}
int aver(stupt p)//平均成绩
{
int n=0;
float sum=0;//和初始化为0
while(n
{
sum+=p->score[n];
n++;
}
return sum;
}
void search_4(stupt st,int snum)
{
stupt p,q;
int f=0;
int sum;
printf("-----------------------------------------------------------------------------n");//分行符
if(st==NULL)
{
printf("未建立学生信息表,请返回主菜单输入或导入所有学生的信息n");
return;
}
else
{
p=st;
q=p->next;
}
if(p->schoolnumber==snum)
{
sum=aver(p);
printf("姓名:%-10s学号:%-10d班级:%-10d作业完成平均成绩:%dn",p->name,p->schoolnumber,p->classnumber,sum/10);
f++;
printf("-----------------------------------------------------------------------------n");//分行符
return;
}//查找成功并输出平均值
while(q!=NULL)
{
if(q->schoolnumber==snum)
{
sum=aver(q);
printf("姓名:%-10s学号:%-10d班级:%-10d作业完成平均成绩:%dn",q->name,q->schoolnumber,q->classnumber,sum/10);
f++;
printf("-----------------------------------------------------------------------------n");//分行符
return;
}//查找成功并输出平均值
q=q->next;//下一个
}
if(f==0)
{
printf("没有该学生信息n");
}

}
void snum_check_aver(stupt st)//按学号输出学生平均成绩
{
int snum;
printf("请输入学号:");
scanf("%d",&snum);
clear();//清空scanf结束时进入缓冲的enter符
search_4(st,snum);
}

void search_5(stupt st,int cnum)
{
stupt p,q;
int f=0;
int sum;
printf("-----------------------------------------------------------------------------n");//分行符
if(st==NULL)
{
printf("未建立学生信息表,请返回主菜单输入或导入所有学生的信息n");
return;
}
else
{
p=st;
q=p->next;
}
if(p->classnumber==cnum)
{
sum=aver(p);
printf("姓名:%-10s学号:%-10d班级:%-10d作业完成平均成绩:%dn",p->name,p->schoolnumber,p->classnumber,sum/10);
f++;
}//查找成功并输出平均值
while(q!=NULL)
{
if(q->classnumber==cnum)
{
sum=aver(q);
printf("姓名:%-10s学号:%-10d班级:%-10d作业完成平均成绩:%dn",q->name,q->schoolnumber,q->classnumber,sum/10);
f++;
}//查找成功并输出平均值
q=q->next;//下一个
}
if(f==0)
{
printf("没有该班级的信息n");
}
printf("-----------------------------------------------------------------------------n");//分行
}
void cnum_check_aver(stupt st)
{
int cnum;
printf("请输入班级:");
scanf("%d",&cnum);
clear();//清空scanf结束时进入缓冲的enter符
search_5(st,cnum);
}

void insert_emp1(stupt emp1,stupt q)
{
stupt pt1,pt2;
pt1=emp1;
pt2=pt1->next;
while(pt2!=NULL)
{
if(aver(q)>aver(pt2))//插到pt2之前
{
pt1->next=q;
q->next=pt2;
return;
}
else//指针后移
{
pt1=pt2;
pt2=pt1->next;
}
}
pt1->next=q;//比所有的都不大,插到末尾
q->next=NULL;
}
void descending_order_check(stupt st)
{
stupt emp1,head1,head2,pt;
float sum;
printf("-----------------------------------------------------------------------------n");//分行符
if(st==NULL)
{
printf("未建立学生信息表,请返回主菜单输入或导入所有学生的信息n");
return;
}
head1=(stupt)malloc(sizeof(stu));
head2=(stupt)malloc(sizeof(stu));//另一个空链表头指针,将st有序插入到head2
head1->next=st->next;
st->next=NULL;
head2->next=st;
pt=head1->next;
while(pt!=NULL)
{
head1->next=pt->next;
insert_emp1(head2,pt);
pt=head1->next;
}
emp1=head2->next;
st=emp1;
while(emp1!=NULL)
{
sum=aver(emp1);
printf("姓名:%-10s学号:%-10d班级:%-10d作业完成平均成绩:%-10.3fn",emp1->name,emp1->schoolnumber,emp1->classnumber,sum/10);
emp1=emp1->next;
}
printf("-----------------------------------------------------------------------------n");//分行符

}
//-----------------------------------------------------------------------------------------------
void statistics_result(stupt st)
{
char flag;
printf_help_3();
while((flag=getchar())!='0')
{

    clear();
    switch(flag)
    {
    case '1':
    {
        printf("您选择了:1.按学号查看学生平均成绩n");
        snum_check_aver(st);
        break;
    }
    case '2':
    {
        printf("您选择了:2.按班级查看学生平均成绩n");
        cnum_check_aver(st);
        break;
    }
    case '3':
    {
        printf("您选择了:3.查看学生平均成绩降序序列n");
        descending_order_check(st);
        break;
    }

    default:
    {
        printf("非法输入,请重新选择!n");
        clear();
        break;
    }
    }
    printf_help_3();
}
if(flag=='0')
{
    printf("您选择了:0.返回主菜单n");
    clear();
    Printf_help();
}

}
//导出
void fileprintf(stupt st,FILE* fp)
{
stupt pt;
pt=st;
while(pt!=NULL)
{
fprintf(fp,"%s %d %d %f %f %f %f %f %f %f %f %f %fn",pt->name,pt->schoolnumber,pt->classnumber,pt->score[0],pt->score[1],pt->score[2],pt->score[3],pt->score[4],pt->score[5],pt->score[6],pt->score[7],pt->score[8],pt->score[9]);
pt=pt->next;
}
printf("文件导出成功 !n");

}
void creat_files(stupt st,FILE* fp)
{

char flag;
char filename[90];
printf("默认路径保存(为当前目录下的student_homework_infor.txt)");
clear();
fp=fopen(".\student_homework_infor.txt","a");
if(fp==NULL)
{
    printf("创建文件至程序所在目录下的student_homework_infor.txt文件失败,请返回主菜单重试!");
    return;
}
else fileprintf(st,fp);
fclose(fp);

}
//注册登录
void printf_log()
{
printf("ttt~~~~~~~~~~~~~~~~~~~~~~~~ n");
printf("ttt|* 请选择操作: |n");
printf("ttt|
1.登录 |n");
printf("ttt|
2.注册 |n");
printf("ttt|
0.退出 |n");
printf("ttt~~~~~~~~~~~~~~~~~~~~~~~~ n");
printf(":");
}
void write_in_file(char *a,char *name,FILE *fp)
{
fprintf(fp,"%s %sn",a,name);
fclose(fp);
printf("您已注册成功!n");
}
void read_passwd(char *a,char *name,FILE *fp)
{
fscanf(fp,"%s",a);
fscanf(fp,"%s",name);
}
int log()
{
char ch;
char a[7]={'0'};
char name[12]={'0'};//初始化
char b[7]={'0'};
FILE
fp;
int i;

fp=fopen("passwd.txt","r");
if(fp==NULL)
{
    printf("注册文件无法打开,请在程序当前目录下创建passwd.txt文件并重新注册!n");
    exit(1);

}
ch=getc(fp);
if(ch==EOF)
{
    printf("未注册,请注册!n");
    return 1;
}
fclose(fp);
fp=fopen("passwd.txt","r");
if(fp==NULL)
{
    fp=fopen("passwd.txt","a");
    exit(1);
    fclose(fp);
}
read_passwd(a,name,fp);
fclose(fp);
printf("用户名:%sn",name);
printf("请输入密码:(6个字符)");
for(i=0;i<6;i++)
{
    b[i]=getch();
    printf("*");
}
b[6]='';
clear();
if(strcmp(a,b)==0)
{
    printf("登陆成功!n");
    return 0;
}
else
{
    printf("密码错误,请重新登录n");
    return 1;
}

}
void login()
{
char a[7]={'0'};
char b[7]={'0'};
char name[12]={'0'};//初始化
FILE* fp;
char ch;
int i;
fp=fopen("passwd.txt","r");
if(fp==NULL)
{
printf("注册文件无法打开或已损坏,请在程序当前目录下创建passwd.txt文件!n");
return;
}
ch=getc(fp);
fclose(fp);
if(ch!=EOF)
{
printf("账户已存在,请返回登陆菜单!n");
return;
}
printf("请输入用户名:(小于12字符)");
scanf("%s",name);
clear();
lab_3:printf("请输入密码:(6个字符)");
for(i=0;i<6;i++)
{
a[i]=getch();
printf("*");
}
clear();
printf("请确认密码:(6个字符)");
for(i=0;i<6;i++)
{
b[i]=getch();
printf("*");
}
clear();
if(strcmp(a,b)!=0)
{
printf("两次输入密码不一致,请重新输入!n");
goto lab_3;
}
fp=fopen("passwd.txt","wb");
write_in_file(a,name,fp);
}
int user_log()
{
char flag;
int f;
do
{
printf_log();
flag=getchar();
clear();
if(flag=='1')
{
f=log();
if(f==0)
{
return 0;
}
}
else if(flag=='2')
{
login();
}
else if(flag=='0')
{
return 1;
}
else
{
printf("非法输入!,请重新新选择:n");
}
}
while(1);

}
////////////////////////////////////////////////-main-//////////////////////////////////////////////////
int main()
{
char a,ch;

printf("                 ┄欢迎您使用学生作业完成情况管理程序┄                     n");
if(user_log()==1)
{
    printf("                           ┄谢谢您的使用┄                                  n");
    return 0;
}

lab_3:
Printf_help();
while((a=getchar())!='0')
{
clear();
switch(a)
{
case '1':
{
printf("您选择了:1.手动输入学生作业的分数n");
input(st,qt);
break;
}

case '2':
{
printf("您选择了:2.从文件导入学生信息n");
readfile(st,fp);
Printf_help();
break;
}
case '3':
{
printf("您选择了:3.给定学号,显示某位学生作业完成情况n");
school_num_search(st);
break;
}
case '4':
{
printf("您选择了:4.输入班级的班号,显示该班所有学生的作业完成情况n");
class_num_search(st);
break;
}
case '5':
{
printf("您选择了:5.输入学生的学号,修改该学生的作业完成信息n");
school_num_change(st);
break;
}
case '6':
{
printf("您选择了:6.输入学生的学号,删除该学生的信息n");
school_num_delete(st);
break;
}
case '7':
{
printf("您选择了:7.显示各类统计信息n");
statistics_result(st);
break;
}
case '8':
{
printf("您选择了:8.菜单n");
Printf_help();
break;
}
case '9':
{
printf("您选择了:9.清屏n");
system("CLS");
Printf_help();
break;
}
case 'a':
{
printf("您选择了:a.导出文件n");
creat_files(st,fp);
Printf_help();
break;
}
default:
{
printf("非法输入,请重新选择!n");
Printf_help();
break;
}

    }
}
if(a=='0')
{
    printf("您选择了:0.退出系统n");
    printf("退出系统时需要导出文件,否则之前操作无效!n");
    printf("按q返回,其它任意键继续n");
    clear();
    if((ch=getchar())=='q')
    {
        clear();
        goto lab_3;
    }
    printf("                           ┄谢谢使用┄                                  n");
}
return 0;

}

解决方案

大哥,你真猛。贴这么大段代码。
建议:
1.你贴个三五行可能有人帮你分析,这么大段没人看。
2.调代码是程序员的最基本素养,要学着自己慢慢调试,刚开始可能很难,过段时间就会发现很爽的

时间: 2024-11-02 10:45:04

学生成绩管理系统-求改正,不知道为什么导不出文件的相关文章

编程c语言-求c++编写学生成绩管理系统

问题描述 求c++编写学生成绩管理系统 求c++编写学生成绩管理系统,要求可以增加,删除,修改查询,,功能 解决方案 http://www.doc88.com/p-698583418612.html 解决方案二: http://blog.csdn.net/sdliujiangbo/article/details/7693269http://wenku.baidu.com/link?url=CjxxWkRyzIFRCDHKjZnbxsv6O3GrmOb15SBHLP1ccXEdmuc7A6Ou05

c#窗体-创建窗体应用程序(学生成绩管理系统),求大神帮助

问题描述 创建窗体应用程序(学生成绩管理系统),求大神帮助 ①收集学生基本信息.学生信息包括学号,姓名,性别,出生年月,所属班级和籍贯(用组合框).要求:学号,姓名,所属班级不能为空:若出生年月有输入,则必须为日期型.点击提交按钮后,弹出消息框显示所填信息. ②收集课程基本信息.课程基本信息包括课程号,课程名称,学时,学分和课程类型.要求:课程号和课程名称不能为空,学时和学分若不为空,必须为整数.课程类型只有必修课和选修课两种选择.点击提交按钮后,弹出消息框显示所填信息. 解决方案 http:/

急求一个简单的学生成绩管理系统,

问题描述 需要一个学生成绩管理系统,只要有简单的增删查改功能就好了,用c#语言编写,sqlserver数据库 解决方案 解决方案二:有人看吗?急切需求....解决方案三:http://download.csdn.net/detail/qifeifei/2269160,你下载解决方案四:要收费的.解决方案五: 解决方案六:任给一个数据库名.数据表名.主键名,要求自动产生完整的对数据库表增删改查交互界面操作程序.解决方案七:这题好像真的很难呢...帮你顶一下...解决方案八:给钱么,要不我帮你做一个

c-求帮助改改我我运行的错误 5位学生4门课学生成绩管理系统

问题描述 求帮助改改我我运行的错误 5位学生4门课学生成绩管理系统 #include#include#define maxsize 5struct student {int num;char name[30]; int englishcomputermathchinese;int rank; };static float aenacoamaach;static int maxchmaxmamaxenmaxcominchminmaminenmincosum[5];void menu (struct

学生信息管理系统-java基于命令行的学生成绩管理系统

问题描述 java基于命令行的学生成绩管理系统 1.设计学生类接口: 2.使用集合框架,实现学生成绩的插入.通过名字查询.显示各科成绩排名列表.显示各科成绩通过学生学号的排名列表. 3.将内存中的集合框架对象进行持久化,下一次运行系统时可直接调用(基础比较差,希望在线指导,不要求源代码,但求思路指导,) 解决方案 成绩录入.可以录入文件.黑屏 输入姓名+各科成绩.直接流写入txt文件. 查询.可以先将文件按行读出,存储在list或者map中.遍历查询输出即可. 解决方案二: 1.持久化 可以持久

c++ 编程问题-学生成绩管理系统编程问题

问题描述 学生成绩管理系统编程问题 学生成绩管理系统设计说明与要求:学生成绩管理是高等学校教务管理的重要组成部分,其内容较多,要求设计的管理系统能够完成以下八种功能: 1) 登记学生成绩(学号.姓名.英语.数学.C++语言-): 2) 修改学生成绩: 3) 打印一个班级学生的单科成绩: 4) 求出每个学生一学期中各科的平均成绩: 5) 打印某一课程成绩处于指定分数段内的学生名单. 6) 成绩统计(各科平均成绩.各科成绩"优秀"."良好"."中等"

c++-学生成绩管理系统课程设计中的问题

问题描述 学生成绩管理系统课程设计中的问题 如上图所示,只剩下两类bug, 不知道是哪方面的问题 PS我在类的后面都加了分好:,所以"PCH......."的那个bug不是分号的问题 解决方案 基本是语法错误,错误的引起不一定是你看到的,也许是因为其他错误导致的提示,比如括号匹配错误 解决方案二: 你的程序在哪里? 你的头文件有没有问题,比如漏分号,特别是class struct之类的. 包含了以后问题比较隐蔽. 解决方案三: 全是语法错误. 虽然报了这么多, 但是可能就只是一个地方的

程序问题-学生成绩管理系统用c++

问题描述 学生成绩管理系统用c++ 用C++编写学生成绩管理系统(用控制台应用程序),最后的结果要是exe,主程序和消息对话框已写好,但是输出的主界面不会编写,求大神帮忙! 解决方案 控制台程序哪里来的对话框?用MFC吧.http://download.csdn.net/detail/muhammadking/3952761 解决方案二: 你说你的主程序和消息对话框已写好,方便贴出来看一下吗? 解决方案三: 用SDK做对话框,你如果用MFC做,最后一编译在Debug里面就有EXE文件生成

学生管理系统-用链表实现学生成绩管理系统的问题

问题描述 用链表实现学生成绩管理系统的问题 今天试图用链表写一个学生成绩管理系统,可是如果要实现既可以按照学号排序又可以按照成绩排序的话,需要对链表进行排序,然后我看网上说对链表排序时一般都很低效,那想问问各位,这样的话用链表划不划算呢,还是干脆用顺序表? 解决方案 链表与顺序表的选择在于你看中哪方面 用顺序表的话如果不知道存储数据的多少,初始分配的内存无法判断,初始分配太多浪费内存,而太少的话又不行.另外,顺序表的定位比较方便. 链表可以动态分配内存,比较方便.链表排序的话可以使用插入排序,冒