谁来帮我改改这个C语言课程设计提目..谢谢了 高分悬赏 好的话+66分.

题目及要求已知学校可用的教室都存放在文件file25_1.txt中;每天的上课时间段存放在文件file25_2.txt中;教学周1~16周;每周仅允许在周1~周5上课。某... 题目及要求
已知学校可用的教室都存放在文件file25_1.txt中;每天的上课时间段存放在文件file25_2.txt中;教学周1~16周;每周仅允许在周1~周5上课。
某位任课教师想通过你编写的软件申请上课教室。教师申请时,将提供以下信息:教学周,星期,课节,教室。例如:第3周,周4,1~2节,B楼112教室。
如果此教室的此时间段已经被占用,则提示教师,另作其它申请;否则,批准申请,并及时将新的占用信息写入file25_1.txt。
说明:file25_1.txt文件中每行的内容按照顺序为:教学楼号,教室号,若干占用信息。

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
#define SIZE 8

struct class
{char bulding;
int week;
int day;
int class;
}cla[SIZE];

void write();
void load();
void complet();

int save();
int menu();
int j;

main()
{ clrscr();
for(;;)
{
switch(menu())
{

case 1:load();break;
case 2:write();break;
case 3:complet(); break;
case 4:exit(0);
}
}
}

int menu()/*menu*/
{int c;
printf("******************welcome******************\n");
printf("* 1)read *\n");
printf("* 2)input *\n");
printf("* 3) response apply *\n");
printf("* 4).exit *\n");
printf("*******************************************\n");
printf("qing shu ru");
scanf("%d",&c);
if(c>4&&c<1)
printf("wrong");
return (c);
}

void load()/**/
{
FILE*fp;
int i;
if((fp=fopen("d:\\file25_1.txt","rb"))==NULL)
{
printf("cannot open infile\n");
return;
}
printf("bulding classroom week day class\n");
for(i=0;i<SIZE;i++)
{
fscanf(fp,"%c%d%d%d\n",&cla[i].bulding,&cla[i].week,&cla[i].day,&cla[i].class);
if(feof(fp)!=0)
continue;

printf("%-5c%4d%4d%4d\n",cla[i].bulding,cla[i].week,cla[i].day,cla[i].class);
}
fclose(fp);
}

void write()/**/
{FILE*fp;
int i,j=10000;
printf("bulding");
scanf("%s",cla[j].bulding);
printf(".week");
scanf("%d",&cla[j].week);
printf("day");
scanf("%d",&cla[j].day);
printf("class");
scanf("%d",&cla[j].class);

if((fp=fopen("d:\\file25_1.txt","rb"))==NULL)
{
printf("cannot open infile\n");
return;
}
for(i=0;i<SIZE;i++)
{
fscanf(fp,"%c%d%d%d%d\n",&cla[i].bulding,&cla[i].week,&cla[i].day,&cla[i].class);

if((strcmp(cla[j].bulding,cla[i].bulding)==0)&&(strcmp(cla[j].week,cla[i].week)==0)&&(strcmp(cla[j].day,cla[i].day)==0)&&(strcmp(cla[j].class,cla[i].class)==0))
{printf("sorry,this classroom have choose!\n");break;}

if(feof(fp)!=0)
continue;}
printf("you can use this room\n");
}
void complet()
{
int i;
printf("be sure? 1)yes 2)no\n");
scanf("%d",&i);
if(i==2)
return;
if(i==1)
{FILE*fp;
if((fp=fopen("d:\\file25_1.txt","a"))==NULL)
{printf("can not open\n");
return;
}
fprintf(fp,"%c%d%d%d\n",cla[10000].bulding,cla[10000].week,cla[10000].day,cla[10000].class);
fclose(fp);}
return;
}
最好在多加些注释..因为看不明白哦.. 我还要答辩 .闷.
展开
 我来答
