C语言学生成绩管理系统

头像
L美食诱惑   2021-09-18   8748浏览
已有101条回答
头像
沈阳硅藻泥
2022-11-12

纯手工。望采纳!!

#include
#include
#include

#define MENU_NUM 7
#define N 3

typedef struct s1
{
char no[11]; /*学号由10个字符组成*/
char name[15]; /*姓名*/
float score[N]; /*各门课成绩*/
float sum; /*总分*/
float average; /*平均分*/
int order; /*名次*/
struct s1 *next; /*指向后继结点的指针*/
}STUDENT; /*定义结构体类型*/

STUDENT * head=NULL;
void InputData( STUDENT * ptr );
void PrintMenu( );
int Menu_Select( );
void Init( );
void create( );
void print( ) ;
void Delete( );
void append();
void computer();

main()
{
int key;
while(1) {
key=Menu_Select();
switch(key)
{
case 0: Init();
//初试化链表。也就是若链表不为空则释放链表中所有,将head置为空(NULL)
break;
case 1: create();
//创建链表,输入
break;
case 2: Delete();
//删除一个指定学号的记录
break;
case 3: print();
//打印链表中所有
break;
case 4: computer();
//计算链表中所有人的总分和平均分
break;
case 5: append();
//追加一个到链表的尾部
break;
case 6: Init();
//释放链表
exit(0);
}
};
}

