c链表 学生成绩管理系统

这是一个使用C语言编写的学生成绩管理系统,通过单链表实现,具备插入、删除、修改、成绩排序等功能。代码包括插入学生、成绩排序、平均成绩排序等函数,采用直接插入排序方式简化代码理解。
摘要由CSDN通过智能技术生成

              闲来无聊写了一个学生成绩管理系统,为了巩固下我结构体写的,是用链表实现的。可以进行删除,插入,修改,成绩排序。(链表是不循环单链表)

         代码注释,呵呵 本人比较懒 也知道作为一名合格的程序员注释是必须有的 我把函数做了 注释大家不必研究总的,只需要看懂函数实现的功能.

         对了,对于排序的问题本人没有用什么冒泡,插入排序,因为这种排序需要四个指针,我觉得自己会把自己弄晕。 所以,自己在排序的时候是把链表重建了,重建链表和冒泡啊 插入排序比起来更加简单容易理解。 关于其他的排序暂时没有去深究  

        呵呵。好啦下面贴代码,代码中问题多多 只要我一写程序bug肯定少不了。希望细心的你可以指出其中的不足以便于大家学习促进。



下面是程序里面有的函数:

void insert_data(struct student **phead , struct student *p);    //插入函数,并把学生按学号插入到适当位置

void grade_sort(struct student **phead , struct student *p, int n);  //成绩排序函数

void sortaver(struct student **phead,struct student *p);     //平均成绩排序函数      

void insertstudents(student **phead);   //插入学生函数,并调用插入函数

void caculate_sumorave(struct student *head);  //计算平均,总分函数

void showstudents(student *head);   //打印学生成绩函数

void delect_student(struct student **head);  //删除函数

void creat_list(struct student **phead);   //创建函数

void update(student *head);   //修改函数

void free_list(struct student *head)  //释放内存函数

struct student *arrange( student *phead);  //成绩排序函数



源代码:


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define debug 0  
#define stdflush() while(getchar() != '\n')  
#define LEN  sizeof(student) 


typedef struct student
{
long num;
char name[20];
char sex[2];
int socre1;
int socre2;
int socre3;
double aver;
int addtion;
struct student *next;
}student;


void insert_data(struct student **phead , struct student *p);    


void insertstudents(student **phead)
{
    struct student *p = NULL/*, *r = NULL,*/;

p = (student *)malloc(sizeof(student));


printf("\n\n");

if(p != NULL)
{

printf("请输入学生学号:");
scanf("%ld", &p->num);
stdflush();

while(p->num)
{
printf("请输入姓名:");
scanf("%s", p->name);
stdflush();
    
printf("请输入性别:");
scanf("%s",p->sex); 


printf("请输入数学成绩:");
scanf("%d", &p->socre1);
stdflush();


printf("请输入英语成绩:");
scanf("%d", &p->socre2);
stdflush();


printf("请输入C语言:");
scanf("%d", &p->socre3);
stdflush();

insert_data(&(*phead),p);


  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值