a86685260
2007-09-12
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
已知学校可用的教室都存放在文件file25_1.txt中;每天的上课时间段存放在文件file25_2.txt中;教学周1~16周;每周仅允许在周1~周5上课。
某位任课教师想通过你编写的软件申请上课教室。教师申请时,将提供以下信息:教学周,星期,课节,教室。例如:第3周,周4,1~2节,B楼112教室。
如果此教室的此时间段已经被占用,则提示教师,另作其它申请;否则,批准申请,并及时将新的占用信息写入file25_1.txt。
说明:file25_1.txt文件中每行的内容按照顺序为:教学楼号,教室号,若干占用信息。

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
#define SIZE 8

struct class
{char bulding;
int week;
int day;
int class;
}cla[SIZE];

void write();
void load();
void complet();

int save();
int menu();
int j;

main()
{ clrscr();
for(;;)
{
switch(menu())
{

case 1:load();break;
case 2:write();break;
case 3:complet(); break;
case 4:exit(0);
}
}
}

int menu()/*menu*/
{int c;
printf("******************welcome******************\n");
printf("* 1)read *\n");
printf("* 2)input *\n");
printf("* 3) response apply *\n");
printf("* 4).exit *\n");
printf("*******************************************\n");
printf("qing shu ru");
scanf("%d",&c);
if(c>4&&c<1)
printf("wrong");
return (c);
}

void load()/**/
{
FILE*fp;
int i;
if((fp=fopen("d:\\file25_1.txt","rb"))==NULL)
{
printf("cannot open infile\n");
return;
}
printf("bulding classroom week day class\n");
for(i=0;i<SIZE;i++)
{
fscanf(fp,"%c%d%d%d\n",&cla[i].bulding,&cla[i].week,&cla[i].day,&cla[i].class);
if(feof(fp)!=0)
continue;

printf("%-5c%4d%4d%4d\n",cla[i].bulding,cla[i].week,cla[i].day,cla[i].class);
}
fclose(fp);
}

void write()/**/
{FILE*fp;
int i,j=10000;
printf("bulding");
scanf("%s",cla[j].bulding);
printf(".week");
scanf("%d",&cla[j].week);
printf("day");
scanf("%d",&cla[j].day);
printf("class");
scanf("%d",&cla[j].class);

if((fp=fopen("d:\\file25_1.txt","rb"))==NULL)
{
printf("cannot open infile\n");
return;
}
for(i=0;i<SIZE;i++)
{
fscanf(fp,"%c%d%d%d%d\n",&cla[i].bulding,&cla[i].week,&cla[i].day,&cla[i].class);

if((strcmp(cla[j].bulding,cla[i].bulding)==0)&&(strcmp(cla[j].week,cla[i].week)==0)&&(strcmp(cla[j].day,cla[i].day)==0)&&(strcmp(cla[j].class,cla[i].class)==0))
{printf("sorry,this classroom have choose!\n");break;}

if(feof(fp)!=0)
continue;}
printf("you can use this room\n");
}
void complet()
{
int i;
printf("be sure? 1)yes 2)no\n");
scanf("%d",&i);
if(i==2)
return;
if(i==1)
{FILE*fp;
if((fp=fopen("d:\\file25_1.txt","a"))==NULL)
{printf("can not open\n");
return;
}
fprintf(fp,"%c%d%d%d\n",cla[10000].bulding,cla[10000].week,cla[10000].day,cla[10000].class);
fclose(fp);}
return;
}
问题补充:最好在多加些注释..因为看不明白哦.. 我还要答辩 .闷.
提问者:咘叮ㄨ鉎⒎ - 助理 二级

答复共 1 条
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
#define SIZE 8

struct class //定义一个结构用来存储教室的信息
{char bulding; //所在楼
int week; //上课时间
int day; //不知道为啥用
int class; //教室
}cla[SIZE];//定义一个结构数组,最大为8个此结构,也可改变SIZE的值来改变结构数组的大小。

void write(); //声明函数
void load(); //声明函数
void complet(); //声明函数

int save(); //声明函数
int menu(); //声明函数
int j; //定义全局变量

main() //主函数
{ clrscr(); //清除屏幕
for(;;) //循环调用功能函数
{
switch(menu()) //调用菜单函数,并利用其返回值确定操作项目,switch()多分支语句运用。
{

case 1:load();break;//如返回1,运行初始化函数
case 2:write();break; //如返回2,运行功能函数
case 3:complet(); break; //如返回3,运行功能函数
case 4:exit(0); //如返回4,退出程序
}
}
}

