版权声明:欢迎转载请注明转自方辰昱的博客https://blog.csdn.net/viafcccy https://blog.csdn.net/viafcccy/article/details/84948179
程序截图:
头文件说明;
定义全局变量;
定义、编写输入函数;
定义、编写显示函数;
定义、编写修改函数;
定义、编写查找函数;
定义、编写添加函数;
定义、编写排序函数;
定义、编写删除函数;
定义、编写恢复函数;
源代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <string.h>
typedef struct student
{
char num[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
char banji[20]; //班级
float c; //C语言成绩
float math; //数学成绩
float english; //英语成绩
float PE; //体育成绩
float politics; //思修成绩
float all; //总分
float average; //平均分
}student;
student person[200];//定义有1000位学生
int Input()
{
system("cls");
FILE *fp;
int i = 0 ,n = 0;
char select;
student per[200];
printf("开始输入请按下y\n");
select = getch();
while(select == 'y'||select == 'Y')
{
system ("cls");
printf("* * * * * * * * * * * * * * * * * * 学生数据输入 * * * * * * * * * * * * * * * * * *\n");
printf("请输入姓名: \n");
scanf("%s",per[i].name);
printf("请输入学号: \n");
scanf("%s",per[i].num);
printf("请输入性别: \n");
scanf("%s",per[i].sex);
printf("请输入班级: \n");
scanf("%s",per[i].banji);
printf("请输入C语言成绩:\n");
scanf("%f",&per[i].c);
printf("请输入数学成绩: \n");
scanf("%f",&per[i].math);
printf("请输入英语成绩: \n");
scanf("%f",&per[i].english);
printf("请输入体育成绩: \n");
scanf("%f",&per[i].PE);
printf("请输入思修成绩: \n");
scanf("%f",&per[i].politics);
per[i].all = per[i].c + per[i].math + per[i].english + per[i].PE + per[i].politics;
per[i].average = (per[i].all) / 5;
printf("是否继续添加?(y/n)");
select = getch();
i++;
n=n+1;
system( "cls ");
}
fp=fopen("studata.txt","a"); //以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
if(fp==NULL)
{
printf("cannot open the files\n");
system("pause");
return -1;//如果文件出现错误返回-1
}
for(i=0;i<n;i++)
{
fprintf(fp,"%s %s %s %s %f %f %f %f %f %f %f\n",per[i].name,per[i].num,per[i].sex,per[i].banji,per[i].c,per[i].math,per[i].english,per[i].PE,per[i].politics,per[i].all,per[i].average); //以2进制形式写入文件中,一次写入一个数组
}
fclose(fp);
system("pause");
return 0;//程序正常执行返回0
}
int Display()
{
system("cls");
FILE *fp;
int n ;
int i = 0;
fp = fopen("studata.txt","rb");
if(fp==NULL)
{
printf("cannot open the files\n");
system("pause");
return -1;
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 姓名 学号 性别 班级 c语言成绩 数学成绩 英语成绩 体育成绩 思修成绩 总分 平均分\n");
while(fscanf(fp,"%s%s%s%s%f%f%f%f%f%f%f",person[i].name,person[i].num,person[i].sex,person[i].banji,&person[i].c,&person[i].math,&person[i].english,&person[i].PE,&person[i].politics,&person[i].all,&person[i].average)!=EOF)//打开保存的二进制文件将其copy到结构体
{
printf("%s %s %s %s %f %f %f %f %f %f %f",person[i].name,person[i].num,person[i].sex,person[i].banji,person[i].c,person[i].math,person[i].english,person[i].PE,person[i].politics,person[i].all,person[i].average);//将结构体输出
printf("\n");
i++;
}
fclose(fp);
system("pause");
printf("您是否返回上一级菜单?y/n");
if(getch() == 'y')
{
return 0;
}
if(getch() == 'n')
{
system("cls");
Display();
}
return 0;
}
int Modify()
{
system("cls");
student person[200];//从栈上修改(因为全局区写入的结构体无法改动 先将修改数据写在栈上 再写入新的文件 然后修改文件名 代替旧的文件)
FILE *fp2;
int i=0;
int n=0;
char s[15];
int m;
printf("* * * * * * * * * * 请选择查询方式 * * * * * * * * * *\n");
printf("* *\n");
printf("* 1.姓名 *\n");
printf("* 2.学号 *\n");
printf("* 3.返回 *\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("请输入你要修改的方式\n");
m = getch();
while(m!=1&&m!=2&&m!=3)
{
printf("输入错误请重新修改\n");
m = getch();
}
if((fp2=fopen("studata.txt","r"))==NULL) //以2进制方式读取文件信息后进行判断指针是否指向一个有效文件
{
printf("cannot open the files\n");
system("pause");
return -1;
}
while(fscanf(fp2,"%s%s%s%s%f%f%f%f%f%f%f",person[i].name,person[i].num,person[i].sex,person[i].banji,&person[i].c,&person[i].math,&person[i].english,&person[i].PE,&person[i].politics,&person[i].all,&person[i].average)!=EOF)
{
i++;
n=n+1;
}
fclose(fp2) ;
if(m==1)
{
student newp;
char s[20];
int i=0;
printf("\t请输入想修改的姓名:");
scanf("\t%s",s);
while(strcmp(person[i].name,s)!=0&&i<n) i++;//进行比较 找到所需要的信息
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return 1; //若通讯录没有此人返回错误值1
}
else{
printf("姓名:\n");
scanf("\t%s",&newp.name);
printf("学号:\n");
scanf("\t%s",&newp.num);
printf("性别:\n");
scanf("\t%f",&newp.sex);
printf("班级:\n");
scanf("\t%f",&newp.banji);
printf("c语言:\n");
scanf("\t%f",&newp.c);
printf("数学:\n");
scanf("\t%f",&newp.math);
printf("英语:\n");
scanf("\t%f",&newp.english);
printf("体育:\n");
scanf("\t%f",&newp.PE);
printf("思修:\n");
scanf("\t%f",&newp.politics);
newp.all = newp.c + newp.english + newp.PE + newp.politics;
newp.all = newp.all/5;
}
FILE *fin,*ftp;
fin=fopen("studata.txt","r");//读打开原文件studata.txt
ftp=fopen("tmp.txt","w");//写打开临时文件tmp.txt
if(fin==NULL || ftp==NULL){
printf("Open the file failure...\n");
exit(0);
}
int kk=0;
while(kk<n) //从原文件读取一行
{
if(strcmp(person[kk].name,s)!=0)//检验是要删除的行
{
fprintf(fp2,"%s%s%s%s%f%f%f%f%f%f%f",person[i].name,person[i].num,person[i].sex,person[i].banji,person[i].c,person[i].math,person[i].english,person[i].PE,person[i].politics,person[i].all,person[i].average);//不是则将这一行写入临时文件tmp.txt
}
kk++;
}
fprintf(ftp,"%s %s %s %s %f %f %f %f %f %f %f\n",newp.name,newp.num,newp.sex,newp.banji,newp.c,newp.math,newp.english,newp.PE,newp.politics,newp.all,newp.average);//不是则将这一行写入临时文件tmp.txt
fclose(fin);
fclose(ftp);
fclose(fp2);
remove("studata.txt");//删除原文件
rename("tmp.txt","studata.txt");//将临时文件名改为原文件名
}
if(m==2)
{
student newp1;
char s[20];
int i=0;
printf("\t请输入想修改的学号:");
scanf("\t%s",s);
while(strcmp(person[i].num,s)!=0&&i<n) i++; //进行比较 找到所需要的信息
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return 1;
}
else{
printf("姓名:\n");
scanf("\t%s",&newp1.name);
printf("学号:\n");
scanf("\t%s",&newp1.num);
printf("性别:\n");
scanf("\t%f",&newp1.sex);
printf("班级:\n");
scanf("\t%f",&newp1.banji);
printf("c语言:\n");
scanf("\t%f",&newp1.c);
printf("数学:\n");
scanf("\t%f",&newp1.math);
printf("英语:\n");
scanf("\t%f",&newp1.english);
printf("体育:\n");
scanf("\t%f",&newp1.PE);
printf("思修:\n");
scanf("\t%f",&newp1.politics);
newp1.all = newp1.c + newp1.english + newp1.PE + newp1.politics;
newp1.all = newp1.all/5;
}
FILE *fin,*ftp;
fin=fopen("studata.txt","r");//读打开原文件studata.txt
ftp=fopen("tmp.txt","w");//写打开临时文件tmp.txt
if(fin==NULL || ftp==NULL){
printf("Open the file failure...\n");
exit(0);
}
int kk=0;
while(kk<n) //从原文件读取一行
{
if(strcmp(person[kk].num,s)!=0)//(strcmp函数若两个字符串相等返回真值,反之)检验是否是删除的行
{
fprintf(fp2,"%s%s%s%s%f%f%f%f%f%f%f",person[i].name,person[i].num,person[i].sex,person[i].banji,person[i].c,person[i].math,person[i].english,person[i].PE,person[i].politics,person[i].all,person[i].average);//不是则将这一行写入临时文件tmp.txt
}
kk++;
}
fprintf(ftp,"%s %s %s %s %f %f %f %f %f %f %f\n",newp1.name,newp1.num,newp1.sex,newp1.banji,newp1.c,newp1.math,newp1.english,newp1.PE,newp1.politics,newp1.all,newp1.average);//不是则将这一行写入临时文件tmp.txt
fclose(fin);
fclose(ftp);
fclose(fp2);
remove("studata.txt");//删除原文件
rename("tmp.txt","studata.txt");//将临时文件名改为原文件名
}
system("pause");
return 0;
}
int Find()
{
system("cls");
student person[200];
FILE *fp1;
int i=0;
int n=0;
char m;
printf("* * * * * * * * * * 请选择查询方式: * * * * * * * * * * *\n");
printf("* *\n");
printf("* 1.模糊查询 *\n");
printf("* 2.姓名 *\n");
printf("* 3.学号 *\n");
printf("* 4.返回 *\n");
printf("* *\n");
printf("* 请输入你要查询的方式 1 - 4 *\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
m = getch();
while(m !='1' && m !='2' && m !='3' && m !='4')
{
printf("输入错误请重新查询\n");
m = getch();
}
if((fp1=fopen("studata.txt","rb"))==NULL)
{
printf("cannot open the files\n");
}
while(fscanf(fp1,"%s%s%s%s%f%f%f%f%f%f%f",person[i].name,person[i].num,person[i].sex,person[i].banji,&person[i].c,&person[i].math,&person[i].english,&person[i].PE,&person[i].politics,&person[i].all,&person[i].average)!=EOF)
{
i++;
n=n+1;
}
if(m=='1')//模糊查询
{
char s[3];//定义输入的文字所占的字节 (一个汉字占2个字节 外加一结尾符‘\0’此处小心溢出)
int i=0;
system("cls");
printf("请输入想查询的姓:\n");
scanf("%s",s);
for(i=0;i<n-1;i++)//文件信息已经读取到数组中 此处进行循环用于下一语句的查找
{
if(person[i].name[0]==s[0]&&person[i].name[1]==s[1])//比较person[i].name与所输入的前俩个字符是否相同
{
printf("姓名: %s\n",person[i].name);
printf("学号: %s\n",person[i].num);
printf("性别: %s\n",person[i].sex);
printf("班级: %s\n",person[i].banji);
printf("C语言成绩: %f\n",person[i].c);
printf("数学成绩: %f\n",person[i].math);
printf("英语成绩: %f\n",person[i].english);
printf("体育成绩: %f\n",person[i].PE);
printf("思修成绩: %f\n",person[i].politics);
printf("平均分: %f\n",person[i].average);
printf("总分: %f\n",person[i].all);
}
else
{
printf("通讯录中没有此人!\n");
system("pause");
return 1;
}
}
}
if(m=='2')//姓名查询
{
char s[20];
int j=0;
printf("请输入想查询的姓名:");
scanf("\t%s",s);
while(strcmp(person[j].name,s)!=0&&j<n) j++; //比较per[i].name与所输入姓名是否相同//
if(j==n)
{
printf("通讯录中没有此人!\n");
system("pause");
return -1;
}
printf("姓名: %s\n",person[j].name);
printf("学号: %s\n",person[j].num);
printf("性别: %s\n",person[j].sex);
printf("班级: %s\n",person[j].banji);
printf("C语言成绩: %f\n",person[j].c);
printf("数学成绩: %f\n",person[j].math);
printf("英语成绩: %f\n",person[j].english);
printf("体育成绩: %f\n",person[j].PE);
printf("思修成绩: %f\n",person[j].politics);
printf("平均分: %f\n",person[j].average);
printf("总分: %f\n",person[j].all);
}
if(m=='3')//学号查询
{
char s[15];
int i=0;
printf("请输入想查询的学号:");
scanf("\t%s",s);
while(strcmp(person[i].num,s)!=0&&i<n)i++; //比较person[i].name与所输入学号是否相同//
if(i==n)
{
printf("通讯录中没有此人!\n");
system("pause");
return -1;
}
printf("姓名: %s\n",person[i].name);
printf("学号: %s\n",person[i].num);
printf("性别: %s\n",person[i].sex);
printf("班级: %s\n",person[i].banji);
printf("C语言成绩: %f\n",person[i].c);
printf("数学成绩: %f\n",person[i].math);
printf("英语成绩: %f\n",person[i].english);
printf("体育成绩: %f\n",person[i].PE);
printf("思修成绩: %f\n",person[i].politics);
printf("平均分: %f\n",person[i].average);
printf("总分: %f\n",person[i].all);
}
if(m == '4')
{
printf("您是否返回上一级菜单?y/n");
if(getch() == 'y')
{
return 0;
}
if(getch() == 'n')
{
system("cls");
return 0;
}
}
fclose(fp1);
system("pause");
return 0;
}
int Add()
{
system("cls");
FILE *fp;
int i = 0 ,n = 0;
char select;
student per[200];
printf("开始输入请按下y\n");
select = getch();
while(select == 'y'||select == 'Y')
{
system("cls");
printf("* * * * * * * * * * * * * * * * * * 学生数据添加 * * * * * * * * * * * * * * * * * *\n");
printf("请输入姓名: \n");
scanf("%s",per[i].name);
printf("请输入学号: \n");
scanf("%s",per[i].num);
printf("请输入性别: \n");
scanf("%s",per[i].sex);
printf("请输入班级: \n");
scanf("%s",per[i].banji);
printf("请输入C语言成绩:\n");
scanf("%f",&per[i].c);
printf("请输入数学成绩: \n");
scanf("%f",&per[i].math);
printf("请输入英语成绩: \n");
scanf("%f",&per[i].english);
printf("请输入体育成绩: \n");
scanf("%f",&per[i].PE);
printf("请输入思修成绩: \n");
scanf("%f",&per[i].politics);
per[i].all = per[i].c + per[i].math + per[i].english + per[i].PE + per[i].politics;
per[i].average = (per[i].all) / 5;
printf("是否继续添加?(y/n)");
select = getch();
i++;
n=n+1;
system( "cls ");
}
if((fp=fopen("studata.txt","a"))==NULL) //以2进制形式进行文件尾追加
{
printf("cannot open the files\n");
system("pause");
return -1; //如果文件出现错误 就返回-1
}
for(i=0;i<n;i++)
{
fprintf(fp,"%s %s %s %s %f %f %f %f %f %f %f\n",per[i].name,per[i].num,per[i].sex,per[i].banji,per[i].c,per[i].math,per[i].english,per[i].PE,per[i].politics,per[i].all,per[i].average); //以2进制形式写入文件中,一次写入一个数组
}
fclose(fp);
system("pause");
return 0;
}
int Sort()
{
system("cls");
student person[200];
FILE *fp;
struct student temp; //定义临时数组用于交换时存放数组信息用于后面的交换// //总分
float s[200];
int i=0,n=0;
int j,k,t;
int m;
system("cls");
printf("* * * * * * * * * * 选择排序方式 * * * * * * * * * * *\n");
printf("* *\n");
printf("* 1.c语言 *\n");
printf("* 2.数学 *\n");
printf("* 3.英语 *\n");
printf("* 4.体育 *\n");
printf("* 5.思修 *\n");
printf("* 6.总分 *\n");
printf("* 7.返回 *\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("请输入你要排序的方式\n");
m = getch();
system("cls");
while(m!='1'&&m!='2'&&m!='3'&&m!='4'&&m!='5'&&m!='6'&&m!='7')
{
printf("输入错误请重新输入\n");
m = getch();
}
fp=fopen("studata.txt","r");//以2进制方式读取文件信息
if(fp==NULL)
{
printf("cannot open the files\n");
system("pause");
return -1;
}
while(fscanf(fp,"%s%s%s%s%f%f%f%f%f%f%f",person[i].name,person[i].num,person[i].sex,person[i].banji,&person[i].c,&person[i].math,&person[i].english,&person[i].PE,&person[i].politics,&person[i].all,&person[i].average)!=EOF)
{
i++;
n=n+1;
}
if(m=='1')
{
for(i=0;i<n-1;i++)//采用冒泡法进行排序
{
k=i;
for(j=i+1;j<n;j++)
if(person[j].c>person[k].c)//排序比较大小
k=j;
temp=person[k];
person[k]=person[i];
person[i]=temp;//当符合条件时进行数据交换
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 姓名 学号 性别 班级 c语言成绩 数学成绩 英语成绩 体育成绩 思修成绩 总分 平均分\n");
for(i=0;i<n-1;i++)
{
printf("%s %s %s %s %f %f %f %f %f %f %f\n",person[i].name,person[i].num,person[i].sex,person[i].banji,person[i].c,person[i].math,person[i].english,person[i].PE,person[i].politics,person[i].all,person[i].average);
}
fclose(fp);
}
if(m=='2')
{
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(person[j].math>person[k].math)
k=j;
temp=person[k];person[k]=person[i];person[i]=temp;
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 姓名 学号 性别 班级 c语言成绩 数学成绩 英语成绩 体育成绩 思修成绩 总分 平均分\n");
for(i=0;i<n-1;i++)
{
printf("%s %s %s %s %f %f %f %f %f %f %f\n",person[i].name,person[i].num,person[i].sex,person[i].banji,person[i].c,person[i].math,person[i].english,&person[i].PE,person[i].politics,person[i].all,person[i].average);
}
fclose(fp);
}
if(m=='3')
{
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(person[j].english>person[k].english)
k=j;
temp=person[k];person[k]=person[i];person[i]=temp;
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 姓名 学号 性别 班级 c语言成绩 数学成绩 英语成绩 体育成绩 思修成绩 总分 平均分\n");
for(i=0;i<n-1;i++)
{
printf("%s %s %s %s %f %f %f %f %f %f %f\n",person[i].name,person[i].num,person[i].sex,person[i].banji,person[i].c,person[i].math,person[i].english,person[i].PE,person[i].politics,person[i].all,person[i].average);
}
fclose(fp);
}
if(m=='4')
{
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(person[j].PE>person[k].PE)
k=j;
temp=person[k];person[k]=person[i];person[i]=temp;
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 姓名 学号 性别 班级 c语言成绩 数学成绩 英语成绩 体育成绩 思修成绩 总分 平均分\n");
for(int i=0;i<n-1;i++)
{
printf("%s %s %s %s %f %f %f %f %f %f %f\n",person[i].name,person[i].num,person[i].sex,person[i].banji,&person[i].c,person[i].math,person[i].english,person[i].PE,person[i].politics,person[i].all,person[i].average);
}
fclose(fp);
}
if(m=='5')
{
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(person[j].politics>person[k].politics)
k=j;
temp=person[k];person[k]=person[i];person[i]=temp;
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 姓名 学号 性别 班级 c语言成绩 数学成绩 英语成绩 体育成绩 思修成绩 总分 平均分\n");
for(i=0;i<n-1;i++)
{
printf("%s %s %s %s %f %f %f %f %f %f %f\n",person[i].name,person[i].num,person[i].sex,person[i].banji,&person[i].c,person[i].math,person[i].english,person[i].PE,person[i].politics,person[i].all,person[i].average);
}
fclose(fp);
}
if(m=='6')
{
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(person[j].all>person[k].all)
k=j;
temp=person[k];person[k]=person[i];person[i]=temp;
}
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 姓名 学号 性别 班级 c语言成绩 数学成绩 英语成绩 体育成绩 思修成绩 总分 平均分\n");
for(i=0;i<n-1;i++)
{
printf("%s %s %s %s %f %f %f %f %f %f %f\n",person[i].name,person[i].num,person[i].sex,person[i].banji,person[i].c,person[i].math,person[i].english,person[i].PE,person[i].politics,person[i].all,person[i].average);
}
fclose(fp);
}
if(m == '7')
{
printf("您是否返回上一级菜单?y/n");
if(getch() == 'y')
{
return 0;
}
if(getch() == 'n')
{
system("cls");
return 0;
}
}
fclose(fp);
system("pause");
return 0;
}
int Delete()
{
system("cls");
printf("若不知道删除学生的学号,请先进入查询系统查询学生学号!\n");
student person[200];
FILE *fp1;
char s[10];
int i=0,n=0;
fp1=fopen("studata.txt","r");
if(fp1==NULL) //以2进制方式读取文件信息//
{
printf("cannot open the files\n");
system("pause");
return -1;
}
while(fscanf(fp1,"%s%s%s%s%f%f%f%f%f%f%f",person[i].name,person[i].num,person[i].sex,person[i].banji,&person[i].c,&person[i].math,&person[i].english,&person[i].PE,&person[i].politics,&person[i].all,&person[i].average)!=EOF)
{
i++;
n=n+1;
}
fclose(fp1);
printf("学生学号:");
scanf("%s",s);
i=0;
while(strcmp(person[i].num,s)!=0 && i<n)
{
i++;
} //进行比较找到所需要的信息
if(i==n)
{
printf("通讯录中没有此人!\n");
system("pause");
return 1;
}
else{
FILE *fin,*ftp;
fin=fopen("studata.txt","r");//读打开原文件
ftp=fopen("tmp.txt","w");//写打开临时文件
if(fin==NULL || ftp==NULL){
printf("Open the file failure...\n");
exit(0);
}
int kk=0;
while(kk<n) //从原文件读取一行
{
if(strcmp(person[kk].num,s) != 0)//检验是否是要删除的行
{
fprintf(fp1,"%s%s%s%s%f%f%f%f%f%f%f",person[i].name,person[i].num,person[i].sex,person[i].banji,person[i].c,person[i].math,person[i].english,person[i].PE,person[i].politics,person[i].all,person[i].average);//不是则将这一行写入临时文件tmp.txt
}
kk++;
}
fclose(fin);
fclose(ftp);
rename("studata.txt","backups.txt");//将原文件修改为备份文件
rename("tmp.txt","studata.txt");//将临时文件名改为原文件名
printf("删除成功!") ;
system("pause");
}
return 0;
}
int Undelete()
{
system("cls");
printf("您是否要恢复备份?y/n");
if(getch() == 'n')
{
return 0;
}
if(getch() == 'y')
{
rename("studata.txt","tmp.txt");
rename("backups.txt","studata.txt");
rename("tmp.txt","backups.txt");
printf("恢复成功!");
}
}
int main()
{
char select;
while(1)//循环执行功能菜单
{
system("cls");//清屏
printf("* * * * * * * * * * * * * * * * * * *学生成绩管理系统菜单 * * * * * * * * * * * * * * * * * * * *\n");
printf("* 1. 输入数据 *\n");
printf("* 2. 显示数据 *\n");
printf("* 3. 修改数据 *\n");
printf("* 4. 查找数据 *\n");
printf("* 5. 添加数据 *\n");
printf("* 6. 排序数据 *\n");
printf("* 7. 删除数据 *\n");
printf("* 8. 恢复删除 *\n");
printf("* 9. 退出 *\n");
printf("* 请选择 1 - 9 *\n");
printf("* *\n");
printf("*version:2.0 Program author:moonfish*\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
select = getch();
if(select == '9')
{
printf("您真的要退出吗?y/n");
if(getch() == 'n')
{
main();
}
if(getch() == 'y')
{
printf("\n谢谢使用:)");
exit(0);//退出程序
}
}
else switch(select)
{
case '1': Input() ;break;
case '2': Display() ;break;
case '3': Modify() ;break;
case '4': Find() ;break;
case '5': Add() ;break;
case '6': Sort() ;break;
case '7': Delete() ;break;
case '8': Undelete() ;break;
}
}
return 0 ;
}