/*c 语言大作业,
姓名:哈斯木·阿斯图拜。
学号:20161401402。
班级:计算机 16-2.
这个代码是关于管理学生成绩系统的代码。*/
#include
#include
#include
void frist_print()
{
printf("\t\t********************************\n\n");
printf("\t\t\t 欢迎进入学生成绩系统\n");
//欢迎信息
}
void menu()
{
//管理菜单
printf("\n\t\t********************************\n");
printf("\t\t==\t1.录入学生成绩\n\t\t+\n");
printf("\t\t==\t2.显示学生成绩\n\t\t+\n");
printf("\t\t==\t3.查询学生成绩\n\t\t+\n");
printf("\t\t==\t4.添加学生成绩\n\t\t+\n");
printf("\t\t==\t5.修改学生成绩\n\t\t+\n");
printf("\t\t==\t6.删除学生成绩\n\t\t+\n");
printf("\t\t==\t7.清空页面\n\t\t+\n");
printf("\t\t==\t8.退出系统\n");
printf("\t\t********************************\n");
printf("请确认:1--8:\t");
putchar(10);
}
struct MM
{
char num[20];
char name[10];
float pay;
int many;
}mm;
void scanf_1()
{
char ch;
FILE *fp;
// 结构体定义变量
//第一次输入信息并保存在文件中
if((fp=fopen("dd.dat","wb+"))==NULL)
{
printf("cannot open file\n");
哈斯木·阿斯图拜
20161401402
计算机 16-2
exit(0);
}
do
{
printf("请输入成绩的--编号:\t");
getchar();
gets(mm.num);
printf("姓名:\t");
gets(mm.name);
printf("成绩:\t");
scanf("%f",&mm.pay);
printf("学号:\t");
scanf("%d",&mm.many);
if(fwrite(&mm,sizeof(struct MM),1,fp)!=1)
{
printf("file write error\n");
exit(0);
}
printf("是否继续输入 y or n ?\t");
getchar();
ch=getchar();
}while(ch=='y'||ch=='Y');
fclose(fp);
}
void find()
{
int a,b=0;
char ch[20];
FILE *fp;
//查询成绩的信息
if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
printf("请输入要查询的成绩的方式\n\t1.编号 2.姓名:\n\t 请选择 1 or 2 \t");
scanf("%d",&a);
if(a==1)
{
getchar();
printf("请输入成绩的编号:\t");
gets(ch);
while(fread(&mm,sizeof(struct MM),1,fp)==1)
if(strcmp(mm.num,ch)==0)
哈斯木·阿斯图拜
20161401402
计算机 16-2
{
b++;
printf("编号\t 姓名\t 分数\t\t 学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
}
if(b==0) printf("对不起!没有找到相关信息:\n");
}
else if(a==2)
{
printf("请输入成绩的姓名:\t");
getchar();
gets(ch);
while(fread(&mm,sizeof(struct MM),1,fp)==1)
if(strcmp(mm.name,ch)==0)
{
b++;
printf("编号\t 姓名\t 分数\t\t 学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
}
if(b==0) printf("input error!\n");
//第二次输入信息并保存在文件中
}
fclose(fp);
}
void scanf_2()
{
char ch;
FILE *fp;
if((fp=fopen("dd.dat","ab"))==NULL)
printf("cannot open file\n");
exit(0);
{
}
do
{
printf("请输入要添加成绩的--编号:\t");
getchar();
gets(mm.num);
printf("姓名:\t");
gets(mm.name);
printf("分数:\t");
scanf("%f",&mm.pay);
printf("学号:\t");
哈斯木·阿斯图拜
20161401402
计算机 16-2
scanf("%d",&mm.many);
if(fwrite(&mm,sizeof(struct MM),1,fp)!=1)
{
printf("file write error\n");
exit(0);
}
printf("是否继续输入 y or n ?\t");
getchar();
ch=getchar();
}while(ch=='y'||ch=='Y');
fclose(fp);
}
void print()
//输出文档中的信息
{
}
FILE *fp;
if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannot open file\n");
return ;
}
printf("编号\t 姓名\t 分数\t\t 学号\n");
while(fread(&mm,sizeof(struct MM),1,fp)==1)
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
fclose(fp);
//修改信息的函数,定义另
//然后把其余的信息复制到
//把原来的文件移除;
void change()
{
一个文件,把要修改的信息放到该文件中
struct XX
该文件中;并把该文件从新命名为原来的名
{
char num[20];
char name[10];
float pay;
int many;
}xx;
FILE *fp2;
int b=0,c=0,n=0;
char ch[20],ck;
FILE *fp;
do{
if((fp=fopen("dd.dat","rb"))==NULL)
哈斯木·阿斯图拜
20161401402
计算机 16-2
{
}
{
}
{
{
}
}
{
}
printf("cannot open file\n");
exit(0);
if((fp2=fopen("temp.dat","wb"))==NULL)
printf("cannot open file\n");
exit(0);
printf("请输入要修改成绩的编号:\t");
scanf("%s",ch);
n++;
while(fread(&mm,sizeof(struct MM),1,fp)==1)
if((strcmp(mm.num,ch)==0))
b++;
printf("编号\t 姓名\t 价格\t\t 学号\n");
//b 的值如果一直没有改变说明,没有找到相关的信息;
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
getchar();
printf("请输入成绩的新编号:\t");
gets(xx.num);
printf("请输入成绩的新姓名:\t");
gets(xx.name);
printf("请输入成绩的新分数:\t");
scanf("%f",&xx.pay);
printf("请输入成绩新学号:\t");
scanf("%d",&xx.many);
getchar();
fwrite(&xx,sizeof(struct XX),1,fp2);
if(strcmp(mm.num,ch)!=0)
fwrite(&mm,sizeof(struct MM),1,fp2);
if(b==0)
printf("\t 没有找到相关信息!\n");
getchar();
rewind(fp);
//如果要继续修改的话,要把标记返回到文件的开头;
printf("是否继续修改?enter 'y' or 'n' \t");
哈斯木·阿斯图拜
20161401402
计算机 16-2
ck=getchar();
fclose(fp);
fclose(fp2);
remove("dd.dat");
rename("temp.dat","dd.dat");
}
}
void del()
{
while(ck=='y'||ck=='Y');
if(b!=0)
printf("\t 修改成功:\n");
//如果没有找到相关信息就不能输出
//删除函数和修改很相似
FILE *fp2;
int b=0,c=0,n=0;
char ch[20],ck;
FILE *fp;
do {
if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
{
}
{
{
if((fp2=fopen("temp.dat","wb"))==NULL)
printf("cannot open file\n");
exit(0);
printf("请输入要删除成绩的编号:\t");
scanf("%s",ch);
n++;
while(fread(&mm,sizeof(struct MM),1,fp)==1)
if((strcmp(mm.num,ch)==0))
b++;
//b 的值如果一直没有改变说明,没有找到相关的信息;
printf("编号\t 姓名\t 分数\t\t 学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.pay,mm.many);
}
}
else if(strcmp(mm.num,ch)!=0)
fwrite(&mm,sizeof(struct MM),1,fp2);
哈斯木·阿斯图拜
20161401402
计算机 16-2
if(b==0)
printf("\t 没有找到相关信息!\n");
getchar();
{
}
rewind(fp);
getchar();
getchar();
printf("删除成功!");
//如果要继续修改的话,要把标记返回到文件的开头;
getchar();
printf("是否继续删除?enter 'y' or 'n' \t");
ck=getchar();
fclose(fp);
fclose(fp2);
remove("dd.dat");
rename("temp.dat","dd.dat");
}
while(ck=='y'||ck=='Y');
if(b!=0)
printf("\t 保存成功:\n");
}
void myexit()
{
//如果没有找到相关信息就不能输出
char ch;
printf("\t 是否确定退出?请选择 y or n:
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
else
menu();
exit(0);
");
}
int main()
{
int a;
frist_print();
menu();
while(1)
{
scanf("%d",&a);
if(a==1)
scanf_1();
哈斯木·阿斯图拜
20161401402
计算机 16-2
else if(a==2)
else if(a==3)
else if(a==4)
else if(a==5)
else if(a==6)
else if(a==7)
else if(a==8)
print();
find();
scanf_2();
change();
del();
system("cls");
myexit();
else printf("输入错误!!!请重新输入:\t");
printf("\t 按任意键继续!\n");
menu();
}
}
哈斯木·阿斯图拜
20161401402
计算机 16-2