int menu()/*menu*/ //子函数
{int c; //定义输入菜单选项
printf("******************welcome******************\n");
printf("* 1)read *\n");
printf("* 2)input *\n");
printf("* 3) response apply *\n");
printf("* 4).exit *\n");
printf("*******************************************\n");
printf("qing shu ru");
scanf("%d",&c);
if(c>4&&c<1)
printf("wrong");
return (c); //返回输入的操作项
}

void load()/**/ //初始化函数
{
FILE*fp; //定义文件指针
int i;
if((fp=fopen("d:\\file25_1.txt","rb"))==NULL)//判断是否能够以二进制只读形式打开d:\file25_1.txt文件
{
printf("cannot open infile\n");
return; //异常中止,建议采用exit(1)函数返回操作系统
}
printf("bulding classroom week day class\n"); //按格式输出file25_1.txt的内容
for(i=0;i<SIZE;i++) //最多只读取SIZE组数据,
{
fscanf(fp,"%c%d%d%d\n",&cla[i].bulding,&cla[i].week,&cla[i].day,&cla[i].class); //从文件中读取数据到结构数组中,其中bulding只能接受单个字符,不知是否合乎你的要求,如要接受字符串应在结构中定义数组
if(feof(fp)!=0) //判断是否到了文件末尾,此处用feof()函数判断文件是否到了末尾,但对舆空文件,其判断结果可能会出现错误,建议使用fget(c)=="\0"
continue; //如果不是末尾,跳过for中continue后面的语句,继续从for语句开头,开始执行(也就是跳过本次循环)

printf("%-5c%4d%4d%4d\n",cla[i].bulding,cla[i].week,cla[i].day,cla[i].class); //此句只能在到了文件末尾后运行,但是此for中最多能从文件中读取SIZE组数据,是否已经到文件末尾不可知,所以此句是否运行不可知。 即使此句运行了,也只能输出读出的最后一组数据,故建议你将取出数据,舆显示数据分开进行。
}
fclose(fp);
}

void write()/**/
{FILE*fp;
int i,j=10000;
printf("bulding"); //此处你应该是要输入你想查询的教室的信息,但是存储到结构cla[i]中肯定出错,因为你的j=10000,超过了开头定义的SIZE的大小范围,应该改的小於SIZE,或者把 SIZE改到大於j.
scanf("%s",cla[j].bulding);
printf(".week");
scanf("%d",&cla[j].week);
printf("day");
scanf("%d",&cla[j].day);
printf("class");
scanf("%d",&cla[j].class);

if((fp=fopen("d:\\file25_1.txt","rb"))==NULL)
{
printf("cannot open infile\n");
return;
}
for(i=0;i<SIZE;i++) //load()函数中已经存储了订阅的教室信息,此处为什麼还要将这些信息存储到结构中?不是重复吗?
{
fscanf(fp,"%c%d%d%d%d\n",&cla[i].bulding,&cla[i].week,&cla[i].day,&cla[i].class);

if((strcmp(cla[j].bulding,cla[i].bulding)==0)&&(strcmp(cla[j].week,cla[i].week)==0)&&(strcmp(cla[j].day,cla[i].day)==0)&&(strcmp(cla[j].class,cla[i].class)==0))//此处比较输入的信息舆存储的信息是否有重复,有则表示教室占用,strcmp(str1,str2),为字符串比较函数,而你的上述结构中的全部为整型数据,建议全部用字符型,不过此处应该不会出现错误,因为整型和字符型可相互转换;如果你改为字符型输入,建议使用stricmp(str1,str2)函数比较字符串,因为它可以忽略大小写的。
{printf("sorry,this classroom have choose!\n");break;}

if(feof(fp)!=0)//如果不用再次读文件,这里的部分也可以不用了
continue;}
printf("you can use this room\n");
}

