C语言中怎么使用链表实现学生籍贯管理系统
发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,这篇文章主要讲解了"C语言中怎么使用链表实现学生籍贯管理系统",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言中怎么使用链表实现学生籍贯管理系统"吧
千家信息网最后更新 2025年11月20日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安全错误
数据库的锁怎样保障安全
node 访问数据库
智能汽车网络安全概念股龙头
网站 网络安全大检查
绍兴网络安全和信息化
c语言储存数据库文件
软件开发全过程及经验
网络安全行为承诺书
软件开发工资3000低吗
pico vr软件开发
网络安全代理商
重庆市大学生网络安全
服务器能用office吗
中国重要会议论文全文的数据库是
内蒙数据库培训
服务器需要杀毒软件吗
网络安全师人才市场缺口
dell服务器管理口登入
u8 数据库链接
游戏服务器更新的原理
惠普服务器cpu品牌
个人用的应用服务器需要啥配置
服务器怎么分配时间
网站搭建数据库保存财务报表
国家网络安全宣传周活动
oracle数据库乐观锁
小程序云存储服务器
网络安全英语习作
娄底软件开发培训学什么
软件开发费用增票
天宫服务器功耗