您的位置:首页 > 编程语言 > C语言/C++

C语言练手自己编写学生成绩管理系统

2015-05-14 14:30 766 查看
#include<stdio.h>
#include<stdlib.h>
/*定义学生结构体*/
struct Student
{
char ID[20];
char Name[20];
float Mark1;
float Mark2;
float Mark3;
float Avarage;
};

/*声明学生数组及学生数量*/
struct Student students[1000];
int num=0;

/*计算平均成绩*/
float Avg(struct Student stu)
{
return (stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*根据学号寻找数组下标*/
int GetIndexByStudentId(char id[])
{
int i;
for(i=0;i<num;i++)
{
if(strcmp(students[i].ID,id)==0)
{
return i;
}
}
return -1;
}
/*根据姓名寻找数组下标*/
int GetIndexByStudentName(char name[])
{
int i;
for(i=0;i<num;i++)
{
if(strcmp(students[i].Name,name)==0)
{
return i;
}
}
return -1;
}

/*SHowStudent*/
int ShowStudentInfo()
{
int i;
IO_ReadInfo();

printf("%10s%10s%10s%10s%10s%10s\n","学号","姓名","成绩1","成绩2","成绩3","平均分");
printf("-----------------------------------------------------------\n");

for(i=0;i<=num;i++)
{
students[i].Avarage=Avg(students[i]);
printf("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,
students[i].Mark3,students[i].Avarage);
}
return 0;
}
int ShowStudentInfo1()
{
int i;
IO_ReadInfo();

printf("%10s%10s%10s%10s%10s%10s\n","学号","姓名","成绩1","成绩2","成绩3","平均分");
printf("-----------------------------------------------------------\n");

for(i=0;i<=num;i++)
{
students[i].Avarage=Avg(students[i]);
printf("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,
students[i].Mark3,students[i].Avarage);
}
system("pause");
printMenu();
printf("%d\n",userChoice());
}
/*增加学生记录*/
int addStudent()
{
while(1)
{
printf("请输入学号:");
scanf("%s",&students[num].ID);
printf("请输入姓名:");
scanf("%s",&students[num].Name);
printf("请输入成绩1:");
scanf("%f",&students[num].Mark1);
printf("请输入成绩2:");
scanf("%f",&students[num].Mark2);
printf("请输入成绩3:");
scanf("%f",&students[num].Mark3);
ShowStudentInfo();
IO_WriteInfo();
num++;
getchar();
printf("是否继续?y/n");
if(getchar()=='n')
{

printMenu();
printf("%d\n",userChoice());
break;
}
}
return 0;
}
/*将信息写入文件*/
int IO_WriteInfo()
{
int i;
FILE *fp;
fp=fopen("C:\\12.txt","wb");
fwrite(&num,sizeof(int),1,fp);
for(i=0;i<=num;i++)
{
fwrite(&students[i],sizeof(struct Student),1,fp);
}
fclose(fp);
}
/*将文件信息读出*/
int IO_ReadInfo()
{
int i;
FILE *fp;
fp=fopen("C:\\12.txt","wb");
fread(&num,sizeof(int),1,fp);
for(i=0;i<=num;i++)
{
fread(&students[i],sizeof(struct Student),1,fp);
}
fclose(fp);
}
int main()
{
printMenu();

printf("%d\n",userChoice());

system("pause");

}
//菜单打印
int printMenu()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
return 0;
}
//接收用户输入选择
int userChoice()
{
int choice;
printf("请输入选择《1-5》:");
scanf("%d",&choice);
switch(choice)
{
case 1:
addStudent();
case 2:
return 2;
case 3:
return 3;
case 4:
ShowStudentInfo1();
case 5:
exit(0);
}
}


废话不多写,一步一步来。

第一步,要确定自己的需求,打印出需求。

int main()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
system("pause");
}


第二步,将菜单打印写一个函数。

int main()
{
printMenu();
system("pause");
}
//菜单打印
int printMenu()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
return 0;
}


第三步,接收用户输入的选择,并测试

int main()
{
printMenu();
printf("%d\n",userChoice());
system("pause");

}
//菜单打印
int printMenu()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
return 0;
}
//接收用户输入选择
int userChoice()
{
int choice;
printf("请输入选择《1-6》:");
scanf("%d",&choice);
switch(choice)
{
case 1:
return 1;
case 2:
return 2;
case 3:
return 3;
case 4:
return 4;
case 5:
return 5;

}
}


第4步,定义结构体变量Student并插入学生信息打印测试。

#include<stdio.h>

/*定义学生结构体*/
struct Student
{
char ID[20];
char Name[20];
float Mark1;
float Mark2;
float Mark3;
float Avarage;
};

/*声明学生数组及学生数量*/
struct Student students[1000];
int num=0;
/*增加学生记录*/
int addStudent()
{

printf("请输入学号:");
scanf("%s",&students[num].ID);
printf("请输入姓名:");
scanf("%s",&students[num].Name);
printf("请输入成绩1:");
scanf("%f",&students[num].Mark1);
printf("请输入成绩2:");
scanf("%f",&students[num].Mark2);
printf("请输入成绩3:");
scanf("%f",&students[num].Mark3);
printf("学号:%s,姓名:%s,成绩1:%0.2f,成绩2:%0.2f,成绩3:%0.2f",
students[num].ID,students[num].Name,students[num].Mark1,students[num].Mark2,students[num].Mark3);
num++;
return 0;
}

int main()
{
printMenu();
printf("%d\n",userChoice());
system("pause");

}
//菜单打印
int printMenu()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
return 0;
}
//接收用户输入选择
int userChoice()
{
int choice;
printf("请输入选择《1-5》:");
scanf("%d",&choice);
switch(choice)
{
case 1:
addStudent();
case 2:
return 2;
case 3:
return 3;
case 4:
return 4;
case 5:
return 5;
}
}


第五步计算平均成绩,将数据读写到文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: