当前位置:文档之家› 简单的学生信息管理系统(C语言)

简单的学生信息管理系统(C语言)

简单的学生信息管理系统(C语言)
简单的学生信息管理系统(C语言)

#include

#include //输入函数getch的头文件,不能用getchar,具体请查看两者的

区别

#include //申请空间的函数malloc的头文件

typedef struct

{ //定义结构体类型,包含四项内容,可以自由添加int num;

char name[10];

int age;

char sex[5];

}st;

typedef struct node //构造结点(也是结构体变量)

{

st data; //数据域

struct node *next; //指针域(指向结构体,也就是自身)

}list;

list *create() //建立一个单链表

{

list *p,*r,*head; //定义结构体指针变量

int i,n;

head = (list *)malloc(sizeof(list)); //申请头结点

r = head;

head->next = NULL; //头结点的指针域先定义为空

printf("请输入学生人数:\n");

scanf("%d",&n);

printf("请输入学生个人信息:\n\n学号,姓名,年龄,性别\n");

for(i=1;i<=n;i++)

{

p = (list *)malloc(sizeof(list)); //申请一个结点

scanf("%d%s%d%s",&p->data.num,&p->https://www.doczj.com/doc/9511957029.html,,&p->data.age,&p->data.sex); //向结点的数据域输入学生信息

p->next = NULL;

r->next = p; //将头结点指向第一个结点,以此类推。

r = r->next;

}

return (head); //返回头结点的地址

}

void output(list *h) // 输出链表中的学生信息

{

list *p;

p = h->next; //使p指向第一个结点

if(p == NULL)

printf("------------学生信息为空------------------\n\n");

while(p!=NULL)

{

printf("学号,姓名,年龄,性别分别是:\n");

printf("%d,%s,%d,%s\n",p->data.num,p->https://www.doczj.com/doc/9511957029.html,,p->data.age,p->data.sex);

p = p->next;

}

}

void research(list *h) //查找链表中某一位学生信息

{

list *p;

int k;

p = h->next; //使p指向第一个结点

printf("请输入要查找学生的学号:\n");

scanf("%d",&k);

while(p && p->data.num!=k)

p = p->next; //找到学号为k的结点,如果没有,则p为空if(p)

{

printf("学号,姓名,年龄,性别为:\n");

printf("%d,%s,%d,%s\n",p->data.num,p->https://www.doczj.com/doc/9511957029.html,,p->data.age,p->data.sex);

}

else

printf("找不到此学生:\n");

}

void insert(list *h) // 插入一个学生信息到链表中(插到链表末尾)

{

list *p,*q,*r;

p = h->next;

r = h;

q = (list *)malloc(sizeof(list)); //申请一个新结点

printf("请输入插入学生的学号,姓名,年龄,性别:\n");

scanf("%d%s%d%s",&q->data.num,&q->https://www.doczj.com/doc/9511957029.html,,&q->data.age,&q->data.sex);

q->next = NULL;

while(p!=NULL)

{

r = p;

p = p->next;

}

r->next = q;

}

void dele(list *h) // 在链表中删除某一位学生信息

{

int k;

list *p,*r;

r = h;

p = h->next;

printf("请输入要删除学生的学号:\n");

scanf("%d",&k);

while(p && p->data.num!=k)

{

r = p; //找到学号为k的结点,如果没有,则p为空

p = p->next;

}

if(p)

{

r->next = p->next;

p->next = NULL;

free(p);

printf("学生信息已删除!\n\n");

}

else

printf("找不到此学生\n\n");

}

int main()

{

int i,j=1;

list *p;

char c = 13; //13是回车键的ASCII值

printf("-------------------------------------------\n");

printf(" 学生信息管理系统 \n");

printf("-------------------------------------------\n");

while(c==13)

{

printf(" 1,登记学生信息\n");

printf(" 2,浏览学生信息\n");

printf(" 3,查找学生信息\n");

printf(" 4,插入学生信息\n");

printf(" 5,删除学生信息\n");

printf("-------------------------------------------\n");

printf("请输入你的选择:\n");

scanf("%d",&i);

switch(i)

{

case 1: p = create();break; //调用各函数,实现功能

case 2: output(p);break;

case 3: research(p);break;

case 4: insert(p);break;

case 5: dele(p); break;

}

printf("------------继续请敲回车!----------------\n");

c = getch();

}

return 0;

}

(注:文档可能无法思考全面,请浏览后下载,供参考。)

相关主题
文本预览
相关文档 最新文档