C语言编写的学生成绩管理系统

题目来源:C语言程序设计实验与习题指导(第三版)颜晖 张泳 主编 P129

题目部分摘录: 

 基本功能:
(1)能够新增学生信息,并计算总分和平均分 (2)能够根据学号修改和删除某学生信息:
(3)能够显示所有学生的成绩信息;(4)能够分别按总分和学号进行排序;
(5)能够根据学号查询该学生的基本信息;(6)学生成绩数据最终保存在文件中,能够对文件读、写学生数据。

(由于在下写完程序才发现居然还要求了计算平均分功能,所以就没在程序里体现出来,聪明的大家自己完成就好了) 

  另外,考虑到如果要原模原样的按照原题目里一条指令一个功能,那么一开始使用程序就要输入“读取文件“的命令,程序输入完,又要输入“保存文件”的命令,这样过于繁琐。因此,在程序里对于“Write to a File”和“Read from File”的实现无需再输入“W”和“R”了

  程序的数据全部保存在了同目录下的名为“123.txt”,文件下,记得先创建。编译环境是devcpp。

以下为源代码:

#include
#include
#include
FILE*fp;int base=0;
struct student{
	int number;
	char name[10];
	int english,chinese,math,programme,sum;	
}s[10];
//输出菜单供选择 
void menu(){
	printf("\tManagement for Student's scores\n");
	printf("\t1.Append record\n");
	printf("\t2.List record\n");
	printf("\t3.Delete record\n");
	printf("\t4.Modify record\n");
	printf("\t5.Search record\n");
	printf("\t6.Sort in descending order by sum\n");
	printf("\t7.Sort in ascending order by sun\n");
	printf("\t8.Sort in descending order by num\n");
	printf("\t9.Sort in ascending order by num\n");
	printf("\tW.Write to a file\n");
	printf("\tR.Read from a File\n");
	printf("\tO.Exit\n");
	printf("\tPlease input your choice:\n");return;
}
//实现“Read from a File” 
void read(){
	char garbage[100];
	if((fp=fopen("123.txt","r"))==NULL){
		printf("Can not open file!\n");
		exit(1);
	}
	fscanf(fp,"%[^\n]\n",garbage);
	while(!feof(fp)){
		
		fscanf(fp,"%d%s%d%d%d%d%d\n",
		&s[base].number,s[base].name,&s[base].english,&s[base].chinese,&s[base].math,&s[base].programme,&s[base].sum);	
		base++;
	} 
	fclose(fp);
	return;
}
//实现“Write to a File” 
void save(){
	int i=0;
	if((fp=fopen("123.txt","w"))==NULL){
		printf("Can not open file\n");
		exit(1);
	}
	fprintf(fp,"学号\t姓名\t英语成绩\t语文成绩\t数学成绩\t编程成绩\t总成绩\n");
	for(i=0;i<=base-1;i++)
		fprintf(fp,"%d\t%s\t%d\t%d\t%d\t%d\t%d\n",s[i].number,s[i].name,s[i].english,s[i].chinese,s[i].math,s[i].programme,s[i].sum);
	fclose(fp);
	return;
}
//实现“Append record”
void append(){
	int i;
	
	printf("Please input the number:");scanf("%d",&s[base].number);
	//确保学号的唯一性 
	for(i=0;is[j+1].sum){
				change1=s[j+1].sum;
				s[j+1].sum=s[j].sum;
				s[j].sum=change1;
				
				change1=s[j+1].english;
				s[j+1].english=s[j].english;
				s[j].english=change1;
				
				change1=s[j+1].chinese;
				s[j+1].chinese=s[j].chinese;
				s[j].chinese=change1;
				
				change1=s[j+1].math;
				s[j+1].math=s[j].math;
				s[j].math=change1;
				
				change1=s[j+1].programme;
				s[j+1].programme=s[j].programme;
				s[j].programme=change1;
				
				change1=s[j+1].number;
				s[j+1].number=s[j].number;
				s[j].number=change1;
				
				strcpy(change,s[j+1].name);
				strcpy(s[j+1].name,s[j].name);
				strcpy(s[j].name,change);
			}
	return;
}
void sort_d_n(){
	int i,j,change1;
	char change[10];
	for(i=0;is[j+1].number){
				change1=s[j+1].sum;
				s[j+1].sum=s[j].sum;
				s[j].sum=change1;
				
				change1=s[j+1].english;
				s[j+1].english=s[j].english;
				s[j].english=change1;
				
				change1=s[j+1].chinese;
				s[j+1].chinese=s[j].chinese;
				s[j].chinese=change1;
				
				change1=s[j+1].math;
				s[j+1].math=s[j].math;
				s[j].math=change1;
				
				change1=s[j+1].programme;
				s[j+1].programme=s[j].programme;
				s[j].programme=change1;
				
				change1=s[j+1].number;
				s[j+1].number=s[j].number;
				s[j].number=change1;
				
				strcpy(change,s[j+1].name);
				strcpy(s[j+1].name,s[j].name);
				strcpy(s[j].name,change);
			}
	return;
}
void sort_a_n(){
		int i,j,change1;
	char change[10];
	for(i=0;i

 

你可能感兴趣的:(课设,c语言,程序设计)