正文
学生信息管理系统(C语言版本)
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
这是我个人写的一个学生管理系统,这是我仅仅用来练手的代码,要知道链表可是你在面试过程中最大机率会考到的,我是陆续从单向链表入门,然后采用双向链表写的代码!如有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 ;
}