这是我个人写的一个学生管理系统,这是我仅仅用来练手的代码,要知道链表可是你在面试过程中最大机率会考到的,我是陆续从单向链表入门,然后采用双向链表写的代码!如有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. Visual Studio Code 基本操作 - Windows 版

    1.Install the .NET SDK 2.Create app: dotnet new console -o myApp cd myApp 3.Run your app:dotnet run

  2. 【OCP-12c】2019年CUUG OCP 071考试题库(78题)

    78.View the exhibit and examine the structure of the CUSTOMERStable. Which two tasks would require s ...

  3. 【SSH学习笔记】用Struts2实现简单的用户登录

    准备阶段 在使用学习Struts2的时候首先要下载相应的架包 Struts2资源下载 这里建议下载第一个,在struts-2.5.14.1-all.zip里有很多实用的东西,不仅有架包还有官方为开发者 ...

  4. 为什么在AI领域网络安全更重要?先睹为快~

    AI迎来了改变世界的新机遇,同时也迎来了新的网络安全问题,只要是联网的系统就会有漏洞爆出~ 随着大数据的应用,人工智能逐渐走入千家万户并显示出巨大的市场空间,从机器人客服.自动驾驶汽车到无人机等,全都 ...

  5. AssertionError: View function mapping is overwriting an existing endpoint function: admin.main

    刚才给views.py文件添加了一个路由地址: @admin_view.route('/test', methods=["get", "post"]) @log ...

  6. 使用unordered_map提升查找效率

    在对网络数据包流(Flow)进行处理的时候,一开始为了简单使用了vector做为Flow信息的存储容器,当其中的元素达到几十万时,程序的执行速度让人无法忍受.已经对vector进行过合理的预先rese ...

  7. JavaScript变量那些事

    引言 JavaScript的变量本质是松散类型的,也就是说其变量就是用于保存特定值的一个名字,变量的值和数据类型可以在脚本执行的生命周期中发生变化.这是一个很有趣很强大的特性,但是也是一个极容易出错误 ...

  8. ORACLE 动态执行SQL语句

    本文转自 http://zhaisx.iteye.com/blog/856472 Oracle 动态SQL Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immedia ...

  9. ES6之新增set数据结构

    学习set set是ES6中的新增的数据结构,是一种构造函数,类似于数组,但是里面的元素都是唯一的,不重复的. 例如: const set = new Set(); [1,2,3,4,5,2,1,2, ...

  10. day3.python 学习之列表

    python中列表用[ ]表示, list =  [ ] #表示一个空列表 1.list = [ 'A','B','C',‘D’] print(list[0]) # 表示打印出列表中的第一个元素,列表 ...