功能1、录入名学生的信息,包括学号、姓名、分数

功能2、输出这些学生的所有信息

功能3、求出最高分的学生,并输出其所有信息

功能4、根据学生的学号查找学生的所有信息

功能5、根据学生的学号删除学生的所有信息

功能6、根据学生的学号修改学生的所有信息

功能7、按照学生的成绩从高到低降序排序

功能8、退出学生管理系统

test.h

#ifndef __TEST_H__
#define __TEST_H__
typedef struct
{int id;float score;char name[20];
}datatype;typedef struct student
{union{datatype data;int len;};struct student *prio;struct student *next;
}stu;//创建
stu *create();
//判空
int empty(stu *s);
//菜单
void menu();
//申请节点
stu *buy(int id,float score,char name[20]);
//学生信息录入
int install(stu *s,int id,float score,char name[20]);
//输出学生信息
void show(stu *s);
//根据id查找学生信息
int search(stu *s,int id);
//最高分
int max_score(stu *s);
//根据id删除学生信息
int del(stu *s,int id);
//根据id修改学生信息
int change(stu *s,int id_old,int id_new,float score,char name[20]);
//按成绩降序
void do_wn(stu *s);
//退出系统
void ex_it();#endif

test.c

#include <stdio.h>
#include <stdlib.h>
#include "test.h"
#include <string.h>
//创建
stu *create()
{stu *s=(stu *)malloc(sizeof(stu));if(NULL==s){printf("创建失败\n");return NULL;}s->len=0;s->next=NULL;s->prio=NULL;return s;
}
//判空
int empty(stu *s)
{return s->len==0?1:0;
}
//菜单
void menu()
{printf("*****************************************\n");printf("*            学生管理系统               *\n");printf("*            1、学生信息录入            *\n");printf("*            2、输出学生信息            *\n");printf("*            3、查找学生信息            *\n");printf("*            4、求最高分并输出          *\n");printf("*            5、删除学生信息            *\n");printf("*            6、修改学生信息            *\n");printf("*            7、按成绩从大到小          *\n");printf("*            8、退出系统                *\n");printf("*****************************************\n");printf("请选择您需要的功能\n");
}
//申请节点
stu *buy(int id,float score,char name[20])
{stu *p=(stu *)malloc(sizeof(stu));if(NULL==p){printf("申请失败\n");return NULL;}p->data.id=id;p->data.score=score;strcpy(p->data.name,name);p->prio=NULL;p->next=NULL;return p;
}
//学生信息录入
int install(stu *s,int id,float score,char name[20])
{if(NULL==s){printf("录入不了\n");return -1;}if(s->len>0){stu *r=s;while(r->next!=NULL)  {r=r->next;if(r->data.id==id){printf("\t****************************\n");printf("\t*    id有重复,请重新输入   *\n");printf("\t****************************\n");return -1;}}}//录入过程stu *q=s;while(q->next!=NULL){q=q->next;}stu *p=buy(id,score,name);p->prio=q;q->next=p;s->len++;printf("录入完成\n");return 0;
}
//输出学生信息
void show(stu *s)
{if(NULL==s||empty(s)){printf("表空,算了吧\n");return;}stu *q=s->next;printf("\tid\t姓名\t成绩\n");while(q!=NULL){printf("\t%d\t%s\t%g\n",q->data.id,q->data.name,q->data.score);q=q->next;}printf("\t****************************\n");printf("\t*     全部学生输出完成     *\n");printf("\t****************************\n");
}
//根据id查找学生信息
int search(stu *s,int id)
{if(NULL==s||empty(s)){printf("表空,算了吧\n");return -1;}stu *q=s->next;while(q!=NULL){if(q->data.id==id){printf("学生%s的id是%d,成绩为%g\n",q->data.name,q->data.id,q->data.score);      return 0;}q=q->next;}printf("\t****************************\n");printf("\t*  没有这个id,请重新输入  *\n");printf("\t****************************\n");return 1;
}
//最高分
int max_score(stu *s)
{if(NULL==s||empty(s)){printf("表空,算了吧\n");return -1;}float max=s->next->data.score;stu *q=s->next;int num=q->data.id;while(q!=NULL){if(max<q->data.score){max=q->data.score;num=q->data.id;}q=q->next;}printf("最高分的");search(s,num);return 0;
}
//根据id删除学生信息
int del(stu *s,int id)
{char del;if(search(s,id)){return -1;}printf("\t****************************\n");printf("\t*      请确认是否删除      *\n");printf("\t****************************\n");getchar();scanf("%c",&del);if(del=='y'){stu *q=s->next;while(q!=NULL){if(q->data.id==id&&q->next!=NULL){q->prio->next=q->next;q->next->prio=q->prio;free(q);q=NULL;s->len--;printf("\t****************************\n");printf("\t*         删除成功         *\n");printf("\t****************************\n");return 0;}else if(q->data.id==id&&q->next==NULL){q->prio->next=NULL;free(q);q=NULL;s->len--;printf("\t****************************\n");printf("\t*         删除成功         *\n");printf("\t****************************\n");return 0;}q=q->next;}printf("\t****************************\n");printf("\t*  没有这个id,请重新输入  *\n");printf("\t****************************\n");return -1;}else if(del=='n'){printf("\t****************************\n");printf("\t*       不删除,已跳过      *\n");printf("\t****************************\n");return -1;}else{printf("\t****************************\n");printf("\t*   不明白您的意思,已跳过  *\n");printf("\t****************************\n");return 1;}}
//根据id修改学生信息
int change(stu *s,int id_old,int id_new,float score,char name[20])
{if(NULL==s||empty(s)){printf("表空,算了吧\n");return -1;}if(id_old==id_new){printf("\t****************************\n");printf("\t*     id重复,请重新输入    *\n");printf("\t****************************\n");return-1;}stu *q=s->next;while(q->data.id!=id_old){q=q->next;}q->data.id=id_new;q->data.score=score;strcpy(q->data.name,name);printf("\t****************************\n");printf("\t*         修改成功         *\n");printf("\t****************************\n");return 0;
}
//按成绩降序
void do_wn(stu *s)
{if(NULL==s||empty(s)){printf("表空,算了吧\n");return ;}int temp_id;float temp_score;char s_name[20];for(int i=1;i<s->len;i++){stu *q=s->next;for(int j=0;j<s->len-i;j++){if(q->data.score<q->next->data.score){temp_score=q->data.score; q->data.score=q->next->data.score; q->next->data.score=temp_score;temp_id=q->data.id; q->data.id=q->next->data.id; q->next->data.id=temp_id;strcpy(s_name,q->data.name); strcpy(q->data.name,q->next->data.name); strcpy(q->next->data.name,s_name);}else{q=q->next;}}}printf("\t****************************\n");printf("\t*         排序完成         *\n");printf("\t****************************\n");
}
//退出系统
void ex_it()
{printf("\t**************\n");printf("\t*byebye了您咧*\n");printf("\t**************\n");exit(0);
}

