以前帮别人写的 你可以看看 呵呵 不是很符合条件
********************************学生管理系统****************************/
#include
#include
#include
typedef struct stu1
{
int num;
char name[20];
char sex[5];
char age[3];
char phone[20];
}stu1;
typedef struct stu2
{
//char num[20];
//char name[20];
int proj1;
int proj2;
int proj3;
int proj4;
int proj5;
int proj6;
}stu2;
void welcome();
int check_key(char key[]);
int m_can_do();
int m_class_can_do();
void manage_class();
void add_class();
void del_class();
void change_proj();
int m_stu_can_do();
void manage_stu();
void log_stu();
void change_stu();
void read_stu1(char clas[], stu1 stu[]);
int find_stu(stu1 stu[], int num);
void del_stu();
void read_stu2(char clas1[], stu2 stud[]);
void log_score();
void change_score();
void del_clas_stu();
int m_find_can_do();
void find();
void find_clas_basic();
void find_clas_score();
void find_stu_basic();
void find_stu_all();
//void chane_stu();
int main(){
int does;
char key[20];
int result;
welcome();
printf("请输入密码:");
scanf("%s", key);
printf("\n\n");
result = check_key(key);
while(result)
{
printf("您输入的密码有误,请重新输入:");
scanf("%s", key);
result = check_key(key);
printf("\n\n");
}
does = m_can_do();
while(true)
{
if(1 == does)
{
manage_class();
does = m_can_do();
}
if(2 == does)
{
manage_stu();
does = m_can_do();
}
if(3 == does)
{
find();
does = m_can_do();
}
if(4 == does)
{
exit(0);
}
}
return 0;
}
/****************************************************函数***********************************/
void welcome()
{
printf("欢迎使用本学生管理系统。\n\n");
}
int check_key(char key[])
{
FILE * fp;
char right_key[20];
int result;
fp = fopen("key", "r");
fscanf(fp, "%s", right_key);
result = strcmp(key, right_key);
return result;
}
int m_can_do()
{
int d;
printf("您可以进行的操作为:\n\n");
printf("1 班级管理 2 学生管理 3 查询 4 退出\n\n请输入:");
scanf("%d", &d);
printf("\n\n");
while(1 != d && 2 != d && 3 != d && 4 != d)
{
printf("您的书有误,请重新输入:");
scanf("%d", &d);
printf("\n\n");
}
return d;
}
/************************************班级办理部分***************************/
int m_class_can_do()
{
int d;
printf("请输入您想要进行的操作:\n\n");
printf("1 添加班级 2 删除班级 3 更改科目\n\n4 返回上一层 5 退出\n\n");
printf("请输入:");
scanf("%d", &d);
printf("\n\n");
while(1 != d && 2 != d && 3 != d && 4 != d && 5 != d)
{
printf("您的输入有误,请重新输入:");
scanf("%d", & d);
printf("\n\n");
}
return d;
}
void manage_class()
{
int does;
does = m_class_can_do();
while(true)
{
if(1 == does)
{
add_class();
does = m_class_can_do();
}
if(2 == does)
{
del_class();
does = m_class_can_do();
}
if(3 == does)
{
change_proj();
does = m_class_can_do();
}
if(4 == does)
{
return;
}
if(5 == does)
{
exit(0);
}
}
}
void add_class()
{
FILE * fp;
char name[20], name1[20];
printf("请输入您想要添加的班级的名字:");
scanf("%s", name);
printf("\n\n");
while((fp = fopen(name, "r")))
{
fclose(fp);
printf("您输入的班级已经存在,请重新输入:");
scanf("%s", name);
printf("\n\n");
}
// fclose(fp);
sprintf(name1, "%s_score", name);
fp = fopen(name, "w");
fclose(fp);
fp = fopen(name1, "w");
fclose(fp);
printf("\n\n");
printf("*************************************************************\n");
printf(" 班级添加成功。 \n");
printf("**************************************************************\n");
}
void del_class()
{
FILE * fp;
char name[20], name1[20];
printf("请输入您想删除的班级名:");
scanf("%s", name);
printf("\n\n");
while(!(fp = fopen(name, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", name);
printf("\n\n");
}
fclose(fp);
sprintf(name1, "%s_score", name);
remove(name);
remove(name1);
printf("**************************************************************\n");
printf(" 班级删除成功。 \n");
printf("**************************************************************\n\n");
}
void change_proj()
{
FILE * fp;
char proj[6][20];
printf("现在的科目信息为:\n\n");
fp = fopen("proj", "r");
fscanf(fp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
//fclose(fp);
// fclose(fp);
printf("%s %s %s %s %s %s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
printf("\n\n");
printf("请输入您修改后的科目:\n\n");
//getchar();
scanf( "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
printf("\n\n");
fp = fopen("proj", "w");
fprintf(fp, "%s %s %s %s %s %s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(fp);
printf("**************************************************************\n");
printf(" 科目修改成功。 \n");
printf("**************************************************************\n\n");
}
/**************************************************************************学生管理***********************************/
int m_stu_can_do()
{
int d;
printf("您可以进行的操作有:\n\n");
printf("1 登记 2 修改 3 删除某个学生 4 删除某班学生\n\n5 登记分数 6 修改分数 7 返回上一层\n\n8 退出\n\n");
printf("请您输入:");
scanf("%d", &d);
printf("\n\n");
while(1 != d && 2 != d && 3 != d && 4 != d && 5 != d && 6 != d && 7 != d)
{
printf("您的输入有误,请重新输入:");
scanf("%d", &d);
printf("\n\n");
}
return d;
}
void manage_stu()
{
int does;
does = m_stu_can_do();
while(true)
{
if(1 == does)
{
log_stu();
does = m_stu_can_do();
}
if(2 == does)
{
change_stu();
does = m_stu_can_do();
}
if(3 == does)
{
del_stu();
does = m_stu_can_do();
}
if(4 == does)
{
del_clas_stu();
does = m_stu_can_do();
}
if(5 == does)
{
log_score();
does = m_stu_can_do();
}
if(6 == does)
{
change_score();
does = m_stu_can_do();
}
if(7 == does)
{
return;
}
if(8 == does)
{
exit(0);
}
}
}
void log_stu()
{
FILE * fp, * p;
char clas[20], clas1[20];
stu1 add[200];
int i = 0;
printf("请输入您所要添加学生所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
printf("请按下面提示输入(输入0结束):\n\n");
printf("学号 姓名 性别 年龄 电话\n\n");
scanf("%d", & add[i]. num);
while(add[i]. num != 0)
{
scanf("%s%s%s%s", add[i]. name, add[i]. sex, add[i]. age, add[i]. phone);
i ++;
printf("\n");
scanf("%d", & add[i]. num);
}
i = 0;
fp = fopen(clas, "a");
p = fopen(clas1, "a");
while(add[i]. num != 0)
{
fprintf(fp, "%d %s %s %s %s\n\n", add[i]. num, add[i]. name, add[i]. sex, add[i]. age, add[i]. phone);
fprintf(p, "0 0 0 0 0 0\n\n");
i++;
}
fclose(fp);
fclose(p);
printf("**************************************************************\n");
printf(" 添加成功。 \n");
printf("**************************************************************\n\n");
}
void change_stu()
{
FILE * fp;
char clas[20];
int num, result, i;
stu1 stu[200];
//sstu2 stud[200];
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
// sprintf(clas1"%s_score", clas);
read_stu1(clas, stu);
//read_stud(cls1, stud);
printf("请输入该学生学号:");
scanf("%d", &num);
printf("\n\n");
result = find_stu(stu, num);
if(-1 == result)
{
printf("您输入的学生不存在,请重新输入:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
}
printf("请按下面格式重新输入该学生信息:\n\n");
printf("学号 姓名 性别 年龄 电话\n\n");
scanf("%d%s%s%s%s", & stu[result]. num, stu[result]. name, stu[result]. sex, stu[result]. age, stu[result]. phone);
i = 0;
fp = fopen(clas, "w");
while(0 != stu[i]. num)
{
fprintf(fp, "%d %s %s %s %s\n\n", stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
i++;
}
fclose(fp);
printf("**************************************************************\n");
printf(" 修改成功。 \n");
printf("**************************************************************\n\n");
}
void read_stu1(char clas[], stu1 stu[])
{
int i = 0;
FILE * fp;
fp = fopen(clas, "r");
while(!feof(fp))
{
fscanf(fp, "%d%s%s%s%s", &stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
i++;
}
fclose(fp);
stu[i-1]. num = 0;
}
int find_stu(stu1 stu[], int num)
{
int i = 0;
while(stu[i]. num != 0)
{
if(stu[i]. num == num)
{
break;
}
i++;
}
if(stu[i]. num == num)
{
return i;
}
else
{
return -1;
}
}
void del_stu()
{
FILE * fp, * p;
char clas[20], clas1[20];
int num, result, i = 0;
stu1 stu[200];
stu2 stud[200];
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
read_stu2(clas1, stud);
printf("请输入该学生学号:");
scanf("%d",& num);
printf("\n\n");
result = find_stu(stu, num);
if(-1 == result)
{
printf("您输入的学生不存在,请重新输入:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
}
fp = fopen(clas, "w");
p = fopen(clas1, "w");
while(stu[i]. num != 0)
{
if(stu[i]. num == num)
{
i++;
}
if(stu[i]. num != 0)
{
fprintf(fp, "%d %s %s %s %s\n\n", stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
fprintf(p, "%d %d %d %d %d %d\n\n", stud[i]. proj1, stud[i]. proj2, stud[i]. proj3, stud[i]. proj4, stud[i]. proj5, stud[i]. proj6);
i++;
}
}
fclose(fp);
fclose(p);
printf("**************************************************************\n");
printf(" 删除成功。 \n");
printf("**************************************************************\n\n");
}
void read_stu2(char clas1[], stu2 stud[])
{
int i = 0;
FILE * fp;
fp = fopen(clas1, "r");
while(!feof(fp))
{
fscanf(fp, "%d%d%d%d%d%d",&stud[i]. proj1, &stud[i]. proj2, &stud[i]. proj3, &stud[i]. proj4, &stud[i]. proj5, &stud[i]. proj6);
i++;
}
stud[i-1]. proj1 = -1;
fclose(fp);
}
void log_score()
{
FILE * fp, * p, * tp;
stu1 stu[200];
stu2 stud;
char clas[20], clas1[20], proj[6][20];
int i = 0;
printf("请输入要登分的班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
tp = fopen("proj", "r");
fscanf(tp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(tp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
fp = fopen(clas, "r");
p = fopen(clas1, "w");
printf("请输入:\n\n");
printf("学号 姓名 %s %s %s %s %s %s\n\n", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
while(0 != stu[i]. num)
{
printf("%d %s ", stu[i]. num, stu[i]. name);
scanf("%d%d%d%d%d%d", &stud. proj1, &stud. proj2, &stud. proj3, &stud. proj4, &stud. proj5, &stud. proj6);
fprintf(p, "%d %d %d %d %d %d\n\n", stud.proj1 ,stud.proj2 ,stud.proj3 ,stud.proj4 ,stud.proj5 ,stud.proj6);
i++;
}
fclose(fp);
fclose(p);
printf("**************************************************************\n");
printf(" 该班所有学生成绩已登记完毕。 \n");
printf("**************************************************************\n\n");
}
void change_score()
{
FILE * fp, * temp;
char clas[20], clas1[20], proj[6][20];
int num, result, i = 0;
stu1 stu[200];
stu2 stud[200];
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
//read_stu2(cls1, stud);
printf("请输入该学生学号:");
scanf("%d",& num);
printf("\n\n");
result = find_stu(stu, num);
if(-1 == result)
{
printf("您输入的学生不存在,请重新输入:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
}
temp = fopen("proj", "r");
fscanf(temp, "%s%s%s%s%s%s", proj[1], proj[2], proj[3], proj[4], proj[5], proj[6]);
fclose(temp);
fp = fopen(clas1, "w");
printf("请输入:\n\n");
printf("学号 姓名 %s %s %s %s %s %s", proj[1], proj[2], proj[3], proj[4], proj[5], proj[6]);
printf("%d %s ", stu[result]. num, stu[result]. name);
scanf("%d%d%d%d%d%d", &stud[result]. proj1, &stud[result]. proj2, &stud[result]. proj3, &stud[result]. proj4, &stud[result]. proj5, &stud[result]. proj6);
while(0 != stud[i]. proj1)
{
fprintf(fp,"%d %d %d %d %d %d\n\n", stud[i]. proj1, stud[i]. proj2, stud[i]. proj3, stud[i]. proj4, stud[i]. proj5, stud[i]. proj6);
i++;
}
printf("**************************************************************\n");
printf(" 成绩修改成功。 \n");
printf("**************************************************************\n\n");
}
void del_clas_stu()
{
FILE * fp;
char clas[20], clas1[20];
printf("请输入您想要操作的班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("不存在%s班,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
sprintf(clas1, "%s_score", clas);
fp = fopen(clas, "w");
fclose(fp);
fp = fopen(clas1, "w");
fclose(fp);
printf("*************************************************************\n");
printf(" 删除成功。 \n");
printf("*************************************************************\n\n");
}
/**********************************************查询**********************************************************/
int m_find_can_do()
{
int d;
printf("您可以进行的操作为:\n\n1 查看某班基本信息 2 查看某班成绩 3 查看学生基本信息\n\n4 查看学生全部信息 5 返回上一层 6 退出\n\n请您输入:");
scanf("%d", &d);
printf("\n\n");
while(1 != d && 1 != d && 2 != d && 3 != d && 4 != d && 5 != d && 6 != d)
{
printf("您的输入有误,请重新输入:");
scanf("%d", &d);
printf("\n\n");
}
return d;
}
void find()
{
int does;
does = m_find_can_do();
while(true)
{
if(1 == does)
{
find_clas_basic();
does = m_find_can_do();
}
if(2 == does)
{
find_clas_score();
does = m_find_can_do();
}
if(3 == does)
{
find_stu_basic();
does = m_find_can_do();
}
if(4 == does)
{
find_stu_all();
does = m_find_can_do();
}
if(5 == does)
{
return ;
}
if(6 == does)
{
exit(0);
}
}
}
void find_clas_basic()
{
FILE * fp;
stu1 stu[200];
char clas[20];
int i = 0, d;
printf("请输入您想要查看的班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fscanf(fp, "%d", &d);
if(feof(fp))
{
printf("**************************************************************\n");
printf(" 您查看的班级没有学生。 \n");
printf("**************************************************************\n");
fclose(fp);
return ;
}
read_stu1(clas, stu);
printf("学号 姓名 性别 年龄 电话\n\n");
while(0 != stu[i]. num)
{
printf("%d %s %s %s %s\n\n", stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
i++;
}
}
void find_clas_score()
{
FILE * fp, * temp;
stu1 stu[200];
stu2 stud[200];
char clas[20], clas1[20], proj[6][20];
int i = 0, d;
printf("请输入您想要查看的班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fscanf(fp, "%d", &d);
if(feof(fp))
{
printf("**************************************************************\n");
printf(" 您查看的班级没有学生。 \n");
printf("**************************************************************\n\n");
fclose(fp);
return ;
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
read_stu2(clas1, stud);
temp = fopen("proj", "r");
fscanf(temp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(temp);
printf("学号 姓名 %s %s %s %s %s %s\n\n", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
while(0 != stu[i]. num)
{
printf("%d %s ", stu[i]. num, stu[i]. name);
printf("%d %d %d %d %d %d\n\n", stud[i].proj1, stud[i].proj2, stud[i].proj3, stud[i].proj4, stud[i].proj5, stud[i].proj6);
i++;
}
}
void find_stu_basic()
{
stu1 stu[200];
int result, num;
char clas[20];
FILE * fp;
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
read_stu1(clas, stu);
printf("请输入该学生学号:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
while(-1 == result)
{
printf("该学生不存在,请重新输入:");
scanf("%d", &num);
printf("\n\n");
}
printf("该学生信息为:\n\n学号 姓名 性别 年龄 电话\n\n");
printf("%d %s %s %s %s\n\n", stu[result]. num, stu[result]. name, stu[result]. sex, stu[result]. age, stu[result]. phone);
}
void find_stu_all()
{
stu1 stu[200];
stu2 stud[200];
int result, num;
char clas[20], clas1[20], proj[6][20];
FILE * fp, * temp;
printf("请输入他所在班级:");
scanf("%s", clas);
printf("\n\n");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("\n\n");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
read_stu2(clas1, stud);
printf("请输入该学生学号:");
scanf("%d", & num);
printf("\n\n");
result = find_stu(stu, num);
while(-1 == result)
{
printf("该学生不存在,请重新输入:");
scanf("%d", &num);
printf("\n\n");
}
temp = fopen("proj", "r");
fscanf(temp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(temp);
printf("该学生全部信息如下:\n\n");
printf("该学生信息为:\n\n学号 姓名 性别 年龄 电话\n\n");
printf("%d %s %s %s %s\n\n", stu[result]. num, stu[result]. name, stu[result]. sex, stu[result]. age, stu[result]. phone);
printf("成绩:\n\n");
printf("%s %s %s %s %s %s\n\n", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
printf("%d %d %d %d %d %d\n\n", stud[result]. proj1, stud[result]. proj2, stud[result]. proj3, stud[result]. proj4, stud[result]. proj5, stud[result]. proj6);
}
又见这种问题。。。
知道里很少会有人给答案
去别的地方下个类似的改下 就是了
出10个悬赏分是很难求到的~~况且程序这个东西要自己编了才深刻啊
也是 我也做过的