C语言课设求帮忙,各位大神,谢谢了

课程设计任务书
学院: 专业: 班级:
学号: 题目:“健身跑”次数管理系统
一、课程设计时间
二、课程设计内容
用C语言编写软件完成以下任务:记录学生参加“健身跑”活动的次数。
学生的记录信息要保存在myfile.dat文件中(记录结构至少应该包括以下三项:学号,姓名、累计次数)。4名学生的编号与姓名如下:5760,杜永宁;3920,王传华;2940,殷泳;5440,杨柳青。
该系统具有如下功能:
(1) 学生名单输入。
(2) 跑步签到(每签到一次,累计次数加1)。
(3) 查询(可按学号、次数进行查询)。
(4) 退出程序
三、课程设计要求
程序质量:
贯彻结构化的程序设计思想。
用户界面友好,功能明确,操作方便。
代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:________ 学生签名:________
五、成绩
六、教师评语

#include<stdio.h>
#include<string.h>
void menu();//输出主菜单
void create();//1.学生名单输入
void sign();//2.跑步签到
void search();//3.查询
void save();//保存
int i,n;
struct Student
{
char name[20];
char num[20];
int time[3];
};
struct Student stu[20];
int main()
{

do{
menu();
scanf("%d",&n);
switch(n)
{
case 1: printf("1.学生名单输入\n");create();break;
case 2: printf("2.跑步签到!\n");sign();break;
case 3: printf("3.查询!\n");search();break;
case 0: printf("0.退出系统!\n");break;
default:printf("您输入的选项不存在,请重新确认后再次输入!\n");
}
}
while(n>0);
return 0;
}
void menu()
{
printf("欢迎进入跑步签到系统\n");
printf("1.学生名单输入\n");
printf("2.跑步签到\n");
printf("3.查询\n");
printf("0.退出系统\n");
printf("请输入要选择的菜单:\n");
}
void save()
{
FILE *fp;

}
void create()
{
int u;
for(u=0;u<4;u++)
{
printf("请输入学生姓名:");
scanf("%s",stu[u].name);
printf("请输入学号:");
scanf("%s",stu[u].num);
printf("请输入次数:");
scanf("%d",stu[u].time);
}
save();
}
void sign()
{
int w;
char x[20];
printf("请输入打卡的学生的学号:");
scanf("%s",&x);
for(w=0;w<4;w++)
{
if(strcmp(stu[w].num,x)==0)
break;
}
*stu[w].time=*stu[w].time+1;
printf("签到成功\n");
save();
}
void search()
{
int w;
char x[20];
printf("请输入你想查找的学生的学号:");
scanf("%s",&x);
for(w=0;w<4;w++)
{
if(strcmp(stu[w].num,x)==0)
break;
}
printf("姓名\t学号\t次数\t\n");
printf("%s\t",stu[w].name);
printf("%s\t",stu[w].num);
printf("%d\n",stu[w].time);
}

保存的函数不会写,而且程序有bug,求大神帮忙补充并解决呗,我已经疯了,谢谢了

#include<stdio.h>
#include<string.h>
void menu();//输出主菜单
void create();//1.学生名单输入
void sign();//2.跑步签到
void search();//3.查询
void save();//保存
int i,n;
struct Student
 {
  char name[20];
  char num[20];
  int time;
 };
struct Student stu[4];
int main()
{
 
 do{
  menu();
  scanf("%d",&n);
  switch(n)
  {
   case 1: printf("1.学生名单输入\n");create();break;
   case 2: printf("2.跑步签到!\n");sign();break;
   case 3: printf("3.查询!\n");search();break;
   case 0: printf("0.退出系统!\n");break;
   default:printf("您输入的选项不存在,请重新确认后再次输入!\n");
  }
  }
 while(n>0);
 return 0;
}
void menu()
{
printf("欢迎进入跑步签到系统\n");
printf("1.学生名单输入\n");
printf("2.跑步签到\n");
printf("3.查询\n");
printf("0.退出系统\n");
printf("请输入要选择的菜单:\n");
}
void save()
{
 FILE *fp;
 fp = fopen("myfile.dat","a+");
 if(fp == NULL )
 printf("Cannot open file\n");
 fwrite(stu,sizeof(struct Student),4,fp);
 fclose(fp);
}
void create()
{
 int u;
 for(u=0;u<4;u++)
 {
  printf("请输入学生姓名:");
  scanf("%s",stu[u].name);
  printf("请输入学号:");
  scanf("%s",stu[u].num);
  printf("请输入次数:");
  scanf("%d",&stu[u].time);
 }
 save();
}
void sign()
{
 int w;
 char x[20];
 printf("请输入打卡的学生的学号:");
 scanf("%s",&x);
  for(w=0;w<4;w++)
  {
   if(strcmp(stu[w].num,x)==0)
   break;
  }
 stu[w].time=stu[w].time+1;
 printf("签到成功\n"); 
 save();
}
void search()
{
 int w;
 char x[20];
 printf("请输入你想查找的学生的学号:");
 scanf("%s",&x);
  for(w=0;w<4;w++)
 {
   if(strcmp(stu[w].num,x)==0)
  break;
 }
 printf("姓名\t学号\t次数\t\n");
 printf("%s\t",stu[w].name);
 printf("%s\t",stu[w].num);
 printf("%d\n",stu[w].time);
}

bug已经修改好了fp=open中根据需要修改w或者a

追问

运行时有bug,中断了

追答

你把我的这个代码全部拷贝过去运行就行了,至于中断了是因为你以前的问题,我给你修改过来了

结构体中签到的次数应该是int 型数据,不应该是int型数组,要不然你下面是不可以打卡增加的,还有你的数组成员只有四个
应该修改为
struct Student
{
char name[20];
char num[20];
int time;
};
struct Student stu[4];
在数据输入中应该修改为:
printf("请输入次数:");
scanf("%d",&stu[u].time);
在打卡函数中应该修改为
stu[w].time=stu[w].time+1;
然后就OK了。bug就解决了
别忘了采纳啊!妹子

你是在什么环境下运行的VC6.0还是VS,如果是VS的话需要修改一下,我给你的代码在VC6.0上运行成功

温馨提示:答案为网友推荐,仅供参考
相似回答