这是我个人写的一个学生管理系统,这是我仅仅用来练手的代码,要知道链表可是你在面试过程中最大机率会考到的,我是陆续从单向链表入门,然后采用双向链表写的代码!如有BUG,请指正,让我们
共同进步!
1 #include<stdio.h>
#include<malloc.h>
#include<string.h>
struct student
{
int id;
char name[];
int age;
int sex;
int class_num;
struct student *next;
struct student *pr;
};
typedef struct student link;
link *head;
int insert()
{
link *newnode;
newnode = (link *)malloc(sizeof(struct student));
link *temp_head = head;
printf("请输入学生ID:\n");
scanf("%d",&newnode->id);
printf("请输入学生姓名:\n");
scanf("%s",newnode->name);
printf("请输入学生年龄:\n");
scanf("%d",&newnode->age);
printf("请输入学生性别0(代表男 1代表女):\n");
scanf("%d",&newnode->sex);
if((newnode->sex == || newnode->sex == ) == )
{
printf("input is fail!\n");
scanf("%d",&newnode->sex);
}
printf("请输入学生的班级号码:\n");
scanf("%d",&newnode->class_num);
newnode->next = NULL;
newnode->pr = NULL;
if(temp_head->next == NULL)
{
temp_head->next = newnode;
newnode->pr = temp_head;
newnode->next = NULL;
return ;
}
int flag = ;
while(temp_head->next != NULL)
{
if(newnode->id < temp_head->next->id)
{
newnode->next = temp_head->next;
newnode->pr = temp_head;
temp_head->next = newnode;
newnode->next->pr = newnode;
flag = ;
break;
}
temp_head = temp_head->next;
}
if(flag == )
{
temp_head->next = newnode;
newnode->next = NULL;
newnode->pr = temp_head;
}
return ;
}
int input()
{
char num[];
scanf("%s",num);
if(strcmp(num,"insert") == )
{
return ;
}
else if(strcmp(num,"delete") == )
{
return ;
}
else if(strcmp(num,"display") == )
{
return ;
}
else if(strcmp(num,"exit") == )
{
return ;
}
else
{
return ;
}
}
int display(int id)
{
link *temp_head = head;
int flag = ;
if(temp_head->next == NULL)
{
printf("没有输入学生信息:\n");
return ;
}
while(temp_head != NULL)
{
if(temp_head->id == id)
{
printf("id = %d\n name = %s\n age = %d\n sex = %d\n class_num = %d\n",temp_head->id,temp_head->name,temp_head->age,temp_head->sex,temp_head->class_num);
flag = ;
break;
}
temp_head = temp_head->next;
}
if(flag == )
{
printf("查无此人!\n");
}
return ;
}
int delete(int id)
{
link *temp_head = head;
int flag;
if(temp_head->next == NULL)
{
printf("学生内容为空,无法删除\n");
return ;
}
while(temp_head != NULL)
{
if(temp_head->id == id)
{
if(temp_head->next == NULL)
{
temp_head->pr->next = NULL;
flag = ;
break;
}
else
{
temp_head->pr->next = temp_head->next;
temp_head->next->pr = temp_head->pr;
flag = ;
break;
}
}
temp_head = temp_head->next; }
if(flag == )
{
printf("删除成功!\n");
}
else
{
printf("删除失败!\n");
}
return ;
}
int main()
{
int pid;
int id;
int class_num;
head = (link *)malloc(sizeof(struct student));
head->next = NULL;
head->pr = NULL;
printf("/****************************\n");
printf("\t欢迎使用学生管理系统\n");
printf("\t输入insert添加学生信息\n");
printf("\t输入delete删除学生信息\n");
printf("\t输入display查看学生信息\n");
printf("\t输入exit退出程序\n");
printf("*************************/\n");
printf("请输入命令!\n");
pid = input();
while(pid != )
{
switch(pid)
{
case :
insert();
break;
case :
printf("请输入要删除的学生ID:\n");
scanf("%d",&id);
delete(id);
break;
case :
printf("请输入要显示的学生ID:\n");
scanf("%d",&id);
display(id);
break;
case :
printf("输入的命令有误,请重新输入:\n");
break;
case :
break;
}
printf("请输入命令!\n");
pid = input();
}
printf("该程序结束!\n");
return ;
}

