




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计学生信息管理系统C语言编写 仅供参考:#include#include#include#include#define LEN sizeof(LNode)typedef struct LNode/用于存放学生信息节点 int stuNumber; char telenum50;int age;char chass50;char deptName50;/*char zhuanYe50;char adress50;*/char name20;struct LNode *next;LNode,*Link;/*创建链表结点*Link createLink(Link L) /初始化定义函数,声明变量void inserStu(Link L,Link Elem);/定义插入函数int count(Link L); int temp;temp=count(L);printf(节点个数为%d:n,temp);Link p;int num=1, stuNumber;char telenum50;char name20;int age; /* char deptName50;char adress50; char zhuanYe50;*/char chass50;/开始输出学生信息 while(1)printf(请输入学生的信息:学号,姓名,年龄,班级,院系,专业,家庭住址,电话号码n); printf(学号输入负数结束!n);printf(请输入学号%d: ,num); scanf(%10d,&stuNumber);if(stuNumber=0)p=(Link)malloc(LEN);p-stuNumber=stuNumber; strcpy(p-chass,chass); /* strcpy(p-deptName,deptName);*/ p-age=age;strcpy(p-telenum,telenum);strcpy(p-name,name);/插入新结点inserStu(L,p); num+; return (L);/*打印头结点为L的学生记录*void printList(Link L) printf(n*学号,姓名,年龄,班级,电话号码*n);printf(n 学号 姓名 年龄 专业班级 电话号码 n);int n=1;Link p=L;int count(Link L); int temp;temp=count(L);/结点个数:if(temp=0)printf(系统中没有元素n);/判断学生管理系统中有无信息 else while(p-next!=NULL) printf(%2d %-9d,n,p-next-stuNumber); printf(%-8s %-5d %-12s %s n,p-next-name, p-next-age,p-next-chass,p-next-telenum/*p-next-deptName*/);/首个字符打印不出来 p= p-next; n+;printf(n*n);return;/*插入学生信息*void inserStu(Link L,Link Elem) Link prior(Link L,Link p);Link p=L-next;/*%* while(p!=NULL&Elem-stuNumber=p-stuNumber) if(p-stuNumber=Elem-stuNumber) printf(重复输入学号,输入失败!);return ; p=p-next; /确定Elem的插入位置if(p=NULL) p=prior(L,p);Elem-next=NULL;p-next=Elem;/若为空表,插入到头结点之后 else p=prior(L,p);Elem-next=p-next;p-next=Elem; /*找到当前地址元素的前一元素的地址*Link prior(Link L,Link p)if(L-next=NULL)return(L);Link p_prior=L; while(p_prior-next!=p) p_prior= p_prior-next ; return (p_prior);/*8按学号查询学生信息*int searchName(Link L,char n)int flag=0;/标志要查找的学生和学生记录中的姓名是否匹配Link p=L-next;int seat=1; if(L-next=NULL|L=NULL)printf(没有学生信息n); else while(p!=NULL) if(!strcmp(p-name,n)/比较要查找的姓名是否和当前学生信息所指的姓名匹配 flag=1;/输入姓名匹配 printf(要查找的是第%d位学生n,seat); printf(学号是:%d 名字:%s 年龄:%d 班级:%s 手机号:%sn,p-stuNumber,p-name,p-age,p-chass,p-telenum); p=p-next ;seat+;return flag;/*按学号查找学生信息*int searchNum(Link L,int n)int flag=0;/标志要查找的学生和管理信息系统中的学号是否匹配Link p=L-next;int seat=1;if(L-next=NULL)printf(没有学生信息n); else while(p!=NULL) if(p-stuNumberstuNumber=n)/比较要查找的学号是否和当前学生信息所指的学号匹配 flag=1;/输入学号匹配 printf(要查找的是第%d位学生n,seat); printf(学号是:%d 名字:%s 年龄:%d 班级:%s 手机号:%sn,p-stuNumber,p-name,p-age,p-chass,p-telenum); p=p-next ;seat+; return flag;/*从通讯录中删除第i个元素*void deleteElem(Link L,int i) Link p=L;int j=0; while(p-next&jnext;j+; if(!(p-next)/判断i时候合法,i不能大于元素的个数,也不能小于等于0 printf(第%d个学生删除失败n,i); return; Link q=p-next; p-next=q-next; free(q);/*按姓名删除学生信息*int deleName(Link L, char n) void deteStu(Link); int flag=0;/判断要删除的学生与系统中的姓名是否匹配 Link p=L-next; int seat =1; if(L-next=NULL)printf(n删除提示:系统中没有元素,删除失败!n);deteStu( L); else while(p!=NULL) if(!strcmp(p-name ,n)/比较名字是否匹配 flag=1; printf(%s,p-name ); p=p-next; deleteElem(L,seat);/删除第i个学生的信息 else p=p-next ;seat+; if(flag)printf(被删除了n); return flag;/*按学号删除学生信息*int deleNum(Link L,int n) void deteStu(Link);int flag=0;Link p=L-next ;int seat=1; if(L-next=NULL) printf(n删除提示:系统中没有元素,删除失败!n);deteStu( L); else while(p!=NULL) if(p-stuNumber=n) flag=1; printf(%d,p-stuNumber); p=p-next; deleteElem(L,seat); break; p=p-next ; seat+; if(flag) printf(被删除了n); else printf(没有找到学生信息n); return flag;/*void searchWay1(Link L) void searchMenu(Link L); int searchWay=0;/控制跳出循环,再次选择查询方式 if(searchWay=0) printf(请输入要查询的学生的学号:n); int n,s; scanf(%d,&n); s=searchNum(L, n); if(s=0)printf(查找失败n); searchWay=1; if(searchWay=1) searchMenu( L); /* void searchWay2(Link L) void searchMenu(Link L); int searchWay=0;/控制跳出循环,再次选择查询方式 if(searchWay=0) char n20;int flag;printf(请输入要查询的学生姓名n);char temp2=getchar();gets(n);flag= searchName(L,n);if(flag=0)printf(查找失败!n);searchWay=1; if(searchWay=1) searchMenu( L); /*8 void searchMenu(Link L) int mainMenu();printf( * 查询菜单 * n);printf( * 1 输入学生学号查询学生信息 n);printf( * 2 输入学生姓名查询学生信息 n);printf( * 3 返回上级菜单 n);printf( * 查询菜单 * n);printf(请选择1-3: ); int menu;scanf(%d,&menu); switch(menu) case 1: searchWay1(L);break; case 2: searchWay2(L);break; case 3: break;/跳回主菜单程序 /*更新学生信息模块* void alterStu(Link L)/按学号更新学生信息 int n;printf(请输入要修改的学生学号:); scanf(%d,&n); Link p=L-next; if(p=NULL)printf(学生管理系统没有学生信息!); while(p!=NULL)/循环查找学生信息,如果找到该学号则进入循环体更改学生信息 /* if(p-stuNumber=n) int num=1, stuNumber,age; char telenum50; char name20; char chass50; printf(*更改学生信息*n); printf(请输入学生的学号,姓名和电话号码n); printf(请输入学号%d: ,num); scanf(%d,&stuNumber); printf(请输入姓名%d: ,num); getchar(); gets(name); printf(请输入年龄%d: ,num); scanf(%d,&age); printf(请输入班级%d: ,num); getchar(); gets(chass); printf(请输入电话号码: ,num); getchar(); gets(telenum); p-age=age; p-stuNumber=stuNumber; strcpy(p-telenum,telenum); strcpy(p-name,name); strcpy(p-chass,chass);/更新新结点printf(*更改学生信息完毕*n); /* p=p-next; /*保存学生信息模块* void keepStu(Link L) Link p=L-next; FILE* fp; if(fp=fopen(student.txt,r)=NULL)/打开文件,不存在此文件则新建 fp=fopen(E:测试student.txt,w); fclose(fp); fp=fopen(E:测试student.txt,a); while(p!=NULL) fprintf(fp,%dt%st%sn,p-stuNumber,p-name,p-telenum); p=p-next; fclose(fp); printf(文件保存成功!n); /*统计结点个数模块* int count(Link L) int n=0; Link p=L-next; if(p=NULL)printf(不存在学生信息n); while(p!=NULL) p=p-next;n+; return n; /*导入学生信息模块* Link stuEntry() FILE* fp; Link p,q ,L; if(fp=fopen(E:测试student.txt,r)=NULL)/打开文件,不存在此文件则新建 ; L=q=(Link)malloc(LEN); printf(n学号 姓名 手机号 n); printf(*n); while(!feof(fp) p=(Link)malloc(LEN); fscanf(fp,%dt%st%sn,&p-stuNumber,&p-name,&p-telenum); printf(n%dt%st%sn,p-stuNumber,p-name,p-telenum); q-next=p; q=p; q-next=NULL; fclose(fp); printf(按任意键结束:); getch();/返回 return L; /*添加学生信息*void AddStu(Link L) int temp; temp=count(L); printf(节点个数为%d:n,temp);if(temp=0)createLink(L);/如果没有学生信息则调用初始化函数 createLink(L); /*删除学生菜单*void deteStu(Link L) int flag=0,way,n; printf(n* 删除菜单 *n); printf(n选择操作方式* 1:按学号 *n); printf( * 2:按姓名 *n); printf( * 3: 返回主菜单 *n); printf(n请输入删除方式:);scanf(%d,&way);if(way3)deteStu(L);switch (way)case 1: printf(请输入要删除的学生学号:); scanf(%d,&n); flag= deleNum(L,n);break;case 2: char n20; printf(请输入要删除的学生姓名:); char temp1=getchar(); gets(n); flag=deleName(L,n);break; case 3:break; if(flag)printf(删除成功!n);deteStu(L); /*主菜单程序* int mainMenu() printf(n*欢迎使用学生管理信息系统*n);printf(* * 1 输入学生信息 * * n);printf(* * 2 显示学生信息 * * n);printf(* * 3 查询学生信息 * * n);printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省厦门市集美区杏林建设开发有限公司招聘笔试参考题库含答案解析
- 2025年浙江台州市黄岩城市建设投资集团下属公司招聘笔试参考题库含答案解析
- 2025年中国调味鱿鱼头市场调查研究报告
- 2025年中国螺旋胶辊市场现状分析及前景预测报告
- 2025年中国荧光型磁翻板液位计项目投资可行性研究报告
- 2025年中国自行车贴花项目投资可行性研究报告
- 2025年中国育成育肥猪浓缩饲料市场调查研究报告
- 2025年中国结核抗体胶体金检测试纸市场现状分析及前景预测报告
- 2025年中国红王子锦带市场现状分析及前景预测报告
- 2025年中国稀土耐磨钢弯头市场调查研究报告
- 2025年黄山市祁门文化旅游发展集团有限公司招聘5人笔试参考题库附带答案详解
- 美容美发股东合同和合伙协议
- 2024年湖北省襄阳县事业单位公开招聘医疗卫生岗笔试题带答案
- 2025-2030中国黑小麦行业深度分析及发展趋势与投资战略研究报告
- 《皮肤修复机制》课件
- 回访岗管理制度
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 调机品管理规定
- 智力题,移动一根火柴使等式成立复习课程
- 食物过敏儿童的营养管理策略PPT课件
- 《质量管理体系文件》成品检验报告(COA)
评论
0/150
提交评论