简易学生管理系统
1、框架构思:
整体基础框架知识由(文件指针、循环、判断、函数调用)实现。
各自功能函数名:
void first_include();
void found_message();//遍历一个,主要创建文件!
void input_message();//继续遍历学生信息
void read_message();//直接查询全体
void read_messages();//直接查询全体
这里void与int区别不做解析(有无返回值区别)
2、实现路径
直接上流程图不废话
查询结果
附属代码:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "ctype.h"
typedef struct Student {
int Std_Age;//定义学生年龄
char Std_Id[10],Std_Name[10],Std_Sex;//这里定义学生学号ID与姓名长度为10,性别
}Student;
//这里开始写入信息
void first_include();
void found_message();//遍历一个,主要创建文件!
void input_message();//继续遍历学生信息
void read_message();//直接查询全体
void read_messages();//直接查询全体
void first_include(){
printf("\n\n");
printf("\t\t================欢迎进入学生管理系统================\n");
printf("\t\t=\t\t1.创建学生信息\t\t\t =\n");
printf("\t\t=\t\t2.新增学生信息\t\t\t =\n");
printf("\t\t=\t\t3.查询单个学生信息\t\t =\n");
printf("\t\t=\t\t4.查询全体学生信息\t\t =\n");
printf("\t\t=\t\t0.退出系统\t\t\t =\n");
printf("\t\t====================================================\n");
printf("\t\t请输入您的选择:");
}
int main() {
int Select;
while(1){
first_include();
scanf("%d",&Select);
switch(Select){
case 1:system("cls");printf("请输入文件名称:");found_message(); break;
case 2:system("cls");printf("请输入文件名称:");input_message(); break;
case 3:system("cls");printf("请输入文件名称:");read_message(); break;
case 4:system("cls");printf("请输入文件名称:");read_messages(); break;
case 0:return 0;
}
}
return 0;
}
void found_message(){//遍历一个先,主要创建文件!
FILE* fp;
Student Std;
int i = 0,flag = 1;
char ch,Ch[20],t;
scanf("%s", Ch);
getchar();
fp = fopen(Ch, "r");
if (fp == NULL) {
printf("文件不存在!\n");
printf("是否创建文件(Y/N):");
scanf("%c", &ch);
if (ch == 'Y') {
fopen(Ch, "w");
}
else if (ch != 'Y') {
system("pause");
exit(0);
}
}
else{
fp = fopen(Ch,"w");
printf("请输入学生学号:");
scanf("%s", Std.Std_Id);
getchar();
printf("请输入学生姓名:");
scanf("%s", Std.Std_Name);
getchar();
while(1){
fflush(stdin);
printf("请输入学生性别(W|M):");
Std.Std_Sex = getchar();
if(Std.Std_Sex=='W'||Std.Std_Sex=='M')
break;
}
printf("请输入学生年龄:");
scanf("%d", &Std.Std_Age);
fwrite(&Std, sizeof(Std), 1, fp);
}
fclose(fp);
}
void input_message(){//继续添加
FILE *fp;
Student Std;
char Ch[20],Id[11];
scanf("%s", Ch);
getchar();
fp = fopen(Ch,"a");
if(fp==NULL){
printf("文件不存在");
exit(0);
}
else{
while(1){
int flag = 0;
fflush(stdin);
printf("请输入学生学号:");
scanf("%s", Id);
getchar();
fp = fopen(Ch,"r");
while(fread(&Std,sizeof(Std),1,fp)){
if((strcmp(Id,Std.Std_Id)==0)){//两者相同的时候
flag = 1;
}
}
fclose(fp);
if(flag==0)break;//Id值没有相同
}
strcpy(Std.Std_Id,Id);
printf("请输入学生姓名:");
scanf("%s", Std.Std_Name);
getchar();
while(1){
fflush(stdin);
printf("请输入学生性别(W|M):");
Std.Std_Sex = getchar();
if(Std.Std_Sex=='W'||Std.Std_Sex=='M')
break;
}
printf("请输入学生年龄:");
scanf("%d", &Std.Std_Age);
fp = fopen(Ch,"a");
fwrite(&Std, sizeof(Std), 1, fp);
}
fclose(fp);
}
void read_message(){//查询单个
FILE* fp;
Student Std;
int i;
char Ch[20],ch[20],*t;
scanf("%s",Ch);
getchar();
fp = fopen(Ch,"r");
if(fp==NULL){
printf("文件不存在!");
exit(0);
}
else{
printf("输入学号查询:");
scanf("%s",ch);
getchar();
while(fread(&Std,sizeof(Std),1,fp)){
t = Std.Std_Id;
if(strcmp(t,ch)==0){
printf("学号\t姓名\t 性别\t 年龄\n");
printf("%s\t%s\t%c%10d\n",Std.Std_Id,Std.Std_Name,Std.Std_Sex,Std.Std_Age);
}
else{
printf("该学号不存在!");
}
}
}
}
void read_messages(){//直接查询全体
FILE* fp;
Student Std;
int i;
char Ch[20];
scanf("%s",Ch);
getchar();
fp = fopen(Ch,"r");
if(fp==NULL){
printf("文件不存在!");
exit(0);
}
else{
printf(" 学号 姓名 性别 年龄\n");
while(fread(&Std,sizeof(Std),1,fp)){
printf(" %s %s %c %d\n",Std.Std_Id,Std.Std_Name,Std.Std_Sex,Std.Std_Age);
}
}
}
代码可能存在BUG,请各位大神加以指正!