/***************************************************
* student manage system *
***************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<time.h>
#include<windows.h>
#define NAME 20
#define SEX 10
#define BIRTH 20
#define ADDR 20
#define POTO 16
#define DAK 7
#define SCHOOL 20
#define STUDENTMAX 100
typedef struct studentinfo
{
char name[NAME];
char sex[SEX];
char birth[BIRTH];
char addr[ADDR];
char poto[POTO];
char dak[DAK];
char school[SCHOOL];
};
typedef struct studentscore
{
char name[NAME];
int ID;
int score[6];
int aver;
int sum;
};
typedef struct allstudentinfo
{
struct studentinfo student1;
struct studentscore student2;
};
/***************************************************
* student info file *
* student score file *
* log student information *
* log student score *
***************************************************/
FILE *infofile=NULL;
FILE *scorefile=NULL;
//char filename1[]="E://Studentinfo.dat";
//char filename2[]="E://Studentscore.dat";
char filename1[]="Studentinfo.dat";
char filename2[]="Studentscore.dat";
/***************************************************
* checkcode() *
***************************************************/
int checkcode()
{
FILE *fp;
char co[20]={0};
char co1[20]={0};
int i;
if((fp=fopen("stu_code.dat","rb"))==NULL) /*身份验证*/
{
printf("please set your identify/n");
printf("passcode:");
scanf("%s",co);
/*
i=0;
while((co1[i]=getch())!='/r')
{
putchar('*');
i++;
}
co1[i]='/0';
*/
fp=fopen("stu_code.dat","wb+");
for(i=0;i<20;i++)
fwrite(&co[i],sizeof(char),1,fp);
fclose(fp);
return 0;
}
else
{
system("cls");
for(i=0;i<20;i++)
fread(&co[i],sizeof(char),1,fp);
fclose(fp);
printf("/n/n/n/t/t/t请输入你的密码:");
//scanf("%s",co1);
i=0;
while((co1[i]=getch())!='/r')
{
putchar('*');
i++;
}
co1[i]='/0';
if(strcmp(co,co1)!=0) /*密码校验*/
{
return 1;
}
system("cls");
}
return -1;
}
/***************************************************
* 修改密码 *
****************************************************/
void modifycode()
{
FILE *fp;
char co[20]={0};
char co1[20]={0};
char co2[20]={0};
int i;
if((fp=fopen("stu_code.dat","wb+"))==NULL)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 请确认磁盘已满或stu_code件没有损坏、且不为空 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
}
else
{
system("cls");
for(i=0;i<20;i++)
fread(&co[i],sizeof(char),1,fp);
printf("/n/n/n/t/t/t请输入你的新密码:");
scanf("%s",co1);
printf("/n/n/n/t/t/t请确认你的密码:");
scanf("%s",co2);
if(strcmp(co1,co2))
{
system("cls");
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 两次输入的密码不一样 修改失败 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
fclose(fp);
return ;
}
else
{
for(i=0;i<20;i++)
fwrite(&co1[i],sizeof(char),1,fp);
fclose(fp);
system("cls");
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 密 码 修 改 成 功 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
}
}
}
/***************************************************
* password() *
***************************************************/
void password()
{
int sign=0;
time_t start,end;
sign=checkcode(); /*************验证用户名 密码*****************/
if(sign==1)
{
system("cls");
printf("/n/n/n/n/n/n");
printf("/t/t%c-----------------------------------------------%c/n",017,017);
printf("/t/t|-----------------------------------------------|/n");
printf("/t/t|----------- 密码不正确 请重新登陆 -----------|/n");
printf("/t/t|-----------------------------------------------|/n");
printf("/t/t%c-----------------------------------------------%c/n/n/n",016,016);
start=time(NULL);
end=time(NULL);
while(end-start<2)
{
end=time(NULL);
}
exit(0);
}
else
{
system("cls");
printf("/n/n/n/n/n");
printf("/t/t-------------------------------------------------/n");
printf("/t/t|-----------------------------------------------|/n");
printf("/t/t| |/n");
printf("/t/t| 欢迎来到管理系统 |/n");
printf("/t/t| |/n");
printf("/t/t|-----------------------------------------------|/n");
printf("/t/t-------------------------------------------------/n");
printf("/n/n/n/n/n/n/n/n");
printf("/t/t/t/t/t/t请稍等3秒后登陆管理系统主界面");
start=time(NULL);
end=time(NULL);
while(end-start<3)
{
end=time(NULL);
}
}
return ;
}
/***************************************************
* showmenu() *
****************************************************/
int showmenu()
{
int in;
char ch;
printf("/n/n");
system("cls");
printf("/t/t-------------------------------------------------/n");
printf("/t/t| 学生个人管理系统 |/n");
printf("/t/t|-----------------------------------------------|/n");
printf("/t/t| 1、学生个人信息管理 |/n");
printf("/t/t| |/n");
printf("/t/t| 2、学生个人成绩管理 |/n");
printf("/t/t| |/n");
printf("/t/t| 3、关于本系统 |/n");
printf("/t/t| |/n");
printf("/t/t| 4、修改密码 |/n");
printf("/t/t| |/n");
printf("/t/t| 5、退出系统 |/n");
printf("/t/t-------------------------------------------------/n");
printf("请您正确选择:");
while(scanf("%d",&in)!=1) /*非数字的判断*/
{
while((ch=getchar())!='/n')
putchar(ch);
return in;
}
fflush(stdin);
return in;
}
/***************************************************
* submeun() *
****************************************************/
int submeun()
{
int in;
system("cls");
printf("/n/n");
printf("/t/t------------------------------------------------/n");
printf("/t/t| 学生个人信息管理 |/n");
printf("/t/t|----------------------------------------------|/n");
printf("/t/t| 1、录入个人信息 |/n");
printf("/t/t| |/n");
printf("/t/t| 2、修改个人信息 |/n");
printf("/t/t| |/n");
printf("/t/t| 3、查询个人信息 |/n");
printf("/t/t| |/n");
printf("/t/t| 4、浏览所有信息 |/n");
printf("/t/t| |/n");
printf("/t/t| 5、删除个人信息 |/n");
printf("/t/t| |/n");
printf("/t/t| 6、退出系统 |/n");
printf("/t/t------------------------------------------------/n");
printf("请选择:");
scanf("%d",&in);
return in;
}
/***************************************************
* 录入个人信息 *
****************************************************/
void inputinfo(struct allstudentinfo *p_student)
{
int count;
char ch;
if((infofile=fopen(filename1,"ab+"))==NULL)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 不能打开文件,请确认磁盘已满或E://Studentinfo.c文件没有损坏 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
exit(1);
}
else
{
rewind(infofile);
for(count=0 ; fread(&p_student[count].student1 , sizeof(struct studentinfo) , 1 , infofile)==1 ; count++)
continue;
fflush(stdin);
printf("/n/n 个人信息登记表/n");
printf("/n请正确填写以下信息(系统目前不能支持中文,请用英文或拼音/n");
printf("---------------------------------------------------------/n/n");
/***************************************************
* 将结构体中数组置0 避免写入文件是乱码 *
***************************************************/
memset(&p_student[count].student1,0,sizeof(struct studentinfo)*STUDENTMAX);
while(count<STUDENTMAX)
{
printf("/n姓 名:");
gets(p_student[count].student1.name);
//fgets(p_student[count].student1.name,1024,stdin);
printf("/n性 别:");
gets(p_student[count].student1.sex );
printf("/n出生日期:");
gets(p_student[count].student1.birth );
printf("/n学生地址:");
gets(p_student[count].student1.addr );
printf("/n联系电话:");
gets(p_student[count].student1.poto);
printf("/n邮政编码:");
gets(p_student[count].student1.dak);
printf("/n所在学校:");
gets(p_student[count].student1.school);
/************
*想写入换行符
*************/
// fprintf(infofile,"/n");
/* sprintf(&p_student[count++].student1,"%s,%s,%s,%s,%s,%s,%s/n",
p_student[count].student1.name,
p_student[count].student1.sex,
p_student[count].student1.birth,
p_student[count].student1.addr,
p_student[count].student1.poto,
p_student[count].student1.dak,
p_student[count].student1.school
);
fwrite(&p_student[count++].student1 , sizeof(struct studentinfo) , 1, infofile);
*/
fwrite(&p_student[count++].student1 , sizeof(struct studentinfo) , 1, infofile);
printf("是否录入下一个学生的信息(y/n)/n");
scanf("%c",&ch);
fflush(stdin);
if(ch=='Y'||ch=='y')
{
printf("/n请输入下一个学生的信息/n");
continue ;
}
else if(ch=='N'||ch=='n')
{
printf("个人信息录入结束/n");
getch();
system("cls");
fclose(infofile);
getch();
return;
}
}
}
}
/***************************************************
* *
* 文件定位 *
* 确定文件总共有多少个学生信息 count *
* *
****************************************************/
int datfile(struct allstudentinfo *p_student)
{
int count;
system("cls");
if((infofile=fopen(filename1,"rb"))==NULL)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 不能打开文件,请确认磁盘已满或E://Studentinfo.c文件没有损坏 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
exit(1);
}
else
{
rewind(infofile); /*定位文件开头*/
for(count=0; fread(&p_student[count].student1 , sizeof(struct studentinfo) , 1 ,infofile)==1 ; count++)
continue;
}
fclose(infofile);
return count;
}
/***************************************************
*** 个人信息修改管理 ***
*** 修改用户姓名 ***
***************************************************/
void mofname(struct allstudentinfo *p_student)
{
char ch;
char *temp;
char *newtemp;
int count;
int i;
system("cls");
count=datfile(p_student); /*** 处理文件 文件信息的大小 ****/
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
newtemp=(char *)malloc(20*sizeof(char)); /*** 分配内存 ***/
temp= (char *)malloc(20*sizeof(char));
printf("请输入您要修改的学生姓名:");
while(gets(temp)!=NULL&&temp[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(temp,p_student[i].student1.name))
{
continue;
}
else
{
printf("请您输入该学生的新姓名:");
gets(newtemp);
system("cls");
printf("/a/n/n/n/n/t/t/t确定要把姓名为%s的学生修改为%s码?(y/n)",temp,newtemp);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student1.name,newtemp); /*修改姓名*/
infofile=fopen(filename1,"w+b"); /*重新写入文件*/
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
printf("修改失败,返回重新操作.....");
getch();
free(temp);
free(newtemp);
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("/n/n/n/n/t/t/t已成功把%s修改为%s返回!",temp,newtemp);
getch();
free(temp);
free(newtemp);
system("cls");
return ;
}
}
}
printf("找不到%s的个人信息,返回重新操作!",temp);
free(temp);
getch();
system("cls");
return ;
}
printf("/n/n/n/n/t/t/t输入有误,请返回重新操作!");
getch();
free(temp);
free(newtemp);
system("cls");
return ;
}
/***************************************************
* 个人信息修改管理 *
* 修改用户性别 *
****************************************************/
void mofsex(struct allstudentinfo *p_student)
{
int i,count;
char *tempname;
char *tempsex;
char ch;
count=datfile(p_student); /*确定文件中内容 多少*/
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
tempsex=(char *)malloc(10*sizeof(char));
printf("/n/n/n/n/t请输入要修改学生的姓名:");
while(gets(tempname)!=NULL && tempname[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
printf("/n/n/n/n/t请输入性别要修改为:");
gets(tempsex);
system("cls");
printf("/a/n/n/n/n/t请确认修改性别(Y/N)");
ch=getchar();
// scanf("")
getch();
if(ch=='Y' ||ch=='y')
{
strcpy(p_student[i].student1.sex,tempsex);
infofile=fopen(filename1,"w+b");
for(i=0;i<count;i++) /***/
{
if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
{
continue;
}
else
{
fclose(infofile);
printf("/n/n/n/n/t修改性别%s失败",tempsex);
getch();
free(tempname);
free(tempsex);
system("cls");
}
}
fclose(infofile);
printf("/n/n/n/n/t成功修改性别%s",tempsex);
free(tempsex);
free(tempname);
getch();
system("cls");
return ;
}
else if(ch=='N'|| ch=='n')
{
printf("/n/n/n/n/t修改操作已取消/n");
free(tempname);
free(tempsex);
getch();
system("cls");
}
}
}
printf("/a/n/n/n/n/t输入的姓名不存在");
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}
printf("/a/n/n/n/n/t输入有误、重新选择:/n");
free(tempname);
free(tempsex);
getch();
system("cls");
}
/***************************************************
* 个人信息修改管理 *
* 修改出生日期 *
****************************************************/
void mofbith(struct allstudentinfo *p_student)
{
int i,count;
char *tempname;
char *temp;
char ch;
count=datfile(p_student); /*确定文件中内容 多少*/
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
temp=(char *)malloc(10*sizeof(char));
printf("/n/n/n/n/t请输入要修改学生的姓名:");
while(gets(tempname)!=NULL && tempname[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
printf("/n/n/n/n/t请输入出生日期要修改为:");
gets(temp);
system("cls");
printf("/a/n/n/n/n/t请确认修改出生日期(Y/N)");
ch=getchar();
// scanf("")
getch();
if(ch=='Y' ||ch=='y')
{
strcpy(p_student[i].student1.birth,temp);
infofile=fopen(filename1,"w+b");
for(i=0;i<count;i++) /***/
{
if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
{
continue;
}
else
{
fclose(infofile);
printf("/n/n/n/n/t修改出生日期%s失败",temp);
getch();
free(tempname);
free(temp);
system("cls");
}
}
fclose(infofile);
printf("/n/n/n/n/t成功修改出生日期%s",temp);
free(temp);
free(tempname);
getch();
system("cls");
return ;
}
else if(ch=='N'|| ch=='n')
{
printf("/n/n/n/n/t修改操作已取消/n");
free(tempname);
free(temp);
getch();
system("cls");
}
}
}
printf("/a/n/n/n/n/t输入的姓名不存在");
free(tempname);
free(temp);
getch();
system("cls");
return ;
}
printf("/a/n/n/n/n/t输入有误、重新选择:/n");
free(tempname);
free(temp);
getch();
system("cls");
}
/***************************************************
* 个人信息修改管理 *
* 修改家庭住址 *
****************************************************/
void mofaddr(struct allstudentinfo *p_student)
{
int i,count;
char *tempname;
char *temp;
char ch;
count=datfile(p_student); /*确定文件中内容 多少*/
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
temp=(char *)malloc(10*sizeof(char));
printf("/n/n/n/n/t请输入要修改学生的姓名:");
while(gets(tempname)!=NULL && tempname[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
printf("/n/n/n/n/t请输入家庭住址要修改为:");
gets(temp);
system("cls");
printf("/a/n/n/n/n/t请确认修改家庭住址(Y/N)");
ch=getchar();
// scanf("")
getch();
if(ch=='Y' ||ch=='y')
{
strcpy(p_student[i].student1.addr,temp);
infofile=fopen(filename1,"w+b");
for(i=0;i<count;i++) /***/
{
if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
{
continue;
}
else
{
fclose(infofile);
printf("/n/n/n/n/t修改家庭住址%s失败",temp);
getch();
free(tempname);
free(temp);
system("cls");
}
}
fclose(infofile);
printf("/n/n/n/n/t成功修改家庭住址%s",temp);
free(temp);
free(tempname);
getch();
system("cls");
return ;
}
else if(ch=='N'|| ch=='n')
{
printf("/n/n/n/n/t修改操作已取消/n");
free(tempname);
free(temp);
getch();
system("cls");
}
}
}
printf("/a/n/n/n/n/t输入的姓名不存在");
free(tempname);
free(temp);
getch();
system("cls");
return ;
}
printf("/a/n/n/n/n/t输入有误、重新选择:/n");
free(tempname);
free(temp);
getch();
system("cls");
}
/***************************************************
* 个人信息修改管理 *
* 修改联系电话 *
****************************************************/
void mofpoto(struct allstudentinfo *p_student)
{
int i,count;
char *tempname;
char *temp;
char ch;
count=datfile(p_student); /*确定文件中内容 多少*/
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
temp=(char *)malloc(10*sizeof(char));
printf("/n/n/n/n/t请输入要修改学生的姓名:");
while(gets(tempname)!=NULL && tempname[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
printf("/n/n/n/n/t请输入联系电话要修改为:");
gets(temp);
system("cls");
printf("/a/n/n/n/n/t请确认修改联系电话(Y/N)");
ch=getchar();
// scanf("")
getch();
if(ch=='Y' ||ch=='y')
{
strcpy(p_student[i].student1.poto,temp);
infofile=fopen(filename1,"w+b");
for(i=0;i<count;i++) /***/
{
if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
{
continue;
}
else
{
fclose(infofile);
printf("/n/n/n/n/t修改联系电话%s失败",temp);
getch();
free(tempname);
free(temp);
system("cls");
}
}
fclose(infofile);
printf("/n/n/n/n/t成功修改联系电话%s",temp);
free(temp);
free(tempname);
getch();
system("cls");
return ;
}
else if(ch=='N'|| ch=='n')
{
printf("/n/n/n/n/t修改操作已取消/n");
free(tempname);
free(temp);
getch();
system("cls");
return ;
}
}
}
printf("/a/n/n/n/n/t输入的姓名不存在");
free(tempname);
free(temp);
getch();
system("cls");
return ;
}
printf("/a/n/n/n/n/t输入有误、重新选择:/n");
free(tempname);
free(temp);
getch();
system("cls");
}
/***************************************************
* 个人信息修改管理 *
* 修改邮政编码 *
****************************************************/
void mofdak(struct allstudentinfo *p_student)
{
int i,count;
char *tempname;
char *temp;
char ch;
count=datfile(p_student); /*确定文件中内容 多少*/
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
temp=(char *)malloc(10*sizeof(char));
printf("/n/n/n/n/t请输入要修改学生的姓名:");
while(gets(tempname)!=NULL && tempname[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
printf("/n/n/n/n/t请输入邮政编码要修改为:");
gets(temp);
system("cls");
printf("/a/n/n/n/n/t请确认修改邮政编码(Y/N)");
ch=getchar();
// scanf("")
getch();
if(ch=='Y' ||ch=='y')
{
strcpy(p_student[i].student1.dak,temp);
infofile=fopen(filename1,"w+b");
for(i=0;i<count;i++) /***/
{
if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
{
continue;
}
else
{
fclose(infofile);
printf("/n/n/n/n/t修改邮政编码%s失败",temp);
getch();
free(tempname);
free(temp);
system("cls");
}
}
fclose(infofile);
printf("/n/n/n/n/t成功修改邮政编码%s",temp);
free(temp);
free(tempname);
getch();
system("cls");
return ;
}
else if(ch=='N'|| ch=='n')
{
printf("/n/n/n/n/t修改操作已取消/n");
free(tempname);
free(temp);
getch();
system("cls");
return ;
}
}
}
printf("/a/n/n/n/n/t输入的姓名不存在");
free(tempname);
free(temp);
getch();
system("cls");
return ;
}
printf("/a/n/n/n/n/t输入有误、重新选择:/n");
free(tempname);
free(temp);
getch();
system("cls");
}
/***************************************************
* 个人信息修改管理 *
* 修改所在学校 *
****************************************************/
void mofschool(struct allstudentinfo *p_student)
{
int i,count;
char *tempname;
char *temp;
char ch;
count=datfile(p_student); /*确定文件中内容 多少*/
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
temp=(char *)malloc(10*sizeof(char));
printf("/n/n/n/n/t请输入要修改学生的姓名:");
while(gets(tempname)!=NULL && tempname[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
printf("/n/n/n/n/t请输入所在学校要修改为:");
gets(temp);
system("cls");
printf("/a/n/n/n/n/t请确认修改所在学校(Y/N)");
ch=getchar();
// scanf("")
getch();
if(ch=='Y' ||ch=='y')
{
strcpy(p_student[i].student1.school,temp);
infofile=fopen(filename1,"w+b");
for(i=0;i<count;i++) /***/
{
if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
{
continue;
}
else
{
fclose(infofile);
printf("/n/n/n/n/t修改所在学校%s失败",temp);
getch();
free(tempname);
free(temp);
system("cls");
}
}
fclose(infofile);
printf("/n/n/n/n/t成功修改所在学校%s",temp);
free(temp);
free(tempname);
getch();
system("cls");
return ;
}
else if(ch=='N'|| ch=='n')
{
printf("/n/n/n/n/t修改操作已取消/n");
free(tempname);
free(temp);
getch();
system("cls");
return ;
}
}
}
printf("/a/n/n/n/n/t输入的姓名不存在");
free(tempname);
free(temp);
getch();
system("cls");
return ;
}
printf("/a/n/n/n/n/t输入有误、重新选择:/n");
free(tempname);
free(temp);
getch();
system("cls");
}
void over()
{
char ch;
fflush(stdin);
printf("/n/t/t请确认退出系统(Y/N):");
ch=getchar();
//getch();
if(ch=='Y' || ch=='y')
{
exit(-1);
}
else
{
return ;
}
}
/***************************************************
* 修改个人信息 *
****************************************************/
void modinfo(struct allstudentinfo *p_student)
{
int in;
do
{
system("cls");
printf("/t/t--------------------------------------------------------/n");
printf("/t/t| 个人信息修改管理 |/n");
printf("/t/t|------------------------------------------------------|/n");
printf("/t/t| 1.修改用户姓名 |/n");
printf("/t/t| |/n");
printf("/t/t| 2.修改用户性别 |/n");
printf("/t/t| |/n");
printf("/t/t| 3.修改出生日期 |/n");
printf("/t/t| |/n");
printf("/t/t| 4.修改家庭住址 |/n");
printf("/t/t| |/n");
printf("/t/t| 5.修改联系电话 |/n");
printf("/t/t| |/n");
printf("/t/t| 6.修改邮政编码 |/n");
printf("/t/t| |/n");
printf("/t/t| 7.修改所在学校 |/n");
printf("/t/t| |/n");
printf("/t/t| 8.退出系统 |/n");
printf("/t/t--------------------------------------------------------/n");
printf("请选择:");
scanf("%d",&in);
fflush(stdin);
switch(in)
{
case 1:
mofname(p_student);
// printf("this 1");
break;
case 2:
mofsex(p_student);
break;
case 3:
mofbith(p_student);
break;
case 4:
mofaddr(p_student);
break;
case 5:
mofpoto(p_student);
break;
case 6:
mofdak(p_student);
break ;
case 7:
mofschool(p_student);
break;
case 8:
over();
break;
}
}
while(1);
}
/***************************************************
* 查询个人信息 *
****************************************************/
void aboutinfo(struct allstudentinfo *p_student)
{
int i,count;
char *tempname;
count=datfile(p_student); /*确定文件中内容 多少*/
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
if((infofile=fopen(filename1,"r"))==NULL)
{
printf("打开文件失败/n");
getch();
exit(0);
}
rewind(infofile);
for(count=0;fread(&p_student[count].student1,sizeof(struct studentinfo),1,infofile)==1; count++)
{
count++;
}
fclose(infofile); /*将文件内容输入到缓存中 关闭*/
//printf("%s/n",p_student[0].student1.name);
tempname = (char *)malloc(20*sizeof(char));
fflush(stdin);
printf("/n/n/t请输入要查询学生的姓名:");
//gets(tempname);
while(gets(tempname)!=NULL && tempname[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
system("cls");
printf("/n/n");
printf("/t/t-----------------------------------------/n");
printf("/t/t| 你要查找(%s)的信息如下 |/n",tempname);
printf("/t/t-----------------------------------------/n");
printf("/t/t| 性 别:%s |/n",p_student[i].student1.sex);
printf("/t/t| |/n");
printf("/t/t| 出生日期:%s |/n",p_student[i].student1.birth);
printf("/t/t| |/n");
printf("/t/t| 学生地址:%s |/n",p_student[i].student1.addr);
printf("/t/t| |/n");
printf("/t/t| 联系电话:%s |/n",p_student[i].student1.poto);
printf("/t/t| |/n");
printf("/t/t| 邮政编码:%s |/n",p_student[i].student1.dak);
printf("/t/t| |/n");
printf("/t/t| 所在学校:%s |/n",p_student[i].student1.school);
printf("/t/t-----------------------------------------");
}
}
}
//fclose(infofile);
}
/***************************************************
* 浏览所有信息 *
****************************************************/
void allinfo(struct allstudentinfo *p_student)
{
int i,count;
//char *tempname;
time_t start,end;
count=datfile(p_student); /*确定文件中内容 多少*/
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
if((infofile=fopen(filename1,"r"))==NULL)
{
printf("打开文件失败/n");
getch();
exit(0);
}
rewind(infofile);
for(count=0;fread(&p_student[count].student1,sizeof(struct studentinfo),1,infofile)==1; count++)
{
count++;
}
fclose(infofile); /*将文件内容输入到缓存中 关闭*/
/*
printf("%s/n",p_student[0].student1.name);
tempname = (char *)malloc(20*sizeof(char));
fflush(stdin);
printf("/n/n/t请输入要查询学生的姓名:");
//gets(tempname);
while(gets(tempname)!=NULL && tempname[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
system("cls");
printf("/n/n");
printf("/t/t-----------------------------------------/n");
printf("/t/t| 你要查找(%s)的信息如下 |/n",tempname);
printf("/t/t-----------------------------------------/n");
printf("/t/t| 性 别:%s |/n",p_student[i].student1.sex);
printf("/t/t| |/n");
printf("/t/t| 出生日期:%s |/n",p_student[i].student1.birth);
printf("/t/t| |/n");
printf("/t/t| 学生地址:%s |/n",p_student[i].student1.addr);
printf("/t/t| |/n");
printf("/t/t| 联系电话:%s |/n",p_student[i].student1.poto);
printf("/t/t| |/n");
printf("/t/t| 邮政编码:%s |/n",p_student[i].student1.dak);
printf("/t/t| |/n");
printf("/t/t| 所在学校:%s |/n",p_student[i].student1.school);
printf("/t/t-----------------------------------------");
}
}
}
//fclose(infofile);
*/
for(i=0;i<count-1;i++)
{
system("cls");
printf("/t**********************************************************/n");
printf("/t每个学生信息停留时间是4秒,4秒以后将显示下一个学生的信息/n");
printf("/t**********************************************************/n");
printf("/n姓 名:%s/n",p_student[i].student1.name);
printf("/n性 别:%s/n",p_student[i].student1.sex);
printf("/n出生日期:%s/n",p_student[i].student1.birth);
printf("/n学生地址:%s/n",p_student[i].student1.addr);
printf("/n联系电话:%s/n",p_student[i].student1.poto);
printf("/n邮政编码:%s/n",p_student[i].student1.dak);
printf("/n所在学校:%s/n",p_student[i].student1.school);
printf("---------------------------------------------------------------");
start=time(NULL);
end=time(NULL);
while((end-start)<4)
{
end=time(NULL);
}
}
printf("/n/n/t/t浏览信息结束、按任意键进入下一个功能/n");
getch();
}
/***************************************************
* 删除个人信息 *
****************************************************/
void delinfo(struct allstudentinfo *p_student)
{
int i,count;
char *tempname; //输入删除姓名:
char ch;
count=datfile(p_student);
if(!count)
{
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
infofile=fopen(filename1,"rb+");
rewind(infofile);
for(count=0 ; fread(&p_student[count].student1 , sizeof(struct studentinfo) , 1,infofile)==1 ; count++)
{
continue;
}
fclose(infofile);
fflush(stdin);
tempname = (char *)malloc(20*sizeof(char));
printf("/n/n/t输入要删除学生的姓名:");
while(gets(tempname)!=NULL && tempname[0]!='/0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
printf("/n/n/t确认删除(Y/N): %s ",p_student[i].student1.name);
ch=getchar();
if(ch=='N' || ch=='n')
{
system("cls");
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 操作以取消 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
for(;i<count;i++)
{
p_student[i].student1=p_student[i+1].student1;
}
count--;
if((infofile=fopen(filename1,"wb+"))==NULL)
{
free(tempname);
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 读取数据失败,请确认已成功录入或文件数据是否损害 |/n");
printf("/t--------------------------------------------------------------/n");
getch();
return ;
}
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student1, sizeof(struct studentinfo) ,1, infofile)!=1)
{
break ;
}
}
fclose(infofile);
free(tempname);
system("cls");
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 成功删除学生信息 |/n");
printf("/t--------------------------------------------------------------/n");
getchar();
printf("/n/n/n/t是否还执行此操作(Y/N):");
// fflush(stdin);
ch=getch();
if(ch=='N' || ch=='n')
{
system("cls");
printf("/a/n/n/n/n/n/n");
printf("/t--------------------------------------------------------------/n");
printf("/t| 操作以取消 |/n");
printf("/t--------------------------------------------------------------/n");
getchar();
return ;
}
else
{
system("cls");
tempname=(char *)malloc(20*sizeof(char)); //重新分配内存以删除下一个信息
getch();
printf("/n/n/n/t请输入你想要删除的学生姓名:");
break;
}
}
printf("/n/n/n/t输入的姓名不存在/n");
free(tempname);
getch();
system("cls");
return ;
}
}
printf("/n/n/n/t输入有误/n");
free(tempname);
getch();
system("cls");
return ;
}
/***************************************************
* submain() *
* 学生个人信息管理模块 *
****************************************************/
void submain(struct allstudentinfo *p_student)
{
int in;
in=submeun();
switch(in)
{
case 1:
inputinfo(p_student); /* 1、录入个人信息 */
break;
case 2:
modinfo(p_student); /* 2、修改个人信息 */
//exit(0);
break;
case 3:
aboutinfo(p_student); /* 3、查询个人信息 */
break;
case 4:
allinfo(p_student); /* 4、浏览所有信息 */
break;
case 5:
delinfo(p_student); /* 5、删除个人信息 */
break;
case 6:
over();
break;
}
}
/********************************************************学生成绩管理部分***************************************************/
/***************************************************
* 输入个人成绩 *
****************************************************/
void inputinfoscore(struct allstudentinfo *p_student)
{
char ch;
int count;
if((scorefile=fopen(filename2,"a+"))==NULL)
{
printf("----------------------------------------------/n");
printf("| 打开失败,请检查文件是否损坏 |/n");
printf("----------------------------------------------/n");
getch();
}
else
{
rewind(scorefile);
for(count=0 ; fread(&p_student[count].student2 , sizeof(struct studentscore),1,scorefile)==1 ; count++)
{
continue;
}
//printf("count=%d",count);
memset(&p_student[count].student2,0,sizeof(struct studentscore)*STUDENTMAX);
while(count<STUDENTMAX)
{
system("cls");
fflush(stdin);
printf("/n姓 名:");
gets(p_student[count].student2.name);
fflush(stdin);
printf("/n学 号:");
scanf("%d",&p_student[count].student2.ID);
fflush(stdin);
printf("*******************各科成绩*******************/n");
printf("/n语 文:");
scanf("%d",&p_student[count].student2.score[0]);
fflush(stdin);
printf("/n数 学:");
scanf("%d",&p_student[count].student2.score[1]);
fflush(stdin);
printf("/n大学英语:");
scanf("%d",&p_student[count].student2.score[2]);
fflush(stdin);
printf("/nC 语 言:");
scanf("%d",&p_student[count].student2.score[3]);
fflush(stdin);
printf("/n软件工程:");
scanf("%d",&p_student[count].student2.score[4]);
fflush(stdin);
printf("/n数据结构:");
scanf("%d",&p_student[count].student2.score[5]);
fwrite(&p_student[count++].student2 , sizeof(struct studentscore) , 1, scorefile);
fflush(stdin);
printf("是否继续(Y/N)");
ch=getchar();
if(ch=='Y' || ch=='y')
{
printf("请输入下一个学生的成绩信息/n");
continue;
}
else
{
fclose(scorefile);
printf("学生成绩录入结束/n");
getch();
return ;
}
}
}
}
/***************************************************
* 修改个人成绩 *
****************************************************/
void modinfoscore(struct allstudentinfo *p_student)
{
char ch;
char *tempname;
int i,in,count;
if((scorefile=fopen(filename2,"a+"))==NULL)
{
printf("----------------------------------------------/n");
printf("| 打开失败,请检查文件是否损坏 |/n");
printf("----------------------------------------------/n");
getch();
}
else
{
rewind(scorefile);
for(count=0 ; fread(&p_student[count].student2 , sizeof(struct studentscore),1,scorefile)==1 ; count++)
{
continue;
}
/**count==0 时 进行判断**/
for(i=0;i<count;i++)
{
fflush(stdin);
tempname=(char *)malloc(20*sizeof(char));
system("cls");
printf("/n/n/t输入要修改成绩的学生姓名:");
gets(tempname);
if(strcmp(tempname,p_student[i].student2.name))
{
printf("/n/n/t输入学生的姓名不存在、请确认/n");
getch();
continue;
}
else
{
printf("----------------------------------------------------------------/n");
printf("| 修改学生的成绩列表 |/n");
printf("----------------------------------------------------------------/n");
printf("|1、语文 2、数学 3、大学英语 4、C语言 5、软件工程 6、数据结构 |/n");
printf("----------------------------------------------------------------/n");
fflush(stdin);
printf("/n请选择:");
scanf("%d",&in);
switch(in)
{
case 1:
fflush(stdin);
printf("/n输入语文成绩:");
scanf("%d",&p_student[i].student2.score[0]);
break;
case 2:
fflush(stdin);
printf("/n输入数学成绩:");
scanf("%d",&p_student[i].student2.score[1]);
break;
case 3:
fflush(stdin);
printf("/n输入大学英语成绩:");
scanf("%d",&p_student[i].student2.score[2]);
break;
case 4:
fflush(stdin);
printf("/n输入C语言成绩:");
scanf("%d",&p_student[i].student2.score[3]);
break;
case 5:
fflush(stdin);
printf("/n输入软件工程成绩:");
scanf("%d",&p_student[i].student2.score[4]);
break;
case 6:
fflush(stdin);
printf("/n输入数据结构成绩:");
scanf("%d",&p_student[i].student2.score[5]);
break;
}
fwrite(&p_student[i++].student2 , sizeof(struct studentscore) , 1, scorefile);
printf("修改成功/n");
fflush(stdin);
printf("是否继续(Y/N)");
ch=getchar();
if(ch=='Y' || ch=='y')
{
printf("请输入下一个学生的成绩信息/n");
continue;
}
else
{
fclose(scorefile);
printf("学生成绩录入结束/n");
getch();
return ;
}
}
}
}
}
/***************************************************
* scoremain() *
* 学生个人成绩管理模块 *
****************************************************/
void scormeun(struct allstudentinfo *p_student)
{
int in;
system("cls");
printf("/n/n");
printf("/t/t------------------------------------------------/n");
printf("/t/t| 学生个人成绩管理 |/n");
printf("/t/t|----------------------------------------------|/n");
printf("/t/t| 1、录入学生个人成绩 |/n");
printf("/t/t| |/n");
printf("/t/t| 2、修改学生个人成绩 |/n");
printf("/t/t| |/n");
printf("/t/t| 3、查询学生个人成绩 |/n");
printf("/t/t| |/n");
printf("/t/t| 4、浏览学生所有成绩 |/n");
printf("/t/t| |/n");
printf("/t/t| 5、删除学生个人成绩 |/n");
printf("/t/t| |/n");
printf("/t/t| 6、退出成绩管理系统 |/n");
printf("/t/t------------------------------------------------/n");
printf("/n/t/t请选择:");
scanf("%d",&in);
switch(in)
{
case 1:
inputinfoscore(p_student); /*****************录入学生个人成绩*****************/
break;
case 2:
modinfoscore(p_student); /*****************修改学生个人成绩*****************/
break;
}
getch();
}
/***************************************************
* aboutsystem() *
* 关于本系统 *
****************************************************/
void aboutsystem()
{
system("cls");
/* time_t start,end;
start=time(NULL);
end=time(NULL);
system("cls");
printf("/n/n/n/n");
printf("/t/t 关于本系统 /n");
printf("/t/t********************************************************/n");
printf("/t/t*本系统目前不支持中文、输入中文读出时有可能会出现乱码、*/n");
printf("/t/t*请使用英文、为了本系统能正常运行、请先录入学生个人信息*/n");
printf("/t/t*删除、修改请谨慎使用 本系统仅供213内部人员参考、不得随*/n");
printf("/t/t*便带出本组... */n");
printf("/t/t********************************************************/n");
printf("/t/t 版权所有者 213*/n");
if((end-start)<10)
{
end=time(NULL);
}
getch();
Sleep(10);
*/
printf("/n/n/n/n");
printf("/t About this system /n");
printf("/t***********************************************************/n");
printf("/t*The system currently does not support the Chinese input */n");
printf("/t*Chinese characters read out from time to time may be */n");
printf("/t*garbled Please use English, the purpose of this system */n");
printf("/t*can function properly, please input personal information */n");
printf("/t*of studentsDelete, modify careful when using this system */n");
printf("/t*only 213 internal staff reference, are not permitted to */n");
printf("/t*bring out this group ... */n");
printf("/t***********************************************************/n");
printf("/t All rights reserved by 213/n");
getch();
}
/***************************************************
********** main **********
***************************************************
*1.studentmax is most student *
*2.point struct pointer *
*3.point struct *
***************************************************/
int main()
{
int in;
struct allstudentinfo studentmax[STUDENTMAX];
struct allstudentinfo *p_student;
p_student = studentmax;
password(); /**********获取用户密码验证*********/
system("cls"); /**********前一个模块推出*********/
do
{
in=showmenu(); /**********调用主菜单*********/
switch(in)
{
case 1:
submain(p_student); /********** 学生个人信息管理*********/
break;
case 2:
scormeun(p_student); /**********学生个人成绩管理*********/
break;
case 3:
aboutsystem(); /**********关于本系统*********/
break;
case 4:
modifycode(); /**********修改登录密码*********/
break;
case 5:
over(); /**********退出学生个人成绩管理*********/
break;
}
}
while(in!=5);
return 0;
}