程序思维导图
1.加载文件
输入1进行文件加载
2. 录取学生信息
输入2进行录取学生信息
3.显示学生信息
输入3进行显示学生信息
4.查找学生信息
输入4进行查找学生信息
5.退出程序
输入5退出程序
代码程序如下
#include <stdio.h>
#include <stdlib.h>
struct student
{
int no;
char name[20];
char sex;
int age;
};
void display_menu();
int stu_input(struct student *pstu);
int stu_output(struct student stu);
int main(int argc, char* argv[])
{
char sz;
char szPath[100];
char szName[20];
char found = 0;
FILE *fp = NULL;
struct student stu;
int n;
display_menu();
scanf("%s",&sz);
while(sz != 0)
{
switch (sz)
{
case '1':
printf("加载文件..:\n请输入要加载的文件:");
scanf("s",szPath);
fp = fopen(szPath,"ab+");
if(fp != NULL)
{
printf("文件加载成功!\n");
system("pause");
break;
}
break;
case '2':
printf("录入学生信息.. \n");
if(!fp)
{
printf("需要先加载文件后再使用!\n");
system("pause");
break;
}
stu_input(&stu);
fwrite(&stu,sizeof(struct student),1,fp);
break;
case '3':
printf("显示学生信息.. \n");
if(!fp)
{
printf("需要先加载文件后再使用!\n");
system("pause");
break;
}
rewind(fp); /*文件指针返回文件头位置*/
n = fread(&stu,sizeof(struct student),1,fp);
while(n>0)
{
stu_output(stu);
n = fread(&stu,sizeof(struct student),1,fp);
}
break;
case '4':
printf("查找学生信息.. \n");
if(!fp)
{
printf("需要先加载文件后再使用!\n");
system("pause");
break;
}
rewind(fp); /*文件指针返回文件头位置*/
printf("输入所要查找的学生姓名:");
scanf("%s",szName);
n = fread(&stu,sizeof(struct student),1,fp);
while(n>0)
{
if(strcmp(stu.name,szName)==0)
{
found++;
stu_output(stu);
}
n = fread(&stu,sizeof(struct student),1,fp);
}
if(found == 0)
{
printf("不存在该生[%s]\n",szName);
system("pause");
}
else
{
printf("找到了%d条信息\n",found);
system("pause");
found = 0;
}
break;
default:
exit(0);
}
flushall();
display_menu();
scanf("%c",&sz);
}
return 0;
}
void display_menu()
{
char str[100];
FILE* fp;
char *szChar;
fp = fopen("config.cfg", "r");
szChar = fgets(str,100,fp);
while (szChar != NULL)
{
printf("%s", str);
szChar = fgets(str,100,fp);
}
fclose(fp);
}
int stu_input(struct student *pstu)
{
printf("学号:");
scanf("%d",&pstu->no);
printf("姓名:");
scanf("%s",&pstu->name);
getchar();
printf("性别 (F/M):");
scanf("%c",&pstu->sex);
printf("年龄:");
scanf("%d",&pstu->age);
return 0;
}
int stu_output(struct student stu)
{
printf("%06d,%10s,%2s,%2d\n",
stu.no,
stu.name,
stu.sex == 'M'?"男":"女",
stu.age);
return 0;
}
结果视频如下
<iframe allowfullscreen="true" data-mediaembed="bilibili" id="Ighoqc2N-1636789941059" src="https://player.bilibili.com/player.html?aid=379134296"></iframe>
学生基本信息录入系统结果