2019-06-24 20:22
浏览 197

c程序数据保存后全部被清零,字符还不显示,有没有大佬能看下?

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
void kechengtianjia();
void xianshi();
void kechengchaxun();
void xuanke();
void weihu();
void mingdanchaxun();
void exit();
struct xuanxiukecheng{
int kechenghao;
char kechengming[50];
int xueshi;
int xuefen;
char shangkeshijian[20];
char shangkedidian[20];
char kaikejiaoshi[20];
int xuankerenshu;
int yixuanrenshu;
}course[100];
int n;
int m;
struct xuesheng{
int xuehao;
char banji[20];
char xingming[20];
}student[100];

/******************************************************/

void meau()
{
printf("\n 欢迎进入学生选修课程管理系统!\n");
printf(" **********************制作人:电子172潘敏*************************\n");
printf(" *************************2019年6月*******************************\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(" *
***************************************************************\n");
};

/******************************************************/

void duqu()
{
FILE *fp1;FILE *fp2;
m=0;
fp1=fopen("课程.txt","rb");
while(fread(&course[m],sizeof(struct xuanxiukecheng),1,fp1)==1)
m++;
fclose(fp1);
n=0;
fp2=fopen("学生.txt","rb");
while(fread(&student[n],sizeof(struct xuesheng),1,fp2)==1)
n++;
fclose(fp2);

}

/******************************************************/

void save()
{
int i;
FILE *fp1; FILE *fp2;
fp1=fopen("课程.txt","wb");
for(i=0;i<m;i++){
fwrite(&course[m],sizeof(struct xuanxiukecheng),1,fp1);
}
fclose(fp1);
fp2=fopen("学生.txt","wb");
for(i=0;i<n;i++){
fwrite(&student[n],sizeof(struct xuesheng),1,fp2);
}
fclose(fp2);
}

/******************************************************/

void kechengtianjia()
{
int i;
int p;
char x;
system("cls");
printf("\n请输入要添加的课程数量:");
scanf("%d",&p);
for(i=0;i<p;i++)
{
printf("\n请输入要添加的课程号:");
scanf("%d",&course[m+i].kechenghao);
printf("\n请输入要添加的课程名:");
scanf("%s",course[m+i].kechengming);
printf("\n请输入课程学时:");
scanf("%d",&course[m+i].xueshi);
printf("\n请输入课程学分:");
scanf("%d",&course[m+i].xuefen);
printf("\n请输入上课时间:");
scanf("%s",course[m+i].shangkeshijian);
printf("\n请输入上课地点:");
scanf("%s",course[m+i].shangkedidian);
printf("\n请输入开课教师:");
scanf("%s",course[m+i].kaikejiaoshi);
printf("\n请输入选课人数:");
scanf("%d",&course[m+i].xuankerenshu);
course[i].yixuanrenshu=course[i].xuankerenshu++;
printf("\n是否要求继续输入下一条记录:");
printf("\n输入(y/Y)即可继续\n");
scanf("%s",&x);
if(x=='y'||x=='Y') continue;
else break;

}
m=p+m;
getch();
}

/******************************************************/

void xianshi()
{

int i;
system("cls");

for(i=0;i<m;i++)
{ printf("\n课程号\t课程名\t学时\t学分\t上课时间\t地点\t教师\t已选人数\n");
printf("%d\t",course[i].kechenghao);
printf("%s\t",course[i].kechengming);
printf("%d\t",course[i].xueshi);
printf("%d\t",course[i].xuefen);
printf("%s\t",course[i].shangkeshijian);
printf("%s\t",course[i].shangkedidian);
printf("%s\t",course[i].kaikejiaoshi);
printf("%d\t",course[i].yixuanrenshu);}
}

/******************************************************/

void kechengchaxun()
{
int i,k,s;
char j[20];
system("cls");

printf("\t 1 按课程号查找:\n");
printf("\t 2 按学时查找:\n");
printf("\t 3 按学分查找:\n");
printf("\t 4 按开课教师查找:\n");
printf("\t 请选择[1/2/3/4]:\n");
scanf("%d",&k);
if(k==1)
{
printf("\n请输入要查询的课程号:");
scanf("%d",&s);
for(i=0;i<=n;i++)
{
if(s==course[i].kechenghao)

{

printf("课程号\t课程名\t学时\t学分\t上课时间\t地点\t教师\t已选人数\n");
printf("%d\t",course[i].kechenghao);
printf("%s\t",course[i].kechengming);
printf("%d\t",course[i].xueshi);
printf("%d\t",course[i].xuefen);
printf("%s\t\t",course[i].shangkeshijian);
printf("%s\t",course[i].shangkedidian);
printf("%s\t",course[i].kaikejiaoshi);
printf("%d\t",course[i].yixuanrenshu);

break;
}
}
if(i>n)
printf("找不到要查询的记录!\n");
printf("按回车键返回!");
getch();
}
else if(k==2)
{
printf("\n请输入要查询的课程学时:");
scanf("%d",&s);
for(i=0;i<=n;i++)
{
if(s==course[i].xueshi)

{

printf("课程号\t课程名\t学时\t学分\t上课时间\t地点\t教师\t已选人数\n");
printf("%d\t",course[i].kechenghao);
printf("%s\t",course[i].kechengming);
printf("%d\t",course[i].xueshi);
printf("%d\t",course[i].xuefen);
printf("%s\t\t",course[i].shangkeshijian);
printf("%s\t",course[i].shangkedidian);
printf("%s\t",course[i].kaikejiaoshi);
printf("%d\t",course[i].yixuanrenshu);

break;
}
}
if(i>n)
printf("找不到要查询的记录!\n");
printf("按回车键返回!");
getch();
}
if(k==3)
{
printf("\n请输入要查询的课程学分:");
scanf("%d",&s);
for(i=0;i<=n;i++)
{
if(s==course[i].xuefen)

{

printf("课程号\t课程名\t学时\t学分\t上课时间\t地点\t教师\t已选人数\n");
printf("%d\t",course[i].kechenghao);
printf("%s\t",course[i].kechengming);
printf("%d\t",course[i].xueshi);
printf("%d\t",course[i].xuefen);
printf("%s\t\t",course[i].shangkeshijian);
printf("%s\t",course[i].shangkedidian);
printf("%s\t",course[i].kaikejiaoshi);
printf("%d\t",course[i].yixuanrenshu);

break;
}
}
if(i>n)
printf("找不到要查找的记录!\n");
printf("按回车键返回!");
getch();
}
if(k==4)
{
printf("\n请输入要查询的开课教师:");
scanf("%s",j);
for(i=0;i<=n;i++)
{
if(strcmp(j,course[i].kaikejiaoshi)==0)

{

printf("课程号\t课程名\t学时\t学分\t上课时间\t地点\t教师\t已选人数\n");
printf("%d\t",course[i].kechenghao);
printf("%s\t",course[i].kechengming);
printf("%d\t",course[i].xueshi);
printf("%d\t",course[i].xuefen);
printf("%s\t\t",course[i].shangkeshijian);
printf("%s\t",course[i].shangkedidian);
printf("%s\t",course[i].kaikejiaoshi);
printf("%d\t",course[i].yixuanrenshu);

break;
}
}
if(i>n)
printf("找不到要查找的记录!\n");
printf("按回车键返回!");
getch();
}
}

/******************************************************/

void xuanke()
{
int i,k;

char x;
system("cls");
printf("\n请输入要添加的学生数量:");
scanf("%d",&k);
for(i=0;i<k;i++)
{
printf("\n请输入要添加的学生学号:");
scanf("%d",&student[i].xuehao);
printf("\n请输入要添加的学生班级:");
scanf("%s",student[i].banji);
printf("\n请输入学生姓名:");
scanf("%s",student[i].xingming);
printf("\n请输入课程名次:");
scanf("%s",course[i].kechengming);
printf("\n请输入上课教师:");
scanf("%s",course[i].kaikejiaoshi);
course[i].yixuanrenshu=course[i].xuankerenshu++;
printf("\n是否要求继续输入下一条记录:");
printf("\n输入(y/Y)即可继续\n");
scanf("%s",&x);
if(x=='y'||x=='Y') continue;
else break;
}
n=k+n;
getch();
}

/******************************************************/

void mingdanchaxun()
{
int i,k;
char j[50];
system("cls");

printf("\t 1 按课程号查找:\n");
printf("\t 2 按开课教师查找:\n");
printf("\t 请选择[1/2]:\n");
scanf("%d",&k);
if(k==1)
{
printf("\n请输入要查询的课程号:");
scanf("%s",j);
for(i=0;i<=n;i++)
{
if(j[50]==course[i].kechenghao)

{

printf("学生学号\t学生班级\t学生姓名\t课程名\t教师\t已选人数\n");

printf("%d\t\t",student[i].xuehao);
printf("%s\t\t",student[i].banji);
printf("%s\t\t",student[i].xingming);
printf("%s\t",course[i].kechengming);
printf("%s\t",course[i].kaikejiaoshi);
printf("%d\t",course[i].yixuanrenshu);

break;
}
}
if(i>n)
printf("找不到要查询的记录!\n");
printf("按回车键返回!");
getch();
}
else if(k==2)
{
printf("\n请输入要查询的开课教师:");
scanf("%s",j);
for(i=0;i<=n;i++)
{
if(strcmp(j,course[i].kaikejiaoshi)==0)

{

printf("学生学号\t学生班级\t学生姓名\t课程名\t教师\t已选人数\n");

printf("%d\t\t",student[i].xuehao);
printf("%s\t\t",student[i].banji);
printf("%s\t\t",student[i].xingming);
printf("%s\t",course[i].kechengming);
printf("%s\t",course[i].kaikejiaoshi);
printf("%d\t",course[i].yixuanrenshu);

break;
}
}
if(i>n)
printf("找不到要查询的记录!\n");
printf("按回车键返回!");
getch();
}
}

/******************************************************/

void weihu()
{
int i;
char k;
int a;
char x[15];
char j[20];
system("cls");

printf("\t 1 修改信息:\n");
printf("\t 2 删除信息:\n");
printf("\t 请选择[1/2]:\n");
scanf("%d",&i);
if(i==1)
{
printf("\n请输入要修改的学生姓名:");
scanf("%s",j);
for(i=0;i<n;i++)
{
if(strcmp(j,student[i].xingming)==0)
{
printf("学生学号\t学生班级\t学生姓名\t课程名\t教师\n");
printf("%d\t",student[i].xuehao);
printf("%s\t",student[i].banji);
printf("%s\t",student[i].xingming);
printf("%s\t",course[i].kechengming);
printf("%s\t",course[i].kaikejiaoshi);

  }
  break;

}
if(i>=n)
{
printf("找不到要查询的记录!\n");
printf("按回车键返回!");
getch();
}
else
{
printf("\n是否修改(y/n)?");
getchar();
scanf("%c",&k);
getchar();
if(k=='y'||k=='Y' )

{
printf("\n");
printf("\n请输入修改后的学生学号:");
scanf("%d",&student[i].xuehao);
printf("\n请输入修改后的学生班级:");
scanf("%s",student[i].banji);
printf("\n请输入修改后的学生姓名:");
scanf("%s",student[i].xingming);
printf("\n请输入修改后的课程名:");
scanf("%s",course[i].kechengming);
printf("\n请输入修改后的开课教师:");
scanf("%s",course[i].kaikejiaoshi);
}

}
}
else if(i==2)
{
printf("\n请输入要删除的姓名:");
scanf("%s",&j);
getchar();
for(i=0;i<=n;i++)
if(strcmp(j,student[i].xingming)==0){ a=1;break;}

if(a==1)

{
printf("学生学号\t学生班级\t学生姓名\t课程名\t教师\n");
printf("%d\t",student[i].xuehao);
printf("%s\t",student[i].banji);
printf("%s\t",student[i].xingming);
printf("%s\t",course[i].kechengming);
printf("%s\t",course[i].kaikejiaoshi);
printf("\n是否删除(y/n)?");
scanf("%s",&x);
if(strcmp(x,"y")==0||(strcmp(x,"Y")==0))
{for(a=i;a<n-1;a++)
student[a]=student[a+1];
n--;
}
else
{
printf("按回车键返回:");
getch();}
}
else
{
printf("找不到要删除的记录!\n");
printf("请按回车键返回:");
getch();
}
}
}

/******************************************************/

void main()
{
int i;
duqu();
do{
meau();
scanf("%d",&i);
switch(i)
{

case 1: kechengtianjia();
break;
case 2: xianshi();
break;
case 3: kechengchaxun();
break;
case 4: xuanke();
break;
case 5: weihu();
break;
case 6: mingdanchaxun();
break;
case 7: save();exit(0);
}
}while(1);
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 搭建pt1000三线制高精度测温电路
    • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
    • ¥15 画两个图 python或R
    • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
    • ¥15 八路抢答器设计出现故障
    • ¥15 opencv 无法读取视频
    • ¥15 按键修改电子时钟,C51单片机
    • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
    • ¥20 5037端口被adb自己占了
    • ¥15 python:excel数据写入多个对应word文档