main.c

#include<stdio.h>
#include "test.h"
#include <stdlib.h>
int main(int argc, const char *argv[])
{stu *s=create();if(NULL==s){printf("创建失败\n");return -1;}int gn,id;float score;char name[20];while(1){menu();scanf("%d",&gn);switch(gn){case 1:printf("请输入学生的id\n");scanf("%d",&id);printf("请输入学生的成绩\n");scanf("%f",&score);getchar();printf("请输入学生的姓名\n");gets(name);install(s,id,score,name);break;case 2:show(s);break;case 3:printf("请输入您要查找的学生id\n");scanf("%d",&id);search(s,id);break;case 4:max_score(s);break;case 5:printf("请输入您要删除的学生id\n");scanf("%d",&id);del(s,id);break;case 6:printf("请输入您要修改的学生的id\n");scanf("%d",&id);int id_old=id;printf("请输入您要修改的学生的新id\n");scanf("%d",&id);printf("请输入要修改的学生的成绩\n");scanf("%f",&score);getchar();printf("请输入要修改的学生的姓名\n");gets(name);change(s,id_old,id,score,name);break;case 7:do_wn(s);    break;case 8:ex_it();default:printf("选项不存在,好好输\n");}}return 0;
}

结果

ubuntu@ubuntu:student$ ./a.out
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
1
请输入学生的id
20221000
请输入学生的成绩
88
请输入学生的姓名
张三
录入完成
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
1
请输入学生的id
20221001
请输入学生的成绩
99
请输入学生的姓名
李四
录入完成
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
1
请输入学生的id
20221002
请输入学生的成绩
100
请输入学生的姓名
王五
录入完成
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
1
请输入学生的id
20221004
请输入学生的成绩
60
请输入学生的姓名
小红
录入完成
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
2id 姓名  成绩20221000  张三  8820221001  李四  9920221002  王五  10020221004 小红  60*****************************     全部学生输出完成     *****************************
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
3
请输入您要查找的学生id
4*****************************  没有这个id,请重新输入  *****************************
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
3
请输入您要查找的学生id
20001001*****************************  没有这个id,请重新输入  *****************************
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
20221001
选项不存在,好好输
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
3
请输入您要查找的学生id
20221001
学生李四的id是20221001,成绩为99
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
4
最高分的学生王五的id是20221002,成绩为100
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
6
请输入您要修改的学生的id
20221000
请输入您要修改的学生的新id
20221003
请输入要修改的学生的成绩
97
请输入要修改的学生的姓名
邵泓翔*****************************         修改成功         *****************************
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
2id 姓名  成绩20221003  邵泓翔 9720221001  李四  9920221002  王五  10020221004 小红  60*****************************     全部学生输出完成     *****************************
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
5
请输入您要删除的学生id
20221003
学生邵泓翔的id是20221003,成绩为97*****************************      请确认是否删除      *****************************
y*****************************         删除成功         *****************************
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
2id 姓名  成绩20221001  李四  9920221002  王五  10020221004 小红  60*****************************     全部学生输出完成     *****************************
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
7*****************************         排序完成         *****************************
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
2id 姓名  成绩20221002  王五  10020221001 李四  9920221004  小红  60*****************************     全部学生输出完成     *****************************
*****************************************
*            学生管理系统               *
*            1、学生信息录入            *
*            2、输出学生信息            *
*            3、查找学生信息            *
*            4、求最高分并输出          *
*            5、删除学生信息            *
*            6、修改学生信息            *
*            7、按成绩从大到小          *
*            8、退出系统                *
*****************************************
请选择您需要的功能
8***************byebye了您咧***************

