/****************************删除个人信息*******************************/
void delinfo(struct allstudentinfo *p_student)
{
int i;
int count;
char ch;
char *temp=NULL; //初始化临时数组
system("cls"); //清屏
if((infofile=fopen(filename,"rb"))==NULL)
{
printf("不能打开文件,请确认磁盘已满或文件是否存在");
getch();
exit(1);
}
rewind(infofile); //指向文件头
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
{
continue;
}
fclose(infofile); //关闭文件
if(!count)
{
printf("不能读取数据,请确认已经正确录入或数据是否存在");
getch();
return ;
}
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].student.name))
{
system("cls");
printf("\a\n\n\n\n\n\n\t\t 确定要删除%s的个人信息吗?(y/n)",p_student[i].student.name);
ch=getch();
if(ch=='n'||ch=='N')
{
free(temp);
system("cls");
printf("\n\n\n\n\n\n\t\t 该操作已取消.请按任意键返回!");
getch();
system("cls");
return ;
}
for(;i<count;i++)
{
p_student[i].student=p_student[i+1].student;
}
count--; //删除一个学生信息
if((infofile=fopen(filename,"w+b"))==NULL) //重新打开文件更新
{
free(temp);
printf("不能打开文件,请确认磁盘已满或文件是否存在");
getch();
exit(1);
}
for(i=0;i<count;i++)
{ //更新文件
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)!=1)
break;
}
free(temp); //释放内存
system("cls");
printf("\n\n\n\n\n\n\t\t 已成功删除该学生的个人信息.....\n");
printf("\n\t\t确定要删除下一个学生个人信息(y/n)");
ch=getch();
if(ch=='n'||ch=='N')
{
fclose(infofile);
system("cls");
return ;
}
else
{
system("cls");
temp=(char *)malloc(20*sizeof(char)); //重新分配内存以删除下一个信息
printf("请输入你想要删除的学生姓名:");
break;
}
}
}
printf("找不到%s的个人信息.",temp);
printf("请重新输入(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
free(temp);
temp=(char *)malloc(sizeof(char)); //重新分配
system("cls");
printf("请输入你要删除的学生姓名:");
continue;
}
else
{
free(temp);
system("cls");
return ;
}
}
free(temp); //释放内存
printf("输入有误,请按任意键返回子菜单,重新选择");
getch();
system("cls");
}
/**********************修改用户姓名***************************/
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("读取数据失败,请确认已成功录入或文件数据是否损害!");
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].student.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].student.name,newtemp); //修改姓名
infofile=fopen(filename,"w+b"); //重新写入文件
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,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);
free(newtemp);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t输入有误,请返回重新操作!");
getch();
free(temp);
free(newtemp);
system("cls");
return ;
}
2007-5-22 12:22:31举报帖子
使用道具
gdzhan
等级:新手上路
文章:8
积分:174
注册:2007年4月15日
第 3 楼 /************************修改个人性别*********************/
void mofsex(struct allstudentinfo *p_student)
{
char *tempname; //要修改的学生的名字
char *tempsex; //要修改的学生的性别
char ch;
int count;
int i;
system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入数据或文件是否损坏!");
getch();
return ;
}
tempname=(char *)malloc(10*sizeof(char)); //分配内存
tempsex=(char *)malloc(10*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请输入该学生的新性别:");
gets(tempsex);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改该学生的性别吗?(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.sex,tempsex);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,请返回.....");
getch();
free(tempname);
free(tempsex);
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t已成功修改%s的性别,返回!",tempname);
getch();
free(tempname);
free(tempsex);
system("cls");
return ;
}
printf("该操作已衩取消,返回.....");
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}
}
printf("找不到%s的个人信息,返回......",tempname);
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新输入!");
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}
/**************************修改出生日期***************************/
void mofbirth(struct allstudentinfo *p_student)
{
char *tempname;
char *tempbirth;
char ch;
int i,count;
system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
tempbirth=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的出生日期:");
gets(tempbirth);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的出生日期吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.birth,tempbirth);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempbirth);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回......");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的出生日期,返回!,",tempname);
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已被取消,返回!");
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回!",tempname);
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择!");
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
/***********************修改家庭住址*********************/
void mofadddr(struct allstudentinfo *p_student)
{
char *tempname;
char *tempadddr;
char ch;
int i,count;
system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
tempadddr=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的家庭住址:");
gets(tempadddr);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的家庭住址吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.adddr,tempadddr);
infofile=fopen(filename,"w+b"); //重新写入数据库
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempadddr);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的家庭住址,返回......!,",tempname);
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已被取消,返回.......!");
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
/*****************************修改联系电话********************************/
void mofpoto(struct allstudentinfo *p_student)
{
char *tempname;
char *temppoto;
char ch;
int i,count;
system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
system("cls");
return ;
}
tempname=(char *)malloc(20*sizeof(char));
temppoto=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的联系电话:");
gets(temppoto);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的联系电话吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.poto,temppoto);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(temppoto);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的联系电话,返回.......!,",tempname);
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已被取消,返回.......!");
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
/**************************修改邮证编码*************************/
void mofdak(struct allstudentinfo *p_student)
{
char *tempname;
char *tempdak;
char ch;
int i,count;
system("cls");
count=datfile(p_student); //处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
system("cls");
return ;
}
tempname=(char *)malloc(20*sizeof(char));
tempdak =(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的邮证编码:");
gets(tempdak);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的邮证编码吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.dak,tempdak);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempdak);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的邮证编码,返回.......!",tempname);
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已取消,返回.......!");
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
/*************************修改所在院校******************************/
void mofschool(struct allstudentinfo *p_student)
{
char *tempname;
char *tempschool;
char ch;
int i,count;
system("cls");
count=datfile(p_student); //文件处理
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
system("cls");
return ;
}
tempname=(char *)malloc(20*sizeof(char));
tempschool=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的所在院校:");
gets(tempschool);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的所在院校吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.school,tempschool);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempschool);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的所在院校,返回.......!",tempname);
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已取消,返回.......!");
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
/**************************修改个人信息的主要操作文件**************************/
int datfile(struct allstudentinfo *p_student)
{
int count;
system("cls");
if((infofile=fopen(filename,"rb"))==NULL)
{
printf("不能找开文件,请确认磁盘已满或文件是否存在!");
getch();
exit(1);
}
rewind(infofile); //指向文件头读取数据
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
{
continue;
}
fclose(infofile);
return count; //返回读到的结构块数
}
2007-5-22 12:23:26举报帖子
使用道具
gdzhan
等级:新手上路
文章:8
积分:174
注册:2007年4月15日
方寸之内,剖天下; 方坛之内,析自我;