学生管理系统

来源:互联网 发布:c语言编译器用什么编 编辑:程序博客网 时间:2024/05/22 10:55
有10个学生,每个学生的数据包括学号、姓名、性别和1门课成绩,编写如下函数:
①根据学生的信息建立链表;
②输出链表;
③输入一个学生的学号,查找链表中是否有该学生;
④在第i个学生前插入一个学生信息;

⑤删除链表中第i个学生。

#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct student{int num;char name[20];char sex;int score;struct student *next;}Student;Student *build(Student *head){Student *cur,*temp;int i,n;printf("输入几个学生信息:");scanf("%d",&n);for(i=0;i<n;i++){temp=(Student *)malloc(sizeof(Student));if(temp){printf("请输入学号:");scanf("%d",&temp->num);printf("请输入姓名:");getchar();gets(temp->name);printf("请输入性别:");//getchar();scanf("%c",&temp->sex);printf("请输入成绩:");scanf("%d",&temp->score);temp->next=NULL;if(i==0)head=cur=temp;else{cur->next=temp;cur=cur->next;}}}return head;}void show(Student *head){Student *cur;cur=head;while(cur!=NULL){printf("%5d\t",cur->num);printf("%10s\t",cur->name);printf("%5c\t",cur->sex);printf("%5d\n",cur->score);cur=cur->next;}}void seeknum(Student *head){Student *cur;cur=head;int num;printf("请输入要查找的学号:");scanf("%d",&num);while(cur!=NULL){if(cur->num==num)break;cur=cur->next;}if(cur!=NULL){printf("%5d\t",cur->num);printf("%10s\t",cur->name);printf("%5c\t",cur->sex);printf("%5d\n",cur->score);}elseprintf("未查到该同学信息.\n");}void seekname(Student *head){char name[20];Student *cur;cur=head;printf("请输入要查找的学生姓名:");scanf("%s",name);while(cur!=NULL){if(strcmp(cur->name,name)==0)break;cur=cur->next;}if(cur!=NULL){printf("%5d\t",cur->num);printf("%10s\t",cur->name);printf("%5c\t",cur->sex);printf("%5d\n",cur->score);}elseprintf("未查到该同学信息.\n");}void seek(Student *head){int n;while(1){printf("================\n");printf("1. 按学号查找\n");printf("2. 按姓名查找\n");printf("3. 结束查找\n");scanf("%d",&n);switch(n){case 1:{seeknum(head);break;}case 2:{seekname(head);break;}case 3:return;}}}void insert(Student *head){int i;int n;Student *cur,*temp;cur=head;printf("请输入插入到第几个同学前面:");scanf("%d",&n);temp=(Student *)malloc(sizeof(Student));if(temp){printf("请输入学号:");scanf("%d",&temp->num);printf("请输入姓名:");getchar();gets(temp->name);printf("请输入性别:");//getchar();scanf("%c",&temp->sex);printf("请输入成绩:");scanf("%d",&temp->score);temp->next=NULL;}if(n==1){temp->next=head;head=temp;}else{for(i=0;i<n-2;i++)cur=cur->next;temp->next=cur->next;cur->next=temp;}}void del(Student *head){Student *cur,*temp;int i;int n;cur=head;printf("请输入要删除第几个学生:");scanf("%d",&n);for(i=0;i<n-2;i++)cur=cur->next;if(n==0){temp=head;head=head->next;}else{temp=cur->next;cur->next=temp->next;}free(temp);}int main(){int n;Student *head=NULL;while(1){printf("\t===================\n");printf("\t1. 建立链表\n");printf("\t2. 显示\n");printf("\t3. 查找\n");printf("\t4. 插入\n");printf("\t5. 删除\n");printf("\t6. 退出\n");scanf("%d",&n);switch(n){case 1:head=build(head);break;case 2:show(head);break;case 3:seek(head);break;case 4:insert(head);break;case 5:del(head);break;case 6:return 0;}}return 0;}


0 0
原创粉丝点击