C语言中怎么使用链表实现学生籍贯管理系统
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要讲解了"C语言中怎么使用链表实现学生籍贯管理系统",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言中怎么使用链表实现学生籍贯管理系统"吧
千家信息网最后更新 2026年11月04日C语言中怎么使用链表实现学生籍贯管理系统
这篇文章主要讲解了"C语言中怎么使用链表实现学生籍贯管理系统",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言中怎么使用链表实现学生籍贯管理系统"吧!
源码
#include#include #include //定义一个学生结构体typedef struct student{ char no[12]; //学号 char name[40]; //姓名 char tele[20]; //电话号码 int D[18]; //电话号码码 char jg[60]; //籍贯 char addr[80]; //通讯地址 struct student* next; //指向下一节点的指针}STU;//函数声明放在这里STU* LIstInit(STU* L);STU* ListCreate(STU* L, int n);void ListInsert(STU* L);void ListDelete(STU* L, char n[40]);void LIstSearch(STU* L, char n[]);void input(STU* p, int i);void output(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; //生成一个新节点s s = (STU*)malloc(sizeof(STU)); printf("请输入您要插入的学生的学号:"); scanf("%s", &s->no); printf("请输入您要插入的学生的姓名:"); scanf("%s", &s->name); printf("请输入您要插入的学生的电话号码:"); scanf("%s", &s->tele); printf("请输入您要插入的学生的身份证号码:"); scanf("%s", &s->D); printf("请输入您要插入的学生的籍贯:"); scanf("%s", &s->jg); printf("请输入您要插入的学生的通讯地址:"); scanf("%s", &s->addr); s->next = L->next; L->next = s;}//对链表的进行节点的删除操作void ListDelete(STU* L, char n[]){ STU* p = L->next, * pre = L; //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点 if (p == NULL) printf("数据为空,无法删除!"); else { 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[]){ STU* p = L->next; if (p == NULL) printf("数据为空,无法查找!"); else { while (strcmp(p->name, n) != 0) { p = p->next; if (p == NULL) { printf("没有找到相关信息\n"); return; } } printf("该学生的籍贯为:\n"); printf("\t%s\n", p->jg); }}void ListModify(STU* L, char na[]){ char JG[60]; STU* p = L->next; while (p != NULL) { if (strcmp(p->name, na) == 0) { printf("请选择您修改后的学生籍贯:\n"); scanf("%s", &JG); strcpy(p->jg, JG); break; } p = p->next; }}void input(STU* p, int i){ printf("请输入第%d名学生的学号:", i + 1); scanf("%s", &p->no); printf("请输入第%d名学生的姓名:", i + 1); scanf("%s", &p->name); printf("请输入第%d名学生的电话号码:", i + 1); scanf("%s", &p->tele); printf("请输入第%d名学生的身份证号码:", i + 1); scanf("%s", &p->D); printf("请输入第%d名学生的籍贯:", i + 1); scanf("%s", &p->jg); printf("请输入第%d名学生的通讯地址:", i + 1); scanf("%s", &p->addr);}void output(STU* L){ STU* p = L->next; while (p != NULL) { printf("%s\t", p->no); printf("%s\t", p->name); printf("\t%s", p->tele); printf("\t\t%s", p->D); printf("\t%s", p->jg); printf("\t%s", p->addr); 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身份证号码\t\t籍贯\t\t通讯地址\n"); while (p != NULL) { fprintf(fp, "%s\t", p->no); fprintf(fp, "%s\t", p->name); fprintf(fp, "\t%s", p->tele); fprintf(fp, "\t%s", p->D); fprintf(fp, "\t%s", p->jg); fprintf(fp, "\t\t%s", p->addr); fprintf(fp, "\n"); p = p->next; } printf("保存成功,请到当前目录下的student.txt文件中查看"); fclose(fp);}void menu(){ printf("\n\n"); printf("\t\t\t===================学试报名管理系统===================\n"); printf("\t\t\t* 作者:XXX 班级:XXXXXXXX 学号:XXXXXXXXXXXXXXX *\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* 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); switch (item) { case 1: printf("请输入您要录入的学生人数:"); scanf("%d", &n); L = ListCreate(L, n); break; case 2: printf("全部学生信息如下:\n"); printf("学号\t\t姓名\t\t电话号码\t\t身份证号码\t\t籍贯\t\t通讯地址\n"); output(L); break; case 3: printf("请输入您要查找的学生姓名:"); scanf("%s", nam); LIstSearch(L, nam); break; case 4: printf("请输入您要修改的学生姓名:"); scanf("%s", nam); ListModify(L, nam); break; case 5: printf("请输入您要删除的学生的姓名:"); scanf("%s", nam); ListDelete(L, nam); break; case 6: ListInsert(L); break; case 7: PrintFile(L); break; case 0: printf("即将退出学生籍贯管理系统....."); exit(0); default: break; } printf("\n\n\n\n"); } while (item); return 0;}
部分运行结果截图
感谢各位的阅读,以上就是"C语言中怎么使用链表实现学生籍贯管理系统"的内容了,经过本文的学习后,相信大家对C语言中怎么使用链表实现学生籍贯管理系统这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
学生
输入
籍贯
号码
系统
信息
姓名
节点
管理系统
管理
名学
学号
电话
电话号码
地址
通讯
通讯地址
语言
身份
身份证
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
喔噻互联网科技有限公司
互联网新科技
新华互联网科技学校
互联网科技活动banner
麻工互联网科技
金融科技 互联网金融
互联网科技公司怎么样
致骋互联网科技
狮子座互联网科技有限公司
赫美联合互联网科技
互联网前沿科技
人人互联网科技是培训
恒银科技与互联网金融
互联网大会黑科技排名
上海宁丞科技互联网
哈尔滨屹滨互联网科技有限公司
开一家科技互联网公司需要多少钱
东莞新华互联网科技学校
广州梦谷互联网科技有限公司领导
互联网科技大会大佬
互联网科技有限公司
上海卓越科技互联网
华服互联网科技怎么样
关于新基建和互联网科技
科技与互联网发展
上海挚品互联网科技
互联网大会黑科技排名
河南住房之家互联网科技
上海互联网科技园景观
科技美学互联网 艺术