简单的学生信息管理系统(C语言)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
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");