C语言函数调用之后输出不了信息
// 目前我做了第一个“日常考情”的部分 不知道为什么函数调用之后 “ 全部学生考勤查找 ”和 “ 单个学生考勤查找 ” 都不能输出自己输入的信息
// 之前我是能输出信息 但是我如果我第一次输入玩“日常考情”后 再选择“继续添加学生考情”输入的信息(也就是第二次输入)在“日常考情” 它会是替换掉前面所有输入的信息
// 只会输出最新一次输入的数据
//各位大佬求解求解做的一个学生管理的项目 有很多地方都不是搞不太清楚
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100
struct xueshengkaoqin
{
char kc;/* 课程 */
char name; /* 姓名 */
int id; /* 学号ID*/
char c;
} xskq; /* 学生考勤 */
void tou(); /* 头部 */
void kaoqin(); /* 日常考勤*/
//void kqxh(); /* 考勤循环*/
void czlx(); /* 查找学生类型 单个或者全部*/
void kqcz(); /* 单个学生考勤查找*/
void qbkqcz();/* 全部学生考勤查找*/
void ckkc(); /* 查看考情*/
void jiuqin(); /* 就寝记录*/
void weisheng(); /* 日常卫生*/
void daode(); /* 道德品质*/
void biaoxian(); /* 课堂表现*/
void zhiye(); /* 作业完成*/
void zhoukao();/* 周考 */
void yuekao(); /* 月考 */
void xiangmu();/* 课程项目*/
void zongchengji();/*课程总成绩 */
void baogao(); /* 打印报告*/
void shezhi();/* 系统设置*/
int main()
{
tou();
}
void tou()
{
int n;
printf("\n");
printf("\n");
printf("\n");
printf("****************************欢迎来到学生管理系统***************************\n");
printf("\n");
printf("\t\t\t 请输入所需操作\n");
printf("\n");
printf("\t\t\t 1.日常考勤\n");
printf("\t\t\t 2.就寝记录\n");
printf("\t\t\t 3.日常卫生\n");
printf("\t\t\t 4.道德品质\n");
printf("\t\t\t 5.课堂表现\n");
printf("\t\t\t 6.作业完成\n");
printf("\t\t\t 7.周考\n");
printf("\t\t\t 8.月考\n");
printf("\t\t\t 9.课程项目\n");
printf("\t\t\t 10.课程总成绩\n");
printf("\t\t\t 11.打印报告\n");
printf("\t\t\t 12.系统设置\n");
printf("\n");
printf("***************************************************************************\n");
printf("\n");
scanf("%d",&n);
printf("\n");
switch(n)
{
case 1 :
kaoqin();
break;
// case 12:
default:
printf("请重新输入选择(1-12)\n");
tou();
break;
}
}
void kaoqin() /* 日常考勤*/
{
char c;
int i=1;
printf("\n");
printf("************************** 请输入日常考勤 **************************\n");
printf("\n");
printf("\t 考勤违规情况(迟到、早退、旷课、请假缺课)\n");
printf("\n");
printf(" 请管理老师(学生科、班主任老师)在每天5:00下班前记载好当天情况\n");
printf("\n");
do
{
printf("请输入学生名字\n");
scanf("%s",xskq.name);
printf("请输入学生4位数的学号\n");
scanf("%d",&xskq.id);
for(int j=1;j<10;j++)
{
printf("请输入第%d节课\n",j);
scanf("%s",&xskq.kc);
}
printf("是否继续添加学生考勤(y或n)\n");
scanf("%s",&c);
// i++;
}while(c=='y');
ckkc();/* 查看考情*/
}
//void kqxh() /*考勤循环*/
// {
// char c;
// for(int i=0;i<N;i++)
// {
// printf("是否继续添加学生考勤(y或n)\n");
// scanf("%s",&c);
// if(c=='y')
// {
// kaoqin();/* 日常考勤*/
// }
// else if(c=='n')
// {
// ckkc();/* 查看考情*/
// }
// else if(c!='y' || c!='n')
// {
// printf("\n");
// printf("温馨提示输入错误 请重新输入\n");
// }
//
// }
// }
void ckkc()/* 查看考情*/
{
char z;
int j;
for(j=0;j<N;j++)
{
printf("\n");
printf("是否需要查看学生的考勤情况(y或n)\n");
fflush(stdin);
scanf("%c",&z);
if(z=='y')
{
czlx();/* 查找学生类型 单个或者全部*/
}
else if(z=='n')
{
tou(); /* 返回头部*/
}
else if(z!='y' || z!='n')
{
printf("\n");
printf("温馨提示输入错误 请重新输入\n");
printf("\n");
ckkc();
}
}
}
void czlx()/* 查找学生类型 单个或者全部*/
{
char z=0;
int j;
for(j=0;j<N;j++)
{
printf("\n查找单个学生请输入(y)查找所有学生请输入(s)\n");
fflush(stdin);
scanf("%c",&z);
if(z=='y')
{
kqcz(); /*单个学生考勤查找*/
}
else if(z=='s')
{
qbkqcz();/* 全部学生考勤查找*/
}
else if(z!='y' || z!='s')
{
printf("\n");
printf("温馨提示输入错误 请重新输入\n");
printf("\n");
czlx();
}
}
}
void qbkqcz()/* 全部学生考勤查找*/
{
printf("\n");
printf("|| 名字|| 学号|| 第一节|| 第二节 || 第三节 || 第四节 || 第五节 || 第六节 || 第七节|| 第八节 || 第九节 || 第十节 ||\n");
printf("\n");
int j;
for(int i=0;i<10;i++)
{
printf
(" %-14s %-14d %-14s %-14s %-14s %-14s %-14s %-14s %-14s %-14s %-14s %-14s\n",
xskq.name,xskq.id,xskq.kc,xskq.kc,xskq.kc,xskq.kc,
xskq.kc,xskq.kc,xskq.kc,xskq.kc,xskq.kc,xskq.kc,
xskq.kc ) ;
printf("\n");
tou();
}
}
void kqcz()//单个学生考勤查找
{
// int z;
char sname;
printf("\n");
printf("请输入您要查找的学生\n");
printf("\n");
fflush(stdin);
gets(sname);
printf("\n");
for(int i=0;i<10;i++)
{
if(strcmp(sname,xskq.name)==0)
{
printf("\n");
printf("|| 名字 || 学号 || 第一节 || 第二节 || 第三节 || 第四节 || 第五节 || 第六节 || 第七节 || 第八节 || 第九节 || 第十节 ||\n");
printf("\n");
printf
(
"%-14s %d %-14s %-14s %-14s %-14s %-14s %-14s %-14s %-14s %-14s %-14s\n",
xskq.name,xskq.id,xskq.kc,xskq.kc,xskq.kc,xskq.kc,
xskq.kc,xskq.kc,xskq.kc,xskq.kc,xskq.kc,xskq.kc,
xskq.kc
);
tou();
}
else
{
printf("抱歉没有查找到学生信息 请重新查找\n");
// printf("\n");
kqcz();
}
}
}
数据覆盖了呗,你这个设计的时候稍微有点儿问题
不过你都写这么多了,重写你指定不愿意
那你就加个全局变量,记录已经录入了多少个人的信息
然后每次进入录入功能的时候,都从全局变量这个位置开始录入
而不是每次都初始化一个 i ,然后从头开始录入 yuxijian2020 发表于 2021-4-26 08:47
数据覆盖了呗,你这个设计的时候稍微有点儿问题
不过你都写这么多了,重写你指定不愿意
那你就加个全局变 ...
好的 非常感谢哈 已经解决了{:5_109:}
页:
[1]