版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 数据结构课程设计学生信息管理系统C语言编写 仅供参考:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define LEN sizeof(LNode)typedef struct LNode/用于存放学生信息节点 int stuNumber; char telenum50;int age;char chass50;char deptName50;/*char zhuanYe50;char adress50;*/char nam
2、e20;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
3、zhuanYe50;*/char chass50;/开始输出学生信息 while(1)printf("请输入学生的信息:学号,姓名,年龄,班级,院系,专业,家庭住址,电话号码n"); printf("学号输入负数结束!n");printf("请输入学号%d: ",num); scanf("%10d",&stuNumber);if(stuNumber<0) break; printf("请输入姓名%d: ",num); getchar();gets(name);printf(&quo
4、t;请输入年龄%d: ",num); scanf("%d",&age); printf("请输入班级%d: ",num);getchar(); gets(chass); printf("请输入电话号码: ",num);getchar();gets(telenum); /* printf("请输入院系%d: ",num); getchar(); gets(deptName);*/ if(stuNumber>=0)p=(Link)malloc(LEN);p->stuNumber=stuNu
5、mber; 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");i
6、nt 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->c
7、hass,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->stu
8、Number) 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; w
9、hile(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)/比较要查找的姓名是否和当前学生信息所指的姓名匹配
10、 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
11、seat=1;if(L->next=NULL)printf("没有学生信息n"); else while(p!=NULL) if(p->stuNumber<=n) if(p->stuNumber=n)/比较要查找的学号是否和当前学生信息所指的学号匹配 flag=1;/输入学号匹配 printf("要查找的是第%d位学生n",seat); printf("学号是:%d 名字:%s 年龄:%d 班级:%s 手机号:%sn",p->stuNumber,p->name,p->age,p->cha
12、ss,p->telenum); p=p->next ;seat+; return flag;/*从通讯录中删除第i个元素*void deleteElem(Link L,int i) Link p=L;int j=0; while(p->next&&j<i-1) p= p->next;j+; if(!(p->next)/判断i时候合法,i不能大于元素的个数,也不能小于等于0 printf("第%d个学生删除失败n",i); return; Link q=p->next; p->next=q->next; f
13、ree(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
14、 ); 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
15、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;/
16、控制跳出循环,再次选择查询方式 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(searchW
17、ay=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&qu
18、ot;);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 alterS
19、tu(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(
20、"*更改学生信息*n"); printf("请输入学生的学号,姓名和电话号码n"); printf("请输入学号%d: ",num); scanf("%d",&stuNumber); printf("请输入姓名%d: ",num); getchar(); gets(name); printf("请输入年龄%d: ",num); scanf("%d",&age); printf("请输入班级%d: ",num); getc
21、har(); 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
22、=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->telenu
23、m); 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&q
24、uot;)=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->
25、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,
26、n; printf("n* 删除菜单 *n"); printf("n选择操作方式* 1:按学号 *n"); printf(" * 2:按姓名 *n"); printf(" * 3: 返回主菜单 *n"); printf("n请输入删除方式:");scanf("%d",&way);if(way<1|way>3)deteStu(L);switch (way)case 1: printf("请输入要删除的学生学号:"); scanf(&quo
27、t;%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("*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程受损赔偿协议书模板
- 文案编辑的协议书
- 2025-2030人工智能行业市场供应需求变化分析及资金投入战略规划研究报告
- 华为竟业协议书 存储
- 2025-2030人工智能算法技术发展现状行业应用前景研究
- 共享菜园管理协议书范本
- 2025-2030人工智能深度学习行业市场现状竞争格局投资预算规划报告
- 2025-2030人工智能技术应用领域深度分析及未来发展方向研究报告
- 2025-2030人工智能医疗辅助诊断系统开发应用与监管探讨
- 2025-2030人工智能医疗应用推广分析报告
- 落地窗安装合同协议书
- 漂流滑道施工方案
- 安全管理不足之处及整改方案解析
- 安全生产培训包括哪些内容
- 2025年国有企业三项制度改革自查报告
- 赊销业务与企业财务风险控制-洞察及研究
- 钢笔修理课件
- (2024版)人教版 小学体育与健康 一年级全一册 教学设计
- 高中教学经验交流课件
- 直播间设计装修合同范本
- 十五五特殊教育发展提升行动计划
评论
0/150
提交评论