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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#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->,&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->,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->,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->,&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");

相关文档
最新文档