C语言链表实现考试报名管理系统

编程入门 行业动态 更新时间:2024-10-05 11:27:05

C语言链表实现考试报名<a href=https://www.elefans.com/category/jswz/34/1769858.html style=管理系统"/>

C语言链表实现考试报名管理系统

完整版

//源码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>//定义一个考生结构体
typedef struct student
{char name[40];char no[18];int xb;int age;char tele[20];struct student *next;
}STU;//函数声明放在这里
STU *LIstInit(STU *L);
STU *ListCreate(STU *L, int n);
void ListInsert(STU *L);
void ListDelete(STU *L);
void LIstSearch(STU *L);
void Input(STU *p,int i);
void Output(STU *L);
void PrintFile(STU *L);
void Menu();//创建表头,初始化链表
STU *LIstInit(STU *L)
{STU *head=NULL;head=(STU *)malloc(sizeof(STU));head->next=NULL;L = head;return L;
}//创建链表,将新生成的节点插入到链表的表头
STU *ListCreate(STU *L, int n)
{int i; for (i = 0; i<n; i++){STU *p;//将新生成的节点插入到链表中p=NULL;p = (STU *)malloc(sizeof(STU));Input(p,i);p->next = L->next;L->next = p;}return L;
}//对链表进行节点的插入操作
void ListInsert(STU *L)
{STU *s = NULL;//生成一个新节点ss = (STU *)malloc(sizeof(STU));printf("请输入您要插入的考生的姓名:");scanf("%s",s->name);printf("请输入您要插入的考生的身份证号:");scanf("%s",s->no);printf("请输入您要插入的考生的性别(女性为0,男性为1):");scanf("%d",&s->xb);printf("请输入您要插入的考生的年龄:");scanf("%d",&s->age);printf("请输入您要插入的考生的电话号码:");scanf("%s",s->tele);s->next = L->next;L->next = s;
}//对链表的进行节点的删除操作
void ListDelete(STU *L)
{char n[40];STU *p=L->next,*pre=L;  //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点if(p==NULL)printf("数据为空,无法删除!");else{printf("请输入您要删除的考生姓名:");scanf("%s",n);while(strcmp(p->name,n)!=0){pre=p;p=pre->next;if(p==NULL){printf("没有找到相关信息,无法删除\n");return;}}pre->next=p->next;free(p);printf("删除成功");}
}void LIstSearch(STU *L)
{char n[40];STU *p=L->next;if (p == NULL)printf("数据为空,无法查找!");else{printf("请输入您要查找的考生姓名:");scanf("%s",n);while (strcmp(p->name, n) != 0){p = p->next;if (p == NULL){printf("没有找到相关信息\n");return;}}printf("该考生的信息如下:\n");printf("%s\t",p->name);printf("\t%s",p->no);printf("\t%d",p->xb);printf("\t%d",p->age);printf("\t%s",p->tele);printf("\n");}
}void ListModify(STU *L)
{int x,a,item;char nam[40],no[18],tel[20],n[40];STU *p=L->next;if (p == NULL)printf("数据为空,无法修改!");else{printf("请输入您要修改的考生姓名:");scanf("%s",n);while(strcmp(p->name, n) != 0){p = p->next;if (p == NULL)printf("没有找到相关信息\n");}printf("请选择您要修改的考生信息类型:\n");printf("1、姓名\n2、身份证号\n3、性别\n4、年龄\n5、电话号码\n");scanf("%d",&item);switch(item){case 1:printf("请输入您修改后的姓名:");scanf("%s",nam);strcpy(p->name,nam);break;case 2:printf("请输入您修改后的身份证号:");scanf("%s",no);strcpy(p->no,no);break;case 3:printf("请输入您修改后的性别:");scanf("%d",&x);p->xb=x;break;case 4:printf("请输入您修改后的年龄:");scanf("%d",&a);p->age=a;break;case 5:printf("请输入您修改后的电话号码:");scanf("%s",tel);strcpy(p->tele,tel);break;}printf("修改成功!");}
}void Input(STU *p,int i)
{printf("请输入第%d名考生的姓名:",i+1);scanf("%s",p->name);printf("请输入第%d名考生的身份证号:",i+1);scanf("%s",p->no);printf("请输入第%d名考生的性别(女性为0,男性为1):",i+1);scanf("%d",&p->xb);printf("请输入第%d名考生的年龄:",i+1);scanf("%d",&p->age);printf("请输入第%d名考生的电话号码:",i+1);scanf("%s",p->tele);
}void Output(STU *L)
{STU *p=L->next;while(p!=NULL){printf("%s\t",p->name);printf("\t%s",p->no);printf("\t%d",p->xb);printf("\t%d",p->age);printf("\t%s",p->tele);printf("\n");p=p->next;}
}void PrintFile(STU *L)
{STU *p=L->next;FILE *fp;fp=fopen("student.txt","w");fprintf(fp,"姓名\t\t身份证号\t\t性别\t年龄\t电话号码\n");while(p!=NULL){fprintf(fp,"%s\t",p->name);fprintf(fp,"\t%s",p->no);fprintf(fp,"\t%d",p->xb);fprintf(fp,"\t%d",p->age);fprintf(fp,"\t%s",p->tele);fprintf(fp,"\n");p=p->next;}fclose(fp);
}void Menu()
{printf("\n\n");printf("\t\t\t===================考试报名管理系统==================\n");printf("\t\t\t*                                                   *\n");printf("\t\t\t*          1>. 录入考生信息                         *\n");printf("\t\t\t*          2>. 全部考生信息                         *\n");printf("\t\t\t*          3>. 查看考生信息                         *\n");printf("\t\t\t*          4>. 修改考生信息                         *\n");printf("\t\t\t*          5>. 删除考生信息                         *\n");printf("\t\t\t*          6>. 插入考生信息                         *\n");printf("\t\t\t*          7>. 读取考生信息                         *\n");printf("\t\t\t*          8>. 保存考生信息                         *\n");printf("\t\t\t*          0>. 退出管理系统                         *\n");printf("\t\t\t*                                    欢迎使用本系统!*\n");printf("\t\t\t=====================================================\n");printf("\t\t\t输入选项,按回车进入选项:                             \n");
}int main()
{int item,n;         //item用于接收输入的命令,n用于接收输入的考生人数char nam[30];         STU *L=NULL;L=LIstInit(L);do{ Menu();printf("请输入相应的数字,进行相应的操作:\n");scanf("%d",&item);system("cls");switch(item){case 1:printf("请输入您要录入的考生人数:");scanf("%d",&n);L=ListCreate(L,n);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 2:printf("全部考生信息如下:\n");printf("姓名\t\t身份证号\t\t性别\t年龄\t电话号码\n");Output(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 3:LIstSearch(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;                                             case 4:ListModify(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 5:ListDelete(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 6:ListInsert(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 7:printf("功能完善中!");getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");case 8:PrintFile(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 0:printf("即将退出考生信息管理系统.....");exit(0);default:printf("您输入的命令有误,请重新输入");}printf("\n\n\n\n");}while(item);return 0;
}

//主界面截图

阉割版

为了完成课程设计作业

#include<stdio.h>
#include<stdlib.h>
#include<string.h>//定义一个考生结构体
typedef struct student
{char name[40];char no[18];int xb;int age;char tele[20];struct student *next;
}STU;//函数声明放在这里
void ListCreate(STU *L, int n);     //创建考生链表节点
void LIstSearch(STU *L);            //查找考生信息
void ListModify(STU *L);            //修改考生信息
void ListInsert(STU *L);            //插入考生信息
void ListDelete(STU *L);            //删除考生信息
void Input(STU *p,int i);           //输入考生信息
void Menu();                        //考试报名管理系统的菜单//考生报名管理系统的主函数入口
int main()
{int item,n;                       //item用于接收输入的命令,n用于接收输入的考生人数      STU *L=NULL;                        //初始化一个头节点L=(STU *)malloc(sizeof(STU));       //为头节点开辟内存空间L->next=NULL;                       //将头节点的指针域置空4do{  Menu();                         //菜单printf("请输入相应的数字,进行相应的操作:\n");scanf("%d",&item);system("cls");switch(item){case 1:printf("请输入您要录入的考生人数:");scanf("%d",&n);ListCreate(L,n);                      //创建考生链表节点getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 2:LIstSearch(L);                        //查找考生信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;                                             case 3:ListModify(L);                          //修改考生信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 4:ListDelete(L);                          //删除考生信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 5:ListInsert(L);                          //插入考生信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 0:                                     //退出考试报名管理系统printf("即将退出考生信息管理系统.....");exit(0);default:printf("您输入的指令不正确,请重新输入");}printf("\n\n");}while(item);return 0;
}//创建链表,将新生成的节点插入到链表的表头
void ListCreate(STU *L, int n)
{int i; for (i = 0; i<n; i++){STU *p;//将新生成的节点插入到链表中p=NULL;p = (STU *)malloc(sizeof(STU));Input(p,i);p->next = L->next;L->next = p;}
}//查找考生信息
void LIstSearch(STU *L)
{char n[40];STU *p=L->next;if (p == NULL)printf("数据为空,无法查找!");else{printf("请输入您要查找的考生姓名:");scanf("%s",n);while (strcmp(p->name, n) != 0){p = p->next;if (p == NULL){printf("没有找到相关信息\n");return;}}printf("该考生的相关信息如下:\n");printf("姓名\t身份证号\t\t性别\t年龄\t电话号码\n");printf("%s\t",p->name);printf("%s",p->no);printf("\t%d",p->xb);printf("\t%d",p->age);printf("\t%s",p->tele);printf("\n");}
}//修改考生信息
void ListModify(STU *L)
{int x,a,item;char nam[40],no[18],tel[20],n[40];STU *p=L->next;if (p == NULL)printf("数据为空,无法修改!");else{printf("请输入您要修改的考生姓名:");scanf("%s",n);while(strcmp(p->name, n) != 0){p = p->next;if (p == NULL){printf("没有找到相关信息\n");return;}}printf("请选择您要修改的考生信息类型:\n");printf("1:姓名\t 2:身份证号\t 3:性别\t 4:年龄\t 5:电话号码\n");scanf("%d",&item);switch(item){case 1:printf("请输入您修改后的姓名:");scanf("%s",nam);strcpy(p->name,nam);break;case 2:printf("请输入您修改后的身份证号:");scanf("%s",no);strcpy(p->no,no);break;case 3:printf("请输入您修改后的性别:");scanf("%d",&x);p->xb=x;break;case 4:printf("请输入您修改后的年龄:");scanf("%d",&a);p->age=a;break;case 5:printf("请输入您修改后的电话号码:");scanf("%s",tel);strcpy(p->tele,tel);break;default:printf("您输入的指令不正确!\n");}printf("修改成功!");}
}//删除考生信息
void ListDelete(STU *L)
{char n[40];STU *p=L->next,*pre=L;  //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点if(p==NULL)printf("数据为空,无法删除!");else{printf("请输入您要删除的考生姓名:");scanf("%s",n);while(strcmp(p->name,n)!=0){pre=p;p=pre->next;if(p==NULL){printf("没有找到相关信息,无法删除\n");return;}}pre->next=p->next;free(p);printf("删除成功");}
}//插入考生信息
void ListInsert(STU *L)
{STU *s = NULL;              //生成一个新节点ss = (STU *)malloc(sizeof(STU));printf("请输入您要插入的考生的姓名:");scanf("%s",s->name);printf("请输入您要插入的考生的身份证号:");scanf("%s",s->no);printf("请输入您要插入的考生的性别(女性为0,男性为1):");scanf("%d",&s->xb);printf("请输入您要插入的考生的年龄:");scanf("%d",&s->age);printf("请输入您要插入的考生的电话号码:");scanf("%s",s->tele);s->next = L->next;L->next = s;
}//输入考生信息
void Input(STU *p,int i)
{printf("请输入第%d名考生的姓名:",i+1);scanf("%s",p->name);printf("请输入第%d名考生的18位身份证号:",i+1);scanf("%s",p->no);printf("请输入第%d名考生的性别(女性为0,男性为1):",i+1);scanf("%d",&p->xb);printf("请输入第%d名考生的年龄:",i+1);scanf("%d",&p->age);printf("请输入第%d名考生的11位电话号码:",i+1);scanf("%s",p->tele);
}//考生信息管理系统的菜单
void Menu()
{printf("\n\n");printf("\t\t\t===================考试报名管理系统==================\n");printf("\t\t\t*                                                   *\n");printf("\t\t\t*          1>. 录入考生信息                         *\n");printf("\t\t\t*          2>. 查找考生信息                         *\n");printf("\t\t\t*          3>. 修改考生信息                         *\n");printf("\t\t\t*          4>. 删除考生信息                         *\n");printf("\t\t\t*          5>. 插入考生信息                         *\n");printf("\t\t\t*          0>. 退出管理系统                         *\n");printf("\t\t\t*                                    欢迎使用本系统!*\n");printf("\t\t\t=====================================================\n");printf("\t\t\t输入选项,按回车进入选项:                             \n");
}

//主界面截图

完整版包括了考试信息保存,输出全部信息等功能,是最初设计的时候方便调试加的,阉割版是为了课程设计修改的,很多功能做了阉割。

更多推荐

C语言链表实现考试报名管理系统

本文发布于:2024-02-07 05:45:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753277.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:管理系统   考试报名   链表   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!