2019独角兽企业重金招聘Python工程师标准>>>

/**程序*/
//********学员管理
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include "he.c"
typedef struct STU{int num;//学号char name[20];//姓名double score;//分数struct STU *next;
}node,*linklist;
int  node_count=0;
int getlen(linklist head)
{node *p;int count=0;p=head->next;while(p!=NULL){count++;p=p->next;}return count;
}int menu()
{int select;printf("1,录入学员信息\n");printf("2,显示学员信息\n");printf("3,修改学员信息\n");printf("4,删除学员信息\n");printf("5, 排序\n");printf("6,退出\n");printf("请输入你的选择:");scanf("%d",&select);return select;
}int menu2()
{int select;printf("请输入查找依据\n");printf("1,按编号查找\n");printf("2,按姓名查找\n");printf("3,按学号查找\n");printf("4,返回上级菜单\n");printf("请输入你的选择:");scanf("%d",&select);return select;
}int menu3()
{int select;printf("1,按姓名排序\n");printf("2,按学号排序\n");printf("3,按分值排序\n");printf("4, 返回上级菜单\n");printf("请输入你的选择:");scanf("%d",&select);return select;
}void input(node *p)
{printf("\n");printf("请输入学员学号\n");scanf("%d",&p->num);//fflush(stdin);//清空输入缓冲区,清除多余的换行符printf("请输入学员姓名\n");scanf("%s",p->name);printf("请输入学员分数\n");scanf("%lf",&p->score);
}void output(node *p)
{printf("--------------------------------\n");printf("姓名:%s\n",p->name);printf("学号:%d\n",p->num);printf("成绩:%f\n",p->score);printf("--------------------------------\n");
}void initiallist(linklist *p)
{(*p)=(node *)malloc(sizeof(node));(*p)->next=NULL;
}int mod(linklist L,int i)
{node *p;int j;if(i<1||i>getlen(L)){printf("输入信息非法!\n");return 0;}p=L->next;for(j=1;j<i;j++){p=p->next;}printf("请输入第%d同学的更改信息",i);input(p);return 1;
}int inputlist(linklist L)
{node *p,*q;int j;//static int  node_count=0;node_count++;printf("请输入第%d个学生的信息\n",node_count);p=L;for(j=1;j<node_count;j++){p=p->next;}q=(node *)malloc(sizeof(node));p->next=q;p=q;input(p);p->next=NULL;return 0;
}int del(linklist L,int i)
{node *p,*q;int j;if(i<1||i>getlen(L)){printf("输入不合法\n");return 0;}p=L;q=L->next;for(j=1;j<i;j++){p=q;q=q->next;    /*p->next=q->next;   p=q;q=q->next;*/}p->next=q->next;free(q);   /*p->next=NULL;free(p);*/node_count--;return 1;
}int outputlist(linklist L)
{int count=1;while(L->next!=NULL){L=L->next;printf("**************第%d个学生********\n",count);output(L);count++;}return 0;
}node *SearchBySerial(linklist L,int num)
{int    j=1;node *p;p=L;if(num<1||(getlen(L)<num)){printf("输入越界!");return NULL;}while(p->next!=NULL&&j<=num){p=p->next;j++;}return p;
}
node *SearchByName(linklist L,char *name[])
{node *p;p=L->next;while(p!=NULL&&strcmp(name,p->name)!=0){p=p->next;}return p;
}node *SearchByID(linklist L,int stuID)
{int    j=1;node *p;p=L->next;while(p!=NULL&&stuID!=p->num){p=p->next;j++;}return p;
}

