600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C语言链表实现学生信息管理系统

C语言链表实现学生信息管理系统

时间:2021-12-24 09:20:24

相关推荐

C语言链表实现学生信息管理系统

大一做的这个程序,主要是链表的增删查改操作。很好理解,源码如下,可以直接运行

#include<stdio.h>#include<stdlib.h>#include<string>#define OK 1#define ERROR 0;#define OVERFLOW -2;/学生信息管理系统 /存入、查找、删除、修改、输出学生信息,学生信息包括姓名,性别,年龄,学号,电话; typedef struct LNode{int data; char name[10];char sex[10];int old;int id;int tel;struct LNode *next;}LNode,*LinkList; // 函数声明 LinkList creatlist();void disp(LinkList L);void search(LinkList L);void del(LinkList L);void choose();void menu();void input(LinkList L);void change(LinkList L);///主函数入口 int main(){choose();return 0;}//选择功能函数 嵌套菜单函数 void choose(){//struct LNode *L=NULL;LinkList L=NULL;int n;int a=1;while(a>0){menu();printf("请选择功能:");scanf("%d",&n);switch (n){case 1:L=creatlist();break;case 2:disp(L);break;case 3:search(L);break;case 4:del(L);break;case 5:input(L);break;case 6:change(L);break;default:a=-1;break;}}}//菜单函数 void menu(){printf("\n\n");printf("\t\t 欢迎使用学生信息管理系统\n");printf("\t\t1.创建学生信息\n");printf("\t\t2.输出学生信息\n");printf("\t\t3.查询学生信息\n");printf("\t\t4.删除学生信息\n");printf("\t\t5.插入学生信息\n");printf("\t\t6.修改学生信息\n");printf("\t\t7.退出\n");}///尾插法带头节点创建单链表 LinkList creatlist(){//int val;int n;LinkList L=(LinkList)malloc(sizeof(LNode));LinkList r=NULL;L->next=NULL;r=L;printf("请输入几个学生信息?");scanf("%d",&n);L->data=n;for(int i=0;i<n;i++){LinkList p=(LinkList)malloc(sizeof(LNode));//p->data=val;printf("第%d个学生的姓名:\n",i+1);scanf("%s",&p->name);printf("第%d个学生的性别:\n",i+1);scanf("%s",&p->sex);printf("第%d个学生的年龄:\n",i+1);scanf("%d",&p->old);printf("第%d个学生的学号:\n",i+1);scanf("%d",&p->id);printf("第%d个学生的电话:\n",i+1);scanf("%d",&p->tel);p->next=NULL;r->next=p;r=p;}return L;}输出函数 void disp(LinkList L){//LinkList p=L->next;LinkList p=NULL;p=L;if(p==NULL){printf("暂无数据!");}else{printf("共有%d个学生信息!\n",L->data);for(int i=0;i<L->data;i++){p=p->next;printf("姓名:%s\n",p->name);printf("性别:%s\n",p->sex); printf("年龄:%d\n",p->old);printf("学号:%d\n",p->id);printf("电话:%d\n",p->tel);printf("\n\n");}}}/查找 void search(LinkList L){int a;//LinkList p=L->next;LinkList p=L; printf("您要查找的学生学号是:\n");scanf("%d",&a);for(int i=0;i<L->data;i++){p=p->next;if(a==p->id){printf("查找成功!");printf("姓名:%s",p->name);printf("性别:%s\n",p->sex); printf("年龄:%d",p->old);printf("学号:%d",p->id);printf("电话:%d",p->tel);break;}else{printf("查无此人!");}}}/////删除函数 void del(LinkList L){int a;int j=1;int i; LinkList p=L;LinkList q=NULL;if(p==NULL){printf("暂无数据!");return;}if(p!=NULL){printf("删除学生的学号是:");scanf("%d",&a);for(i=1;i<L->data;i++){if(a==p->next->id){printf("查找成功!");q=p->next;p->next=q->next;delete q;printf("删除成功!");L->data=L->data-1;break;}else{printf("不存在该学生 请检查输入学号是否有误!"); }p=p->next;}}}/插入函数 void input(LinkList L){LinkList p=L;int i;int j;if(p==NULL){printf("您还未创建学生信息!");return;}else{printf("插入到第几个节点?");scanf("%d",&i);if(i>0&&i<=L->data){for(j=0;j<i-1;j++){p=p->next;}LinkList s=(LinkList)malloc(sizeof(LNode));printf("姓名:\n");scanf("%s",&p->name);printf("性别:\n"); scanf("%s",&p->sex);printf("年龄:\n");scanf("%d",&p->old);printf("学号:\n");scanf("%d",&p->id);printf("电话:\n");scanf("%d",&p->tel);s->next=p->next;p->next=s;L->data=L->data+1;} else printf("不存在的节点!");}} /修改函数 void change(LinkList L) {LinkList p=L;int i,j;int a; if(p==NULL){printf("你还未创建链表!"); return;}else{printf("您要修改的学生信息的学号是:"); scanf("%d",&a);for(i=0;i<L->data;i++){p=p->next;if(a==p->id){printf("查找成功!\n");printf("姓名修改为:\n");scanf("%s",&p->name);printf("性别修改为:\n");scanf("%s",&p->sex);printf("年龄修改为:\n");scanf("%d",&p->old);printf("学号修改为:\n");scanf("%d",&p->id);printf("修改成功\n");break;}else{printf("不存在的学生信息!请检查信息输入是否有误\n");}}} }

运行效果截图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。