学生成绩管理系统C语言 c语言做学生管理系统

#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct Student
{
int no;
char name[10];
float score[3]; //threescores
float average; //averagescore
struct Student *next;
}Student;

void Initial(Student *p)
{
p=(Student*)malloc(sizeof(Student));//the head ofthe linklist
p->next=NULL;
}
void Input(Student *p)
{
Student*stu=(Student*)malloc(sizeof(Student));
printf("学号:");scanf("%d",&stu->no);
printf("姓名:");scanf("%s",stu->name);
printf("成绩1:");scanf("%f",&stu->score[0]);
printf("成绩2:");scanf("%f",&stu->score[1]);
printf("成绩3:");scanf("%f",&stu->score[2]);
stu->average=(stu->score[0]+stu->score[1]+stu->score[2])/3;
stu->next=NULL;
Student*ps=(Student*)malloc(sizeof(Student));
ps=p;
while(ps->next)
ps=ps->next;
ps->next=stu;
//free(ps);
}

void Output(Student *p)
{
Student*ps=(Student*)malloc(sizeof(Student));
ps=p->next;
printf("学号t姓名t成绩1t成绩2t成绩3t平均分n");
while(ps!=NULL)
{
printf("%dt",ps->no);
printf("%st",ps->name);
printf ("%.1ft",ps->score[0]);
printf("%.1ft",ps->score[1]);
printf("%.1ft",ps->score[2]);
printf("%.1ftn",ps->average);
ps=ps->next;
}
free(ps);
}
void Find(Student *p)
{
Student*ps=(Student*)malloc(sizeof(Student));
ps=p->next;
char name[10];
printf("输入要查询的学生姓名:");
scanf("%s",name);
while(strcmp(ps->name,name)!=0)//相同时为0
ps=ps->next;

printf("学号t姓名t成绩1t成绩2t成绩3t平均分n");
printf("%dt",ps->no);
printf("%st",ps->name);
printf("%.1ft",ps->score[0]);
printf("%.1ft",ps->score[1]);
printf("%.1ft",ps->score[2]);
printf("%.1ftn",ps->average);

}
void swap(Student *p1, Student *p2) //swap two nodes forsorting
{
Student*temp=(Student*)malloc(sizeof(Student));
temp->no=p1->no;
strcpy(temp->name,p1->name);
temp->score[0]=p1->score[0];
学生成绩管理系统(C语言) c语言做学生管理系统
temp->score[1]=p1->score[1];
temp->score[2]=p1->score[2];
temp->average=p1->average;

p1->no=p2->no;
strcpy(p1->name,p2->name);
p1->score[0]=p2->score[0];
p1->score[1]=p2->score[1];
p1->score[2]=p2->score[2];
p1->average=p2->average;

p2->no=temp->no;
strcpy(p2->name,temp->name);
p2->score[0]=temp->score[0];
p2->score[1]=temp->score[1];
p2->score[2]=temp->score[2];
p2->average=temp->average;

free(temp);
}
void Sort(Student *p)//sort by average
{
Student*p1=(Student*)malloc(sizeof(Student));
Student*p2=(Student*)malloc(sizeof(Student));
p1=p->next;
while(p1)
{
floatavg=p1->average;
p2=p1->next;
while(p2)
{
if(avg< (p2->average))
{
swap(p1,p2);
avg=p2->average;
}
p2=p2->next;
}
p1=p1->next;
}
}
void Insert(Student *p)
{
printf("按平均分高低插入数据!n");
Student*stu=(Student*)malloc(sizeof(Student));//the data beinginserted

printf("学号:");scanf("%d",&stu->no);
printf("姓名:");scanf("%s",stu->name);
printf("成绩1:");scanf("%f",&stu->score[0]);
printf("成绩2:");scanf("%f",&stu->score[1]);
printf("成绩3:");scanf("%f",&stu->score[2]);
stu->average=(stu->score[0]+stu->score[1]+stu->score[2])/3;
stu->next=NULL;

Student*p1=(Student*)malloc(sizeof(Student));//temp
p1=p;
while(p1->next&&((p1->next)->average)>(stu->average))
p1=p1->next;
//p1=p1->next;
stu->next=p1->next;
p1->next=stu;

}
void Menu(Student *p)
{
int select;
printf("您好,欢迎使用学生成绩管理系统!n");
printf("1:输入学生成绩数据n2:输出全部学生信息n3:按姓名查找学生记录n4:按平均成绩进行排序n5:按平均成绩高低插入数据n6:退出n");
scanf("%d",&select);
while(select<=6&& select>0)
{
switch(select)
{
case 1:Input(p);break;
case 2:Output(p);break;
case 3:Find(p); break;
case 4:Sort(p); break;
case 5:Insert(p); break;
case 6:printf("成功退出,欢迎再次使用!n"); return ; break;
}
printf("1:输入学生成绩数据n2:输出全部学生信息n3:按姓名查找学生记录n4:按平均成绩进行排序n5:按平均成绩高低插入数据n6:退出n");
scanf("%d",&select);
}

}
int main()
{
Student*head=(Student*)malloc(sizeof(Student));
Menu(head);
}

  

爱华网本文地址 » http://www.413yy.cn/a/25101016/296579.html

更多阅读

86五笔常用字 五笔500常用字

86五笔常用字打字按键之最少、效率最大统计(总按键、平均每字按键等)分析没有最快,只有更快!86五笔成字字根(含键名字)、最常用的140个汉字、识别码(五笔打字通6.5)部分、:《国家标准》一级字频度表1(1-300字) 、(301-600字) 、(601-900

高考宝典:家长必看!

家长陪考八大法宝:出考场不说“正确答案”2011年05月20日 14:10 重庆晚报法宝1心态平和快乐陪考马上高考了,家长想帮孩子提高成绩已经不现实,唯一能做的就是帮助孩子调整心态,创造一个良好的临考环境。过来人说考试期间,家长首先要保持自

EXCEL中的统分数组公式 excel 取消数组公式

为了保证学生成绩录入和处理的公平性,学校采用混合编班统一录入的方式。也就是说,把同年级多个班的学生成绩统一录入到一个Excel工作表中,而且使同班的学生不相邻。这种情况下,想在不破坏原始工作表的情况下统计各班学生各科的总分、平

遵义医学院学生成绩查询系统 学生成绩查询系统代码

遵义医学院学生成绩查询系统皮皮你好祝您学习进步,门门优秀!请注意:1、该成绩只作为查询使用,如果有何疑问或者身份证号有误,请到教务处教务科核实2、该成绩数据为教务处审核后的当前学期成绩。        当前在线人数:2总访问人

围棋提子算法 围棋规则

围棋提子算法主题词:图,数据结构,递归,分支结构,堆栈,入口坐标恢复,遍历路径最近用c#语言做围棋打谱软件,想做一个比较全面的围棋提子函数。以前做的是单侧的围棋提子函数,很简明,分左上右下四个方向调用四次围棋提子函数,就可以解决围棋提子

声明:《学生成绩管理系统C语言 c语言做学生管理系统》为网友离愁渐远分享!如侵犯到您的合法权益请联系我们删除