if(fwrite(&x[i],sizeof(structxkxt),1,fp)!
=1)
{printf("\n文件写入错误\n");
exit(0);
}
else
{if(i==0)
{printf("\n你输入的内容为:
\n");
printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
}
printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
}
fclose(fp);
}
voidsearch()/*查找课程信息函数*/
{FILE*fp;
inti,n;
intnum;
charname[20];
charkind[10];
if((fp=fopen("xk.txt","rb"))==NULL)/*打开文件并判断是否打开*/
{printf("\n不能打开此文件\n");
exit(0);
}
printf("\n全部内容为:
\n");
printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
for(i=0;fread(&x[i],sizeof(structxkxt),1,fp)!
=0;i++)/*写入文件并在屏幕输出*/
{printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
}
printf("\n请输入你要按哪个类型查找:
1,课程编号;2,课程名称;3,课程性质。
\n");
do/*根据类型查找课程*/
{scanf("%d",&n);
switch(n)
{case1:
printf("\n请输入课程编号:
\n");scanf("%d",&num);
for(i=0;i<20;i++)
if(num==x[i].num)
{printf("\n你要查找的课程信息为:
\n");
printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
break;
}
break;
case2:
printf("\n请输入课程名称:
\n");scanf("%s",name);
for(i=0;i<20;i++)
if(strcmp(name,x[i].name)==0)
{printf("\n你要查找的课程信息为:
\n");
printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
break;
}
break;
case3:
printf("\n请输入课程性质:
\n");scanf("%s",kind);
for(i=0;i<20;i++)
if(strcmp(kind,x[i].kind)==0)
{printf("\n你要查找的课程信息为:
\n");
printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
break;
}
break;
default:
printf("\n输入错误,请重新输入:
\n");
}
}
while(n<1||n>3);/*实现重新输入的功能*/
if(i==20)
printf("\n无法找到所对应的课程,请重新查找。
\n");
fclose(fp);
}
voidmodify()/*修改课程信息函数*/
{FILE*fp;
intflag=0,size=0,n,i;
intnum[2],num1;
charname[2][20],name1[20];
charkind[2][10],kind1[10];
intstime[2];
intttime[2];
intetime[2];
floatscore[2];
intterm[2];
if((fp=fopen("xk.txt","rb"))==NULL)/*打开文件并判断是否打开*/
{printf("\n不能打开此文件\n");
exit(0);
}
printf("\n原来内容为:
\n");
printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
for(i=0;fread(&x[i],sizeof(structxkxt),1,fp)!
=0;i++)/*写入文件并在屏幕输出*/
{printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
}
fclose(fp);
printf("\n请先按以下三种方式确定你要修改的课程:
1,课程编号;2,课程名称;3,课程性质。
\n");
do/*根据类型查找课程*/
{scanf("%d",&n);
switch(n)
{case1:
printf("\n请输入课程编号:
\n");scanf("%d",&num1);
for(i=0;i<20;i++)
if(num1==x[i].num)
{printf("\n你要查找的课程信息为:
\n");
printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
break;
}
break;
case2:
printf("\n请输入课程名称:
\n");scanf("%s",name1);
for(i=0;i<20;i++)
if(strcmp(name1,x[i].name)==0)
{printf("\n你要查找的课程信息为:
\n");
printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
break;
}
break;
case3:
printf("\n请输入课程性质:
\n");scanf("%s",kind1);
for(i=0;i<20;i++)
if(strcmp(kind1,x[i].kind)==0)
{printf("\n你要查找的课程信息为:
\n");
printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
break;
}
break;
default:
printf("\n输入错误,请重新输入:
\n");
}
}
while(n<1||n>3);/*实现重新输入的功能*/
if(i==20)
{printf("\n无法找到所对应的课程,请重新修改。
\n");
return;
}
printf("\n请输入你要修改课程信息的编号:
\n1,课程编号;2,课程名称;3,课程性质;4,总学时;5,授课学学时;\n6,实验或上机学时;7,学分;8,开课学时。
\n");
do
{if(flag)/*判断是否是重新输入*/
printf("\n输入有误,请重新输入你要修改课程信息的编号:
\n");
scanf("%d",&n);
switch(n)
{case1:
printf("\n请输入要修改的课程编号:
\n");
scanf("%d",&num[0]);
printf("\n请输入修改后的课程编号:
\n");
scanf("%d",&num[1]);
flag=1;
if(num[0]==x[i].num)
{x[i].num=num[1];
flag=0;
}
break;
case2:
printf("\n请输入要修改的课程名称:
\n");
scanf("%s",&name[0]);
printf("\n请输入修改后的课程名称:
\n");
scanf("%s",&name[1]);
flag=1;
if(strcmp(x[i].name,name[0])==0)
{strcpy(x[i].name,name[1]);
flag=0;
}
break;
case3:
printf("\n请输入要修改的课程性质:
\n");
scanf("%s",&kind[0]);
printf("\n请输入修改后的课程性质:
\n");
scanf("%s",&kind[1]);
flag=1;
if(strcmp(x[i].kind,kind[0])==0)
{strcpy(x[i].kind,kind[1]);
flag=0;
}
break;
case4:
printf("\n请输入要修改的课程总学时:
\n");
scanf("%d",&stime[0]);
printf("\n请输入修改后的课程总学时:
\n");
scanf("%d",&stime[1]);
flag=1;
if(stime[0]==x[i].stime)
{x[i].stime=stime[1];
flag=0;
}
break;
case5:
printf("\n请输入要修改的课程授课学学时:
\n");
scanf("%d",&ttime[0]);
printf("\n请输入修改后的课程授课学学时:
\n");
scanf("%d",&ttime[1]);
flag=1;
if(ttime[0]==x[i].ttime)
{x[i].ttime=ttime[1];
flag=0;
}
break;
case6:
printf("\n请输入要修改的课程实验或上机学时:
\n");
scanf("%d",&etime[0]);
printf("\n请输入修改后的课程实验或上机学时:
\n");
scanf("%d",&etime[1]);
flag=1;
if(etime[0]==x[i].etime)
{x[i].etime=etime[1];
flag=0;
}
break;
case7:
printf("\n请输入要修改的课程学分:
\n");
scanf("%f",&score[0]);
printf("\n请输入修改后的课程学分:
\n");
scanf("%f",&score[1]);
flag=1;
if(score[0]==x[i].score)
{x[i].score=score[1];
flag=0;
}
break;
case8:
printf("\n请输入要修改的课程开课学期:
\n");
scanf("%d",&term[0]);
printf("\n请输入修改后的课程开课学期:
\n");
scanf("%d",&term[1]);
flag=1;
if(term[0]==x[i].term)
{x[i].term=term[1];
flag=0;
}
break;
}
}
while(flag);
for(i=0;i<20;i++)/*统计总的课程数*/
if(x[i].term)
size++;
fp=fopen("xk.txt","wb");/*打开文件并判断是否打开*/
for(i=0;iif(fwrite(&x[i],sizeof(structxkxt),1,fp)!
=1)
printf("\n文件写入出错\n");
fclose(fp);
if((fp=fopen("xk.txt","rb"))==NULL)/*打开文件并判断是否打开*/
{printf("\n不能打开此文件\n");
exit(0);
}
printf("\n修改后的全部内容为:
\n");
printf("*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");
for(i=0;iprintf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,
x[i].name,x[i].kind,x[i].stime,x[i].ttime,
x[i].etime,x[i].score,x[i].term);
fclose(fp);
}
voidmain()
{
intn,i;
do
{printf("\n***************************欢迎使用学生选修课程系统***************************\n\n");
printf("\t\t\t请输入实现功能的编号\n\t\t\t*\t1,新建;\t*\n\t\t\t*\t2,添加;\t*\n\t\t\t*\t3,查找;\t*\n\t\t\t*\t4,修改;\t*\n\t\t\t*\t0,退出。
\t*\n");
printf("\n你选择的是:
");
scanf("%d",&n);
switch(n)/*实现新建、添加、查找、修改功能*/
{
case0:
break;
case1:
printf("\n请输入要输入的课程数目:
");
scanf("%d",&size1);
printf("\n请输入所有课程的信息:
\n*******************************************************************************\n");
for(i=0;i{
if(i)
printf("\n请再输入下一门课的信息:
\n\n");
printf("请输入课程编号:
");
scanf("%d",&x[i].num);
printf("\n请输入课程名称:
");
scanf("%s",x[i].name);
printf("\n请输入课程性质:
");
scanf("%s",x[i].kind);
printf("\n请输入课程总学时:
");
scanf("%d",&x[i].stime);
printf("\n请输入课程授课学学时:
");
scanf("%d",&x[i].ttime);
printf("\n请输入课程实验或上机学时:
");
scanf("%d",&x[i].etime);
printf("\n请输入课程学分:
");
scanf("%f",&x[i].score);
printf("\n请输入课程开课学期:
");
scanf("%d",&x[i].term);
}
newbuild();break;
case2:
printf("\n请输入要输入的课程数目:
");
scanf("%d",&size2);
printf("\n请输入所有课程的信息:
\n*******************************************************************************\n");
for(i=0;i{
if(i)
printf("\n请再输入下一门课的信息:
\n\n");
printf("\n请输入课程编号:
");
scanf("%d",&x[i].num);
printf("\n请输入课程名称:
");
scanf("%s",x[i].name);
printf("\n请输入课程性质:
");
scanf("%s",x[i].kind);
printf("\n请输入课程总学时:
");
scanf("%d",&x[i].stime);
printf("\n请输入课程授课学学时:
");
scanf("%d",&x[i].ttime);
printf("\n请输入课程实验或上机学时:
");
scanf("%d",&x[i].etime);
printf("\n请输入课程学分:
");
scanf("%f",&x[i].score);
printf("\n请输入课程开课学期:
");
scanf("%d",&x[i].term);
}
add();break;
case3:
search();break;
case4:
modify();break;
default:
printf("\n输入有误,请重新输入!
\n");
}
}
while(n);/*实现循环输入*/
printf("******************************谢谢使用本系统,再见******************************\n");
}
运行示例:
##################按提示操作即可。