学生信息管理系统(C语言版本)的更多相关文章

  1. 学生信息管理系统(c语言)

    ①注意: 程序中使用了sleep()函数.system()函数 关于 sleep() 函数 sleep() 函数的头文件和用法会因环境的不同而有所不同. 具体见-sleep()函数功能及用法 关于sy ...

  2. C语言练习-学生信息管理系统

    题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...

  3. 【转载】C语言综合实验1—学生信息管理系统

    http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...

  4. C语言小练习之学生信息管理系统

    C语言小练习之学生信息管理系统 main.c文件   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

  5. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  6. 学生信息管理系统(C语言)

    #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct student ...

  7. 基于数组或链表的学生信息管理系统(小学期C语言程序实训)

    1.基于数组的学生信息管理系统 实验内容: 编写并调试程序,实现学校各专业班级学生信息的管理.定义学生信息的结构体类型,包括:学号.姓名.专业.班级.3门成绩. 实验要求: (1) main函数:以菜 ...

  8. 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...

  9. 学生信息管理系统v1.0

    昨天一个教师朋友找到我,告诉我现在学期末他工作比较忙.需要统计处理很多学生信息,想让我帮他做一个管理系统.实现的功能就是把WPS表格转化成Word文档,将每一个学生的信息都能够分开,并且要根据名字找到 ...

  10. 【Python3.6+Django2.0+Xadmin2.0系列教程之二】学生信息管理系统(入门篇)

    上一篇我们已经创建好了一个Xadmin的基础项目,现在我们将在此基础上构建一个同样很基础的学生信息管理系统. 一.创建模型 模型是表示我们的数据库表或集合类,并且其中所述类的每个属性是表或集合的字段, ...

随机推荐

  1. Solr相似度算法三:DRFSimilarity框架介绍

    地址:http://terrier.org/docs/v3.5/dfr_description.html The Divergence from Randomness (DFR) paradigm i ...

  2. centos 下wps 与goland 不能输入中文的解决办法

    输入法:CentOS7自带ibus,如果你用的是fcitx请在对应的地方进行修改 系统:CentOS7,这个方案应该适用于大多数Linux发行版本 intelliJ goland中文输入法问题解决 首 ...

  3. 关于easyui展示慢的Debug

    同事开发的软件系统采用Easyui做的前台界面,当业务变得比较复杂之后,展示效果就变得很慢,于是我开始了原因的排查,现在已经找到了具体的原因,所以拿出来与大家一起分享调试过程. 既然调试的是前端,那么 ...

  4. RoadFlow ASP.NET Core工作流引擎IIS部署

    RoadFlow最新版本采用ASP.NET CORE2.1开发,部署步骤和.NET CORE部署一样,具体可参数ASP.NET CORE的部署方式. 1. 获取代码 首先从RoadFlow官网下载最新 ...

  5. util.Date转化成sql.date格式

    https://www.cnblogs.com/zhaotiancheng/p/6413067.html

  6. bzoj 2244 [SDOI2011]拦截导弹(dp+CDQ+树状数组)

    传送门 题解 看了半天完全没发现这东西和CDQ有什么关系…… 先把原序列翻转,求起来方便 然后把每一个位置表示成$(a,b,c)$其中$a$表示位置,$b$表示高度,$c$表示速度,求有多少个位置$a ...

  7. AsyncTask的工作原理

    AsyncTask是Android本身提供的一种轻量级的异步任务类.它可以在线程池中执行后台任务,然后把执行的进度和最终的结果传递给主线程更新UI.实际上,AsyncTask内部是封装了Thread和 ...

  8. PHP性能优化四(业务逻辑中使用场景)

    php脚本性能,很多时候依赖于你的php版本.你的web server环境和你的代码的复杂度. Hoare曾经说过“过早优化是一切不幸的根源”.当你想要让你的网站更快运转的时候,你才应该去做优化的事情 ...

  9. [JS] 瀑布流加载

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  10. Express-及中间件的简单理解

    Express Express 是一个基于node平台,保持最小规模的灵活的 Node.js Web 应用程序开发框架,在Node.js基础上扩展对了web应用开发所需要的基础功能为 Web 和移动应 ...