双向链表学生管理系统(0723)相关推荐

  1. 学生管理系统(C语言小项目)

    讲课的主题:链表与文件的结合. 文件:希望长久的保存 链表:节点数不确定,删除和增加方便 系统: 用户: 1.分配用户(管理员帐号,普通用户) 2.登录用户: API:输入暗文密码(不带回显) cha ...

  2. 学生管理系统——用链表实现

    前言 该程序是大一上学期的课设,在上学期的基础上对此程序进行了细节上的优化,以及将程序分成多个文件,第一次对多文件开发有了了解(再也不要将几千行代码放在一个文件内了) 一. 软件功能描述 假设学生成绩 ...

  3. 用python设计学生管理系统_python+tkinter实现学生管理系统

    本文实例为大家分享了python+tkinter实现学生管理系统的具体代码,供大家参考,具体内容如下 from tkinter import * from tkinter.messagebox imp ...

  4. python删除字典中性别为男_python初学者,用python3实现基本的学生管理系统代码实例...

    本篇文章主要分享python学生管理系统的使用,文章非常详细地介绍了通过示例代码实现的学生管理系统,该系统对每个人的研究或工作都有一定的参考学习价值,希望你能在其中有所收获. 这个是用python实现 ...

  5. 学生管理系统(C语言版)

    学生管理系统 这个是大一学习C语言的时候做的一个小项目,代码部分基本都是自己一人完成,没用到什么高大上的技术,在图形化方面用了EasyX(一个C++的图形库),其他都是C语言的基础内容. 项目介绍 项 ...

  6. 用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)(二)

    本文上接用JDBC写一个学生管理系统(添加.删除.修改.查询学生信息) 这次主要是对上一文中的查询方法做一下调整,用创建内部类的方法来实现学生信息的查询. 我们先要定义一个接口IRowMapper: ...

  7. 用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)

    首先需要用Navicat Premium创建一个student表 用Java连接好MySQL数据库(需要copy一个mysql-connector-java-5.1.44-bin.jar包,该包可在网 ...

  8. python大作业 学生管理系统 以Excel(xls)格式导入文件

    简单的说一下每个板块的作用 这个load函数,是导入进来文件的数据 def load():data=xlrd.open_workbook('data.xls')table=data.sheets()[ ...

  9. JAVA入门到精通-第73讲-学生管理系统5-dao.sqlhelper

    -Model2模式 如果数据模型会很多,怎么办? 处理业务逻辑的:Model层 后台又分为:处理业务逻辑和对数据库的操作DAO-data access object -决定,再抽象一层出来:数据模型: ...

  10. java管理系统用怎么框架做_java 使用servlet做学生管理系统(无框架)

    使用工具: JavaJDK1.8 32位 Tomcat 8.5.33 32位 IDEA MySQL5.6 使用Jar包: c3p0-0.9.1.2.jar commons-dbutils-1.4.ja ...

最新文章

  1. Windows Socket五种I/O模型——代码全攻略
  2. 【学习笔记】Python 基础零碎知识
  3. 齐次(Homogeneous)、单项式、多项式
  4. 前端学习(2399):关于编辑代码编辑器
  5. 目录与文件的相关操作
  6. navicat mysql 远程_Navicat for mysql 连接远程数据库
  7. python弱类型好处_JavaScript弱类型语言的优缺点有哪些
  8. Linux取消挂载,删除用户及其目录
  9. 剑指Offer(java版):字符串的排列
  10. 【转】字符串和浮点数格式化输出小结
  11. 【React Native 安卓开发】----(View实战之仿携程)【第三篇】
  12. 冒泡排序图解及代码实现
  13. PLSQL的快捷键以及使用技巧
  14. Android平台挖矿木马研究报告
  15. Apache和PHP环境打开php页面File Not Found问题
  16. 开源数据库迁移工具canal
  17. Cadence Allegro如何添加泪滴
  18. 树的递归与非递归遍历算法
  19. 关于Unity LitJson写入数据报错的问题
  20. C语言读取文件函数:fgets(); fgetc()

热门文章

  1. html制作网页时字体怎么设置,网页制作—字体的设置
  2. 孔子做人精要,看完启发很多
  3. 语音合成论文优选:Mixture Density Network for Phone-Level Prosody Modelling in Speech Synthesis
  4. linux 中eth,执行命令取出linux中eth0的IP地址
  5. 用U盘与移动硬盘制作WIN7启动盘(亲自实践)
  6. 关于mac m1 安装安卓模拟器
  7. 华南农业大学C语言程序设计(实验九)
  8. SXF-2021软测实习生笔试
  9. ubuntu20.04 合并两个磁盘
  10. java远程桌面_java – 实现远程桌面共享解决方案