C语言中怎么使用链表实现学生籍贯管理系统
发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章主要讲解了"C语言中怎么使用链表实现学生籍贯管理系统",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言中怎么使用链表实现学生籍贯管理系统"吧
千家信息网最后更新 2025年02月21日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安全错误
数据库的锁怎样保障安全
数据库查询的数据导入表格
到此一游网络技术公司
es浏览器如何访问ftp服务器
引发网络安全图片
泉州网络安全教育平台作业
什么软件开发不要钱
天津正规软件开发过程检测中心
邯郸市网络安全大队电话
以下属于网络安全技术
网络安全的手抄报带字的
怎样预防网络安全诈骗PPT
公司电脑邮箱连接不上服务器
如何搭建一个pdf预览服务器
网络安全体系概述
网络安全作文300至400
境外服务器 恒创科技官网
速蛙云怎么进入添加服务器
网络安全法系统图解
20兆宽带能玩联通的服务器吗
数字后端软件开发
购物车数据库表归谁管
正式服玛里苟斯服务器找不到
云服务器管理办法
网络安全生产五到位
知乎服务器挂了吗
数据库验收的前提条件
怎样选视频服务器
数据库如何通过外键查询数据
浙江小睿网络技术有限公司
陕西省教育厅网络安全督导