/*------------------------------------------------------------------------------这是我的代码*------------------------------------------------------------------------------*/
int bubblesort(linklist L)
{int len,i,j;node *tmp,*pf,*p,*tail=NULL;len=getlen(L);/*pf=L;p=pf->next;*/for(i=0;i<len-1;i++){   pf=L;p=pf->next;for(j=1;j<len-i;j++){if(strcmp(p->name,p->next->name)==1){pf->next=p->next;p->next=pf->next->next;pf->next->next=p;p=pf->next;/* 也可以这一段 *//*pf->next=p->next;tmp=p->next->next;p->next->next=p;p->next=tmp;p=pf->next;*/}pf=pf->next;p=p->next;}}
}int main()
{linklist head;int choose=0,choose1=0,choose3=0,del_i,j=0;int num,stuID;char name[20];initiallist(&head);while(choose != 6){choose=menu();switch(choose){case 1:{ inputlist(head);}break;case 2:{outputlist(head);}break;case 3:choose1=0;while(choose1!=4){choose1=menu2();j=0;switch(choose1){case 1:{printf("请输入要查找的编号:");scanf("%d",&num);if(SearchBySerial(head,num)!=NULL){printf("------------根据编号查找,找到,请修改--------------\n");output(SearchBySerial(head,num));mod(head,num);}elseprintf("按编号未找到!\n");}break;case 2:{printf("请输入要查找的姓名:");scanf("%s",name);if(SearchByName(head,name)!=NULL){printf("------------根据姓名查找,找到,请修改--------------\n");output(SearchByName(head,name));input(SearchByName(head,name));}elseprintf("按姓名未找到!\n");}break;case 3:{printf("请输入要查找的学号:");scanf("%d",&stuID);if(SearchByID(head,stuID)!=NULL){printf("------------根据学号查找,找到,请修改--------------\n");output(SearchByID(head,stuID));input(SearchByID(head,stuID));}elseprintf("按姓名未找到!\n");}break;default:break;}}break;case 4:{printf("输入要删除的学生的编号\n");scanf("%d",&del_i);del(head,del_i);}case 5:{choose3=0;while(choose3!=4){choose3=menu3();j=0;bubblesort(head);}}break;//......default:break;}}
}

转载于:https://my.oschina.net/libowen/blog/91311

无空头的链表代码:学生管理系统相关推荐

  1. java用链表做学生系统_C语言链表实现学生管理系统

    本文实例为大家分享了C语言链表实现学生管理系统的具体代码,供大家参考,具体内容如下 #include #include #include #include #include #include usin ...

  2. C语言基于链表的学生管理系统,超详细

    基于链表的学生管理系统 基于链表的学生管理系统 前言 功能 整体思路 Function.h Function.cpp 主文件StudentManageSystem.cpp 各函数详细说明 保存 读取 ...

  3. C语言 链表实现学生管理系统(含文件读写操作)

    主程序: #define _CRT_SECURE_NO_WARNINGS//跳过安全警告 #include "nodes.h"int main() {C* class0 = Cla ...

  4. 学生管理系统(链表)

    文章目录 前言 一.具体过程 1.引入头文件contact.h 2.创建test.c 3.创建contact.c 二.写在最后 前言 链表的学生管理系统相比之前更高效,同样有内存的扩充,也补充了文件操 ...

  5. 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号

    C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业.  性别.年龄.   电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...

  6. 学生管理系统(大数据实验室)

    利用链表实现学生管理系统的增删改查 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...

  7. 学生考勤日期链表排序c语言,【C项目】 文件,结构体,链表,排序, 学生信息管理系统(示例代码)...

    1.密码登录: 2.通过键盘输入学生信息,包括学生学号.姓名.成绩: 3.将输入的信息保存到指定文件中: 4.从文件中读取学生信息: 5.显示全部学生信息: 6.按学生总分进行降序排序: 7.删除学生 ...

  8. 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 ...

  9. 用链表c语言程序设计,C语言程序设计-基于链表的学生成绩管理系统

    <C语言程序设计-基于链表的学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计-基于链表的学生成绩管理系统(18页珍藏版)>请在人人文库网上搜索. 1.华北科技 ...

最新文章

  1. linux内核编译感想,Linux内核编译小结
  2. mask rcnn算法分析_在modelarts上部署mask-rcnn模型
  3. Segment fault及LINUX core dump详解
  4. 助力苏州、星火相传,广苏两地微软技术俱乐部交流纪实
  5. js组装知识(待续……)
  6. Golang Java 实现 【将有序数组装换为二叉搜索树】
  7. 计算机培训三下乡实践报告,暑期“三下乡”社会实践心得体会范文
  8. Spring自定义属性编辑器及原理解释.md
  9. linux下包管理工具apt-get
  10. XCVU9P收发卡设计资料原理图第612篇:基于XCVU9P的32路光纤PCIeX16收发卡
  11. mysql查询下个月过生日的说说_查询优化:说说一个数据库的查询方法
  12. python注释快捷_python注释快捷键
  13. springboot+老年康复中心信息管理系统 毕业设计-附源码250859
  14. 网络爬虫判断页面是否更新
  15. 手机与电脑局域网内数据互通
  16. 如何刷机:iphone8锁屏密码错误多次,手机停用,连接iTunes,磁盘已满,双重认证弊端!
  17. MySQL——超详细数据库触发器教程
  18. [2013.7.5新鲜出炉] Ubuntu12.04下载Android4.0.1源码全过程----------------折腾两天,终于下好,附若干问题解决
  19. Sql server索引优化
  20. PostgreSQL performance test use ssh tunnel

热门文章

  1. numpy 是否为零_一文看懂Numpy统计计算、数组比较
  2. 病案编码员需要计算机的什么知识,如何成为一名优秀的病案编码员?
  3. 余弦信号频谱表达式_2019年清华828信号与系统试题回忆
  4. switch中case后可以是表达式吗_自学C++基础教程【流程控制语句】(switch语句 )...
  5. (5) nginx:location
  6. 世界上第一个程序员竟然是女性,难以置信......
  7. Nmap经常使用的场景用法
  8. 《程序员面试金典》最大连续数列和
  9. jquery.dataTable.js 绘制表格使用详解
  10. 数据挖掘之关联分析六(子图模式)