void PrintMenu( )
{
int i;
char * menu[]={
"0. Init list",
"1. Enter list",
"2. Delete a record from list",
"3. Print list",
"4. Compute the score",
"5. Insert record to list",
"6. Quit"
};

printf("\n\n");
for (i=0;i printf("%s\n",menu[i]);
printf("\nEnter your choice(0-6):");
}

int Menu_Select( )
{
int key;

PrintMenu( );
scanf("%d",&key);
return key;
}

void Init( ) //初始化单链表。也就是释放链表中的所有
{
STUDENT *p,*ptr;//定义两个临时指针变量p,ptr
p=head;ptr=head;//将两个临时变量指向头指针head ;
while(ptr!=NULL)
{
ptr=ptr->next;//ptr指向下一个结构
free(p);//释放p所指向的结构的内存
p=ptr;//将p指向ptr所指向的
}
head=NULL;//将head指向NULL
}

void create( ) //创建单链表
{
STUDENT *pt, *pth=NULL; //定义两个指针变量:pt指向即将申请新的内存,pth指向当前
while(1)
{
pt=(STUDENT *)malloc(sizeof(STUDENT));//让pt指向新申请的内存空间
InputData(pt);//输入,存放到pt所指向的结构。注意让pt的next指向NULL
if (strcmp(pt->no,"@")==0)
{
free(pt);//释放pt所指向的内存空间
break;//退出循环
}
else if (head==NULL)
{
pth=pt;
head=pt;//将头指针head和pth指向pt
}
else
{

pth->next=pt; //将pth的next指向pt;
pth=pt; //将pth指向pt;
}
};
}

void print( ) //打印单链表中所有
{ int i=0;
STUDENT *p;//第一个指针p
p=head;//将p指向head

printf("\n");
printf("******************************STUDENT******************************\n");
printf("|rec|no | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|---|----------|----------------|----|----|----|------|-----|-----|\n");

//打印表头
while (p!=NULL)
{
printf("|%3d|%10s|%-16s|%4.1f|%4.1f|%4.1f|%6.2f|%5.1f|%5d|\n",
++i,p->no,p->name,p->score[0],p->score[1],p->score[2],
p->sum,p->average,p->order); //打印p所指向的结构中的所有。注意打印间的分隔线
p=p->next;//将p指向p的下一个结构
}
printf("********************************END********************************\n");//打印表尾
}

void Delete( ) //删除一个记录
{
STUDENT *p,*pth;//定义两个指针p,pth
char no[11];//定义一个整数no(用来存储输入的学号)
printf("intput delete no\n");
scanf("%s",no);//用输入语句输入一个学号存储到no中
p=head;pth=head;//将p和pth都指向头指针
if (strcmp(p->no,no)==0) //也就是若头指针指向的需要删除
{
head=head->next;//将head指针指向head的下一个;
free(p);//释放p所指向的
}
else
{
p=p->next;//将p指向p的下一个
while ( p!=NULL)
{
if (strcmp(p->no,no)==0) //找到了要删除的
{
pth->next=p->next;//将pth的next指向p的next
free(p);//释放p
break;//退出循环
}
else
{
pth=pth->next;//将pth指向pth的next 或 将pth指向p
p=p->next;//将p指向p的next
}
}
}
}

void append()
{
STUDENT *p,*pth;//定义两个指针变量p,pth

pth=head;//将pth指向head
while ( pth->next!=NULL)
{
pth=pth->next;//ptr指向ptr的next
}

p=(STUDENT *)malloc(sizeof(STUDENT));//将p指向新申请的内存空间
InputData(p);p->next=NULL;//存储到p所指向的内存空间,注意将p的next置为NULL
pth->next=p;//将ptr的next指向p
}
void InputData( STUDENT *ptr )
{ int i;
printf("enter no:");
scanf("%s",ptr->no);
if (strcmp(ptr->no,"@")==0 ) return;

printf("enter name:");
scanf("%s",ptr->name);

for(i=0;i<3;i++)
{
printf("shuru chengji\n");
scanf("%f",&ptr->score[i]);
}

ptr->sum=0;
ptr->average=0;
ptr->order=0;
ptr->next=NULL;
}
void computer()
{
STUDENT *p;
p=head;
for(;p;p=p->next)
{
p->sum=p->score[0]+p->score[1]+p->score[2];
p->average=(p->score[0]+p->score[1]+p->score[2])/3;
}
}
请采纳。

77

头像
那份噯隻許伱甡
2022-10-27

鄙视 鄙视

90

相关问题

C语言学生成绩管理系统
天使之懿727 1970-01-01

本人拿到的毕业论文题目是用C语言编写学生成绩管理系统 现高分悬赏,如果有做好的代码或者文档,急需!!!!1如果用asp.net和sqlserver2008做的也可以 的哦

C语言成绩管理系统
起舞徘徊风露下 1970-01-01

学生成绩管理系统C语言编程
非非1227 1970-01-01

学生成绩管理系统-1输入数据-2输出数据-3查询数据 -1按学号查询 -2按姓名查询 -3返回系统-4退出系统有谁会啊!跪求!

:C#学生成绩管理系统.。。 毕业论文
真南真北 1970-01-01

速求一篇C#学生成绩管理系统的论文,只要你会给多少分都行

最新问答

排水论文在哪发?
伊兰0518 2021-09-19

小区市外排水论文发哪个杂志可以呢?我需要发表一篇这方面的论文。

word转pdf,为什么不显示图片图片?
花花的老妈 2021-09-19

我想把论文从word格式转换成PDF格式,用的金山WPS,可转换完成之后,里面的流程图就不见了,空白~~这是为什么呢?谁能帮我解决一下!谢谢!

公众号与小程序有什么区别
汤糖躺烫湯 2021-09-19

公众号与小程序有什么区别

如何制作电子小报
dream959595 2021-09-19

镀铬什么意思
autumngold 2021-09-19

镀铬什么意思

中国电影艺术的思想
幸福顺延 2021-09-19

中国针灸大纲作者是谁?
王子麻麻 2021-09-19

热门问答

排水论文在哪发?
伊兰0518 2021-09-19

小区市外排水论文发哪个杂志可以呢?我需要发表一篇这方面的论文。

word转pdf,为什么不显示图片图片?
花花的老妈 2021-09-19

我想把论文从word格式转换成PDF格式,用的金山WPS,可转换完成之后,里面的流程图就不见了,空白~~这是为什么呢?谁能帮我解决一下!谢谢!

公众号与小程序有什么区别
汤糖躺烫湯 2021-09-19

公众号与小程序有什么区别

如何制作电子小报
dream959595 2021-09-19

镀铬什么意思
autumngold 2021-09-19

镀铬什么意思

中国电影艺术的思想
幸福顺延 2021-09-19

中国针灸大纲作者是谁?
王子麻麻 2021-09-19

Coptyright © www.lw85.com电脑版