班级信息管理系统依次执行菜单命令,执行完修改模块后会跳过选择菜单,直接运行录入模块,求解!!
#include <stdio.h> #include <stdlib.h>
#include <string.h>
#define N 2
struct student
{
char name[10];
char no[10];
char sex;
int age;
char bnote[100];
};
void print(bool menu)//打印基本信息
{
if (!menu)//主菜单
{
printf(" \t \t \t (成功进入班级档案管理系统)\t\t\t\t\n");
printf("★*★*★*★*★*★*★*★*★*★ 欢迎进入我们的系统 ★*★*★*★*★*★*★*★*★*★\n\n");
printf("\t \t \t 学生基本信息录入 ,press 1\n");
printf("\t \t \t 学生基本信息显示 ,press 2\n");
printf("\t \t \t 学生基本信息保存 ,press 3\n");
printf("\t \t \t 学生基本信息删除 ,press 4\n");
printf("\t \t \t 学生基本信息修改 ,press 5\n");
printf("\t \t \t 学生基本信息查询 ,press 6\n");
}
else
{
printf("\n\n\n");
printf("\t \t \t 学生基本信息显示 ,press 2\n");
printf("\t \t \t 学生基本信息保存 ,press 3\n");
printf("\t \t \t 学生基本信息删除 ,press 4\n");
printf("\t \t \t 学生基本信息修改 ,press 5\n");
printf("\t \t \t 学生基本信息查询 ,press 6\n");
}
printf("\t \t \t 退出学生信息系统 ,press other\n");
}
bool Check(char pas[6])//密码验证
{
FILE *fp;//文件类型指针型变量
char ch;
char a[7]={" "};
int i = 0;
if ((fp=fopen("c:\\1.txt","r"))==NULL) //在C盘中建立文件名为1.txt的文档来存放密码
{
printf("打开文件失败!\n");
exit(0);
}
ch=fgetc(fp);
while (ch!=EOF&&i<6)//循环控制
{
a[i] = ch;
ch=fgetc(fp);
i++;//自加1
}
a[6] = '\0';//正常结束的标志
if (!strcmp(pas,a))
{
return true;
}
else
{
printf("\t\t————密码错误,请退出系统后重新登录!————\n\a\n\n");
}
fclose(fp);//关闭一个流,原型是int fclose(FILE*stream)stream为流指针,返回EOF时表示出错。
}
void GetInfo(struct student *arr,int n)//学生基本信息录入
{
for (int i = 0;i<n;i++)
{
printf("输入第%2d个学生的基本信息:name no sex age bnote\n",i+1);
scanf("%s %s %c %d %s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bnote);
}
}
void Display(struct student* arr,int n)//学生基本信息显示
{
printf("学生信息: Name NO Sex age Bote\n");
for (int i = 0;i<n;i++)//循环控制
{
printf("%14s%11s%11c%11d%11s\n\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
}
}
void Save(struct student* arr,int n)//学生基本信息保存,保存在c:\\student.txt
{
FILE * fp;
fp= fopen("c:\\student.txt","w+");
if (fp == NULL)
{
printf("文件不存在!\n\n");
exit(0);
}
fwrite(arr,sizeof(struct student)*n,n,fp);
printf("\n\t\t————保存成功,保存在c:\\student.txt————\n\n");
fclose(fp);
}
void Modfiy(struct student* arr,int n)//学生基本信息修改
{
char number[10];
bool flag=false;
char pass[6];
printf("请输入密码:\n");
scanf("%s",pass);
if (Check(pass))
{
printf("修改学生信息:\n");
printf("请输入学号: ");
scanf("%s",number);
for (int i =0;i<n;i++)
{
if (!strcmp(number,arr[i].no))
{
printf("学生信息: Name NO Sex age Bote\n");
printf("%14s%11s%11c%11d%11s\n\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
printf("please input information:\n");
scanf("%s%s%c%d%s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bnote);
Save(arr,n);
flag = true;
}
}
if (flag == false)
printf("该学生不存在!:\n\n");
}
}
void Delete(struct student* arr,int n)//学生基本信息删除
{
char number[10];
bool flag=false;
printf("Delete information:\n");
printf("please input the no: ");
scanf("%s",number);
for (int i =0;i<n;i++)
{
if (!strcmp(number,arr[i].no))
{
strcpy(arr[i].name," ");
strcpy(arr[i].no," ");
strcpy(arr[i].bnote," ");
arr[i].sex = ' ';
arr[i].age = 0;
Save(arr,n);
flag = true;
}
}
if (flag == true)
{
printf("该学生不存在!:\n");
}
}
void Search(struct student* arr,int n)//学生基本信息查询
{
int temp,i;
bool flag=false;
printf("\t\t-------------通过学号查询,press 1-------------\n");
printf("\t\t-------------通过姓名查询,press 2-----------\n");
printf("\t\t-------------通过性别查询,press 3------------\n");
printf("\t\t-------------通过年龄查询,press 4------------\n");
printf("\t\t-------------退出查询功能,press 5------------\n");
scanf("%d",&temp);
switch (temp)
{
case 1://按照学号查询
{
char num[10];
printf("请输入学号: \n");
scanf("%s",num);
for ( i =0;i<n;i++)
{
if (!strcmp(num,arr[i].no))
{
printf("学生信息: Name NO Sex age Bote\n");
printf("%14s%11s%11c%11d%11s\n\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("该学生不存在.\n\n");
}
}
break;
case 2://按照名字查询
{
char num[10];
printf("please input name: \n");
scanf("%s",num);
for ( i =0;i<n;i++)
{
if (!strcmp(num,arr[i].name))
{
printf("学生信息: Name NO Sex age Bote\n");
printf("%14s%11s%11c%11d%11s\n\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("该学生不存在.\n\n");
}
}
break;
case 3://按照性别查询
{
char ch;
printf("请输入性别: \n");
//scanf("%c",&ch);
ch = getchar();
for ( i =0;i<n;i++)
{
if (ch == arr[i].sex)
{
printf("学生信息: Name NO Sex age Bote\n");
printf("%14s%11s%11c%11d%11s\n\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("t该学生不存在.\n\n");
}
}
break;
case 4://按照年龄查询
{
char num_age;
printf("请输入年龄: \n");
scanf("%d",&num_age);
for ( i =0;i<n;i++)
{
if (num_age == arr[i].age)
{
printf("学生信息: Name NO Sex age Bote\n");
printf("%14s%11s%11c%11d%11s\n\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("该学生不存在.\n\n");
}
}
break;
default:
break;
}
}
int main()
{
struct student arr[N];
char ps[6];
bool flag =false;
printf("\n\n\t \t \t (欢迎使用班级档案管理系统)\t\t\t\t\n请输入密码:\n");
scanf("%s",ps);
flag = Check(ps);
if (flag)
{
int select;
print(false);
scanf("%d",&select);
while ((0<select)&&(select<7))
{
switch (select)
{
case 1:
GetInfo(arr,N);
print(true);
break;
case 2:
Display(arr,N);
print(true);
break;
case 3:
Save(arr,N);
print(true);
break;
case 4:
Delete(arr,N);
print(true);
break;
case 5:
Modfiy(arr,N);
print(true);
break;
case 6:
Search(arr,N);
print(true);
break;
default:
break;
}
{printf("请选择:\n");
scanf("%d",&select);
}
}
if((6<select)||(select<1))
printf("\n\n\t\t——————感谢您的使用,再见!——————\n\n\t\t———————按任意键退出——————\n\n");
}
return 0;
}