为什么程序运行时会出现这个,不理解,怎么解决阿
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
struct Course
{
int arr1; //迟到次数
int arr2; //早退次数
int arr3; //请假次数
int arr4; //旷课次数
};
typedef struct xuesheng
{
char name[22]; //学生姓名
int number; //学生学号
float date; //日期
int num1; //第几节课
char course[30]; //课程名字
int num2; //打卡次数
struct Course absence; //缺课类型
}Stu;
typedef struct system
{
Stu* student;
int size; //当前系统储存学生个数
int Maxsize; //当前系统可以存储学生的最大个数
}Sys;
void mune(); //功能菜单
void keydown(Sys *p,char* filename); //按键交互
Sys* createsystem(int maxsize); //系统创建
void Inputstudentdata(Stu data); //录入学生数据
void Inputsystem(Sys* p, Stu data); //数据录入系统
void Print(Sys* p); //打印功能
void Search(Sys* p); //查询信息功能
void Change(Sys* p); //修改信息功能
void Delete(Sys* p); //删除信息功能
void Statistics(Sys* p); //统计信息功能
void CreateFile(char* filename); //创建文件
void Savefile(Sys* p, const char* filename); //储存信息功能
void Readfile(Sys* p, const char* filename); //文件数据读出
//创建系统
Sys* createsystem(int maxsize)
{
Sys* p = (Sys *)malloc(sizeof(Sys) * maxsize);
p->size = 0;
p->Maxsize = maxsize;
p->student = (Stu* )malloc(sizeof(Stu) * maxsize);
return p;
}
//功能菜单
void mune()
{
printf("****************************************\n");
printf("* 1、输入记录模块 *\n");
printf("* 2、查询记录模块 *\n");
printf("* 3、修改记录模块 *\n");
printf("* 4、删除记录模块 *\n");
printf("* 5、统计记录模块 *\n");
printf("* 6、输出记录模块 *\n");
printf("* 7、正常退出系统 *\n");
printf("************请输入(0-7)***************\n");
}
//实现选择操作
void keydown(Sys* p,char* filename)
{
Stu data;
int key;
printf("请输入需要操作的命令:\n");
scanf("%d", &key);
switch (key)
{
case 1:
printf("输入学生信息:\n");
printf("请输入学生的姓名:\n");
scanf("%s", data.name);
printf("请输入学生的学号:\n");
scanf("%d", &data.number);
printf("请输入学生的打卡的日期:\n");
scanf("%f", &data.date);
printf("请输入学生的打卡的第几节课:\n");
scanf("%d", &data.num1);
printf("请输入学生的打卡的课程名字:\n");
scanf("%s", data.course);
printf("请输入学生的打卡次数:\n");
scanf("%d", &data.num2);
printf("缺课类型(迟到、早退、请假、旷课):\n");
printf("请输入学生的迟到次数:\n");
scanf("%d", &data.absence.arr1);
printf("请输入学生的早退次数:\n");
scanf("%d", &data.absence.arr2);
printf("请输入学生的请假次数:\n");
scanf("%d", &data.absence.arr3);
printf("请输入学生的旷课次数:\n");
scanf("%d", &data.absence.arr4);
Inputsystem(p, data);
Savefile(p, filename);
break;
case 2:
Readfile(p, filename);
Search(p);
break;
case 3:
Readfile(p, filename);
Change(p);
break;
case 4:
Readfile(p, filename);
Delete(p);
break;
case 5:
Readfile(p, filename);
Statistics(p);
break;
case 6:
Readfile(p, filename);
Print(p);
break;
case 7:
printf("安全退出系统");
exit(0);
break;
default:
printf("输入错误,请重新输入.\n");
break;
}
}
//录入学生数据
void Inputstudentdata(Stu data)
{
printf("输入学生信息:\n");
printf("请输入学生的姓名:\n");
scanf("%s", data.name);
printf("请输入学生的学号:\n");
scanf("%d", &data.number);
printf("请输入学生的打卡的日期:\n");
scanf("%f", &data.date);
printf("请输入学生的打卡的第几节课:\n");
scanf("%d", &data.num1);
printf("请输入学生的打卡的课程名字:\n");
scanf("%s", data.course);
printf("请输入学生的打卡次数:\n");
scanf("%d", &data.num2);
printf("缺课类型(迟到、早退、请假、旷课):\n");
printf("请输入学生的迟到次数:\n");
scanf("%d", &data.absence.arr1);
printf("请输入学生的早退次数:\n");
scanf("%d", &data.absence.arr2);
printf("请输入学生的请假次数:\n");
scanf("%d", &data.absence.arr3);
printf("请输入学生的旷课次数:\n");
scanf("%d", &data.absence.arr4);
}
//数据输入系统
void Inputsystem(Sys* p,Stu data)
{
if (p == NULL)
{
printf("系统不存在\n");
return;
}
if (p->size >= p->Maxsize)
{
printf("系统已满,不能录入\n");
return;
}
p->student[p->size] = data;
p->size++;
}
//打印学生数据
void Print(Sys* p)
{
int i;
printf("记录序号\t姓名\t学号\t日期\t第几节课\t课程名字\t打卡次数\t迟到\t早退\t请假\t旷课\n");
for (i = 0; i < p->size; i++)
{
printf("%8d\t%s\t%d\t%4.2f\t%8d\t%s\t\t%d\t\t%1d\t%1d\t%1d\t%1d\n", i, p->student[i].name,
p->student[i].number, p->student[i].date, p->student[i].num1, p->student[i].course,
p->student[i].num2, p->student[i].absence.arr1, p->student[i].absence.arr2,
p->student[i].absence.arr3, p->student[i].absence.arr4);
}
}
//查询信息功能
void Search(Sys* p)
{
int n, i;
printf("请输入要查找学生的学号:\n");
scanf("%d", &n);
for (i = 0; i < p->size; i++)
{
if (n == p->student[i].number)
{
printf("姓名:%s\t学号:%d\t打卡次数:%d\t\n", p->student[i].name, p->student[i].number, p->student[i].num2);
printf("迟到次数:%d\t早退次数:%d\t请假次数:%d\t旷课次数:%d\n", p->student[i].absence.arr1, p->student[i].absence.arr2, p->student[i].absence.arr3,
p->student[i].absence.arr4);
if (i == p->size - 1)
{
break;
}
}
}
if (i == p->size)
{
printf("没有你查找的信息\n");
}
}
//修改学生信息
void Change(Sys* p)
{
int n, i, j = 0;
printf("请输入要修改学生的记录序号:\n");
scanf("%d", &n);
for (i = 0; i < p->size; i++)
{
if (n == i)
{
j = i;
break;
}
}
if (i == j)
{
printf("输入学生信息:\n");
printf("请输入学生的姓名:\n");
scanf("%s", p->student[j].name);
printf("请输入学生的学号:\n");
scanf("%d", &p->student[j].number);
printf("请输入学生的打卡的日期:\n");
scanf("%f", &p->student[j].date);
printf("请输入学生的打卡的第几节课:\n");
scanf("%d", &p->student[j].num1);
printf("请输入学生的打卡的课程名字:\n");
scanf("%s", p->student[j].course);
printf("请输入学生的打卡次数:\n");
scanf("%d", &p->student[j].num2);
printf("缺课类型(迟到、早退、请假、旷课):\n");
printf("请输入学生的迟到次数:\n");
scanf("%d", &p->student[j].absence.arr1);
printf("请输入学生的早退次数:\n");
scanf("%d", &p->student[j].absence.arr2);
printf("请输入学生的请假次数:\n");
scanf("%d", &p->student[j].absence.arr3);
printf("请输入学生的旷课次数:\n");
scanf("%d", &p->student[j].absence.arr4);
printf("修改成功");
}
else
{
printf("没有要修改学生的信息\n");
}
}
//删除学生信息
void Delete(Sys* p)
{
int n, i;
printf("输入要删除的学生的记录序号:\n");
scanf("%d", &n);
if (n >= p->size)
{
printf("没有要删除的学生\n");
return;
}
else if(n >= 0)
{
for (i = n; i < p->size - 1; i++)
{
p->student[i] = p->student[i + 1];
}
p->size--;
printf("删除成功\n");
}
}
//统计学生考勤
void Statistics(Sys* p)
{
int n, i;
printf("请输入需要统计学生的学号:\n");
scanf("%d", &n);
int message = 0;
int a1 = 0;
int a2 = 0;
int a3 = 0;
int a4 = 0;
for (i = 0; i < p->size; i++)
{
if (n == p->student[i].number)
{
message++;
if (p->student[i].absence.arr1 == 1)
{
a1++;
}
if (p->student[i].absence.arr2 == 1)
{
a2++;
}
if (p->student[i].absence.arr3 == 1)
{
a3++;
}
if (p->student[i].absence.arr4 == 1)
{
a4++;
}
}
}
printf("该学生考勤信息%d条\n", message);
printf("该学生迟到次数%d\t早退次数%d\t请假次数%d\t旷课次数%d\n", a1, a2, a3, a4);
}
//写入到文件中
void Savefile(Sys* p, const char* filename)
{
FILE* fp = fopen(filename, "a");
for (int i = 0; i < p->size; i++)
fprintf("%8d\t%s\t%d\t%4.2f\t%8d\t%s\t\t%d\t\t%1d\t%1d\t%1d\t%1d\n", i, p->student[i].name,
p->student[i].number, p->student[i].date, p->student[i].num1, p->student[i].course,
p->student[i].num2, p->student[i].absence.arr1, p->student[i].absence.arr2,
p->student[i].absence.arr3, p->student[i].absence.arr4);
printf("导入成功");
fclose(fp);
}
//文件数据读出
void Readfile(Sys* p, const char* filename)
{
FILE* fp = fopen(filename, "r");
int i = 0;
while (fscanf(fp, "%s\t%d\t%f\t%d\t%s\t\t%d\t\t%d\t%d\t%d\t%d\n", p->student[i].name,
&p->student[i].number, &p->student[i].date, &p->student[i].num1, p->student[i].course,
&p->student[i].num2, &p->student[i].absence.arr1, &p->student[i].absence.arr2,
&p->student[i].absence.arr3, &p->student[i].absence.arr4) != EOF)
{
i++;
}
fclose(fp);
}
//创建文件
void CreateFile(const char* filename)
{
FILE *fp = fopen(filename, "a");
fclose(fp);
}
int main()
{
Sys* s = createsystem(50);
char Filename[15] = "message.txt";
CreateFile(Filename);
while (1)
{
mune();
keydown(s, Filename);
system("pause");
system("cls");
}
return 0;
}