大一的课程设计了,翻出来放上来供参考,也致曾经初学代码熬夜的我~
第一个功能(将文件中的数据存放到链表中,计算文件中的学生个数存放到a中)
第二个功能(键盘录入学生信息)
第三个功能(计算每门课程的总分和平均分)
第四个功能(计算每个学生的总分及平均分)
第五个功能(按每个学生的总分由高到低排出名次表)
第六个功能(按每个学生的总分由低到高排出名次表)
第七个功能(按学号由小到大排出成绩表)
第八个功能(按姓名的字典顺序排出成绩表)
第九个功能(按学号查询学生排名及其考试成绩)
第十个功能(按姓名查询学生排名及其考试成绩考虑学生重名)
第十一个功能(输出每一科目优秀、良好、中等、及格、不及格人数)
第十二个功能(输出每个学生的学号、姓名、各科考试成绩、总分和平均分)
第十三个功能(将每个学生的个人信息和成绩写入文件,可由键盘输入文件名)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int a,b; //定义全局变量记录学生数量与科目数量
enum tsex{
male,female};
struct student{
char name[20];
enum tsex sex;
int num;
int score[6];
int sum;
float ave;
struct student *next;
};
struct student*creat(void); //创建一个链表并返回首地址
struct student*g1(void); //实现第一个功能(将文件中的数据存放到链表中,计算文件中的学生个数存放到a中)
struct student*g2(void); //实现第二个功能(键盘录入学生信息)
void g3(struct student *); //实现第三个功能(计算每门课程的总分和平均分)
struct student*g4(struct student *); //实现第四个功能(计算每个学生的总分及平均分)
struct student*g5(struct student *); //实现第五个功能(按每个学生的总分由高到低排出名次表)
struct student*g7(struct student *); //实现第六个功能(按每个学生的总分由低到高排出名次表)
struct student*g6(struct student *); //实现第七个功能(按学号由小到大排出成绩表)
struct student*g8(struct student *); //实现第八个功能(按姓名的字典顺序排出成绩表)
void g9(struct student *); //实现第九个功能(按学号查询学生排名及其考试成绩)
void g10(struct student *); //实现第十个功能(按姓名查询学生排名及其考试成绩考虑学生重名)
void g11(struct student *); //实现第十一个功能(输出每一科目优秀、良好、中等、及格、不及格人数)
void g12(struct student *); //实现第十二个功能(输出每个学生的学号、姓名、各科考试成绩、总分和平均分)
void g13(struct student *); //实现第十三个功能(将每个学生的个人信息和成绩写入文件,可由键盘输入文件名)
int main(){
int k,z;
struct student *head;
while(1){
printf("┌-------------------------------------------------------------- ┐\n");
printf("│ 欢迎使用学生成绩管理系统V3.0 │\n");
printf("│ │\n");
printf("│ ┏┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┓ │\n");
printf("│ ┇请输入您要选择的功能: ┇ │\n");
printf("│ ┇ 1.Read from a file ┇ │\n");
printf("│ ┇ 2.Append record manually ┇ │\n");
printf("│ ┇ 3.Calculate total and average score of every course ┇ │\n");
printf("│ ┇ 4.Calculate total and average score of every student ┇ │\n");
printf("│ ┇ 5.Sort in descending order by total score of every student ┇ │\n");
printf("│ ┇ 6.Sort in ascending order by total score of every stuednet ┇ │\n");
printf("│ ┇ 7.Sort in ascending order by number ┇ │\n");
printf("│ ┇ 8.Sort in dictionary order by name ┇ │\n");
printf("│ ┇ 9.Search by number ┇ │\n");
printf("│ ┇ 10.Search by name ┇ │\n");
printf("│ ┇ 11.Statistic analysis for every course ┇ │\n");
printf("│ ┇ 12.List record ┇ │\n");
printf("│ ┇ 13.Write to a file ┇ │\n");
printf("│ ┇ 0.Exit ┇ │\n");
printf("│ ┗┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┛ │\n");
printf("│ Made By:Gong │\n");
printf("│ Wan │\n");
printf("│ Tian │\n");
printf("│ │\n");
printf("│ │\n");
printf("└------------------------------------------------------------------┘\n");
printf("\n·请输入您要选择的功能:");
scanf("%d",&k);
while(k<0||k>13){
printf("\n·您输入的信息有误,请重新输入:");
fflush(stdin);
scanf("%d",&k);
}
switch(k){
case 1:{
head=g1();
break;
}
case 2:{
head=g2();
break;
}
case 3:{
g3(head);
break;
}
case 4:{
head=g4(head);
break;
}
case 5:{
head=g5(head);
break;
}
case 6:{
head=g6(head);
break;
}
case 7:{
head=g7(head);
break;
}
case 8:{
head=g8(head);
break;
}
case 9:{
g9(head);
break;
}
case 10:{
g10(head);
break;
}
case 11:{
g11(head);
break;
}
case 12:{
g12(head);
break;
}
case 13:{
g13(head);
break;
}
case 0:{
printf("\n\n感谢使用学生管理系统v3.0 ^.^ \n\n");
exit(0);
}
}
printf("您是否要退出系统(0.退出 1.不退出):");
scanf("%d",&z);
switch(z){
case 0:{
printf("\n\n感谢使用学生管理系统v3.0 ^.^ \n\n");
exit(0);
break;
}
case 1:{
break;
}
}
}
return 0;
}
struct student*creat(void){
int k;
struct student *head,*end,*p;
end=NULL;
for(k=1;k<=a;k++){
p=(struct student*)malloc(sizeof(struct student))