void complet() //如果找到教室,确定是否预定函数
{
int i;
printf("be sure? 1)yes 2)no\n"); //输出选择项
scanf("%d",&i);
if(i==2)
return; //选择2则退出
if(i==1)
{FILE*fp; //选择1则存储信息到文件中
if((fp=fopen("d:\\file25_1.txt","a"))==NULL)//此处为追加方式打开文件
{printf("can not open\n");
return; //再次建议使用exit(1)退出程序
}
fprintf(fp,"%c%d%d%d\n",cla[10000].bulding,cla[10000].week,cla[10000].day,cla[10000].class);
fclose(fp);} //写入刚此输入的教室信息
return; //ok返回
}
完了,以上的问题自己改改吧,好多啊。
侠侠_
2007-09-17 · TA获得超过291个赞
知道答主
回答量:71
采纳率:0%
帮助的人:0
展开全部
or(i=0;i<SIZE;i++) //load()函数中已经存储了订阅的教室信息,此处为什麼还要将这些信息存储到结构中?不是重复吗?
{
fscanf(fp,"%c%d%d%d%d\n",&cla[i].bulding,&cla[i].week,&cla[i].day,&cla[i].class);

if((strcmp(cla[j].bulding,cla[i].bulding)==0)&&(strcmp(cla[j].week,cla[i].week)==0)&&(strcmp(cla[j].day,cla[i].day)==0)&&(strcmp(cla[j].class,cla[i].class)==0))//此处比较输入的信息舆存储的信息是否有重复,有则表示教室占用,strcmp(str1,str2),为字符串比较函数,而你的上述结构中的全部为整型数据,建议全部用字符型,不过此处应该不会出现错误,因为整型和字符型可相互转换;如果你改为字符型输入,建议使用stricmp(str1,str2)函数比较字符串,因为它可以忽略大小写的。
{printf("sorry,this classroom have choose!\n");break;}

if(feof(fp)!=0)//如果不用再次读文件,这里的部分也可以不用了
continue;}
printf("you can use this room\n");
}

void complet() //如果找到教室,确定是否预定函数
{
int i;
printf("be sure? 1)yes 2)no\n"); //输出选择项
scanf("%d",&i);
if(i==2)
return; //选择2则退出
if(i==1)
{FILE*fp; //选择1则存储信息到文件中
if((fp=fopen("d:\\file25_1.txt","a"))==NULL)//此处为追加方式打开文件
{printf("can not open\n");
return; //再次建议使用exit(1)退出程序
}
fprintf(fp,"%c%d%d%d\n",cla[10000].bulding,cla[10000].week,cla[10000].day,cla[10000].class);
fclose(fp);} //写入刚此输入的教室信息
return; //ok返回
}
完了,以上的问题自己改改吧,好多啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友565c0da6a
推荐于2016-10-22 · 超过48用户采纳过TA的回答
知道答主
回答量:263
采纳率:0%
帮助的人:160万
展开全部
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
#define SIZE 8

struct class //定义一个结构用来存储教室的信息
{char bulding; //所在楼
int week; //上课时间
int day; //不知道为啥用
int class; //教室
}cla[SIZE];//定义一个结构数组,最大为8个此结构,也可改变SIZE的值来改变结构数组的大小。

void write(); //声明函数
void load(); //声明函数
void complet(); //声明函数

int save(); //声明函数
int menu(); //声明函数
int j; //定义全局变量

main() //主函数
{ clrscr(); //清除屏幕
for(;;) //循环调用功能函数
{
switch(menu()) //调用菜单函数,并利用其返回值确定操作项目,switch()多分支语句运用。
{

case 1:load();break;//如返回1,运行初始化函数
case 2:write();break; //如返回2,运行功能函数
case 3:complet(); break; //如返回3,运行功能函数
case 4:exit(0); //如返回4,退出程序
}
}
}

int menu()/*menu*/ //子函数
{int c; //定义输入菜单选项
printf("******************welcome******************\n");
printf("* 1)read *\n");
printf("* 2)input *\n");
printf("* 3) response apply *\n");
printf("* 4).exit *\n");
printf("*******************************************\n");
printf("qing shu ru");
scanf("%d",&c);
if(c>4&&c<1)
printf("wrong");
return (c); //返回输入的操作项
}

