《简单的学生信息管理系统(C语言).doc》由会员分享,可在线阅读,更多相关《简单的学生信息管理系统(C语言).doc(6页珍藏版)》请在金锄头文库上搜索。
1、#include#include /输入函数getch的头文件,不能用getchar,具体请查看两者的区别#include /申请空间的函数malloc的头文件typedef struct /定义结构体类型,包含四项内容,可以自由添加int num;char name10;int age;char sex5;st;typedef struct node /构造结点 (也是结构体变量)st data; /数据域struct node *next; /指针域(指向结构体,也就是自身)list; list *create() /建立一个单链表list *p,*r,*head; /定义结构体指针变量i
2、nt i,n;head = (list *)malloc(sizeof(list); /申请头结点r = head;head-next = NULL; /头结点的指针域先定义为空printf(请输入学生人数:n);scanf(%d,&n);printf(请输入学生个人信息:nn学号,姓名,年龄,性别n);for(i=1;i,&p-,&p-,&p-; /向结点的数据域输入学生信息p-next = NULL;r-next = p; /将头结点指向第一个结点,以此类推。r = r-next;return (head); /返回头结点的地址void output(list *h) / 输出链表中的学生
3、信息list *p;p = h-next; /使p指向第一个结点if(p = NULL) printf(-学生信息为空-nn);while(p!=NULL)printf(学号,姓名,年龄,性别分别是:n);printf(%d,%s,%d,%sn,p-,p-,p-,p-;p = p-next;void research(list *h) /查找链表中某一位学生信息list *p; int k;p = h-next; /使p指向第一个结点printf(请输入要查找学生的学号:n);scanf(%d,&k);while(p & p-!=k)p = p-next; /找到学号为k的结点,如果没有,则p
4、为空if(p)printf(学号,姓名,年龄,性别为:n);printf(%d,%s,%d,%sn,p-,p-,p-,p-;elseprintf(找不到此学生: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-,&q-,&q-,&q-;q-next = NULL;while(p!=NULL)r = p;p = p-
5、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-!=k)r = p; /找到学号为k的结点,如果没有,则p为空p = p-next;if(p)r-next = p-next;p-next = NULL;free(p);printf(学生信息已删除!nn);elseprintf(找不到此学生nn);int main()int i,j=1;list *p;char c = 13; /13
6、是回车键的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;