void load()/**/ //初始化函数
{
FILE*fp; //定义文件指针
int i;
if((fp=fopen("d:\\file25_1.txt","rb"))==NULL)//判断是否能够以二进制只读形式打开d:\file25_1.txt文件
{
printf("cannot open infile\n");
return; //异常中止,建议采用exit(1)函数返回操作系统
}
printf("bulding classroom week day class\n"); //按格式输出file25_1.txt的内容
for(i=0;i<SIZE;i++) //最多只读取SIZE组数据,
{
fscanf(fp,"%c%d%d%d\n",&cla[i].bulding,&cla[i].week,&cla[i].day,&cla[i].class); //从文件中读取数据到结构数组中,其中bulding只能接受单个字符,不知是否合乎你的要求,如要接受字符串应在结构中定义数组
if(feof(fp)!=0) //判断是否到了文件末尾,此处用feof()函数判断文件是否到了末尾,但对舆空文件,其判断结果可能会出现错误,建议使用fget(c)=="\0"
continue; //如果不是末尾,跳过for中continue后面的语句,继续从for语句开头,开始执行(也就是跳过本次循环)

printf("%-5c%4d%4d%4d\n",cla[i].bulding,cla[i].week,cla[i].day,cla[i].class); //此句只能在到了文件末尾后运行,但是此for中最多能从文件中读取SIZE组数据,是否已经到文件末尾不可知,所以此句是否运行不可知。 即使此句运行了,也只能输出读出的最后一组数据,故建议你将取出数据,舆显示数据分开进行。
}
fclose(fp);
}

void write()/**/
{FILE*fp;
int i,j=10000;
printf("bulding"); //此处你应该是要输入你想查询的教室的信息,但是存储到结构cla[i]中肯定出错,因为你的j=10000,超过了开头定义的SIZE的大小范围,应该改的小於SIZE,或者把 SIZE改到大於j.
scanf("%s",cla[j].bulding);
printf(".week");
scanf("%d",&cla[j].week);
printf("day");
scanf("%d",&cla[j].day);
printf("class");
scanf("%d",&cla[j].class);

if((fp=fopen("d:\\file25_1.txt","rb"))==NULL)
{
printf("cannot open infile\n");
return;
}
for(i=0;i<SIZE;i++) //load()函数中已经存储了订阅的教室信息,此处为什麼还要将这些信息存储到结构中?不是重复吗?
{
fscanf(fp,"%c%d%d%d%d\n",&cla[i].bulding,&cla[i].week,&cla[i].day,&cla[i].class);

if((strcmp(cla[j].bulding,cla[i].bulding)==0)&&(strcmp(cla[j].week,cla[i].week)==0)&&(strcmp(cla[j].day,cla[i].day)==0)&&(strcmp(cla[j].class,cla[i].class)==0))//此处比较输入的信息舆存储的信息是否有重复,有则表示教室占用,strcmp(str1,str2),为字符串比较函数,而你的上述结构中的全部为整型数据,建议全部用字符型,不过此处应该不会出现错误,因为整型和字符型可相互转换;如果你改为字符型输入,建议使用stricmp(str1,str2)函数比较字符串,因为它可以忽略大小写的。
{printf("sorry,this classroom have choose!\n");break;}

if(feof(fp)!=0)//如果不用再次读文件,这里的部分也可以不用了
continue;}
printf("you can use this room\n");
}

void complet() //如果找到教室,确定是否预定函数
{
int i;
printf("be sure? 1)yes 2)no\n"); //输出选择项
scanf("%d",&i);
if(i==2)
return; //选择2则退出
if(i==1)
{FILE*fp; //选择1则存储信息到文件中
if((fp=fopen("d:\\file25_1.txt","a"))==NULL)//此处为追加方式打开文件
{printf("can not open\n");
return; //再次建议使用exit(1)退出程序
}
fprintf(fp,"%c%d%d%d\n",cla[10000].bulding,cla[10000].week,cla[10000].day,cla[10000].class);
fclose(fp);} //写入刚此输入的教室信息
return; //ok返回
}
完了,以上的问题自己改改吧,好多啊。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nala7803699
2007-09-12
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
bu hui .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式