收藏 分享(赏)

学生管理系统(数据结构课程设计之完整代码).doc

上传人:tangtianxu1 文档编号:2871674 上传时间:2018-09-29 格式:DOC 页数:14 大小:91.50KB
下载 相关 举报
学生管理系统(数据结构课程设计之完整代码).doc_第1页
第1页 / 共14页
学生管理系统(数据结构课程设计之完整代码).doc_第2页
第2页 / 共14页
学生管理系统(数据结构课程设计之完整代码).doc_第3页
第3页 / 共14页
学生管理系统(数据结构课程设计之完整代码).doc_第4页
第4页 / 共14页
学生管理系统(数据结构课程设计之完整代码).doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、 数据结构课程设计学生信息管理系统 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) /初始化定义函

2、数,声明变量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(“请输入学生的信息:学号,姓名,年龄,班级,院系,专业,家庭住址,电话号码

3、n“);printf(“学号输入负数结束! n“);printf(“请输入学号 %d: “,num);scanf(“%10d“,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

4、(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-n

5、ext-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!=NULLreturn ;p=p-next;/确定 Elem 的插入位置if(p=NULL)p=prior(L,p);Elem-next=NULL;p-next=Elem;/若为空表,插入到头结点之后elsep=prior(L,p);E

6、lem-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)p

7、rintf(“没有学生信息 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;/标志要查找的学生

8、和管理信息系统中的学号是否匹配Link p=L-next;int seat=1;if(L-next=NULL)printf(“没有学生信息n“);elsewhile(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;

9、/*从通讯录中删除第 i 个元素*void deleteElem(Link L,int i) Link p=L;int j=0;while(p-nextj+;if(!(p-next)/判断 i 时候合法,i 不能大于元素的个数,也不能小于等于 0printf(“第%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

10、seat =1;if(L-next=NULL)printf(“n 删除提示:系统中没有元素,删除失败!n“);deteStu( L);elsewhile(p!=NULL)if(!strcmp(p-name ,n)/比较名字是否匹配flag=1;printf(“%s“,p-name );p=p-next;deleteElem(L,seat);/删除第 i 个学生的信息elsep=p-next ;seat+;if(flag)printf(“被删除了n“);return flag;/*按学号删除学生信息*int deleNum(Link L,int n) void deteStu(Link);int

11、 flag=0;Link p=L-next ;int seat=1;if(L-next=NULL)printf(“n 删除提示:系统中没有元素,删除失败!n“);deteStu( L);elsewhile(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)

12、void searchMenu(Link L);int searchWay=0;/控制跳出循环,再次选择查询方式if(searchWay=0)printf(“请输入要查询的学生的学号:n“);int n,s;scanf(“%d“,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

13、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);/*8void searchMenu(Link L)int mainMenu();printf(“ * 查询菜单 * n“);printf(“ * 1 输入学生学号查询学生信息 n“);printf(“ * 2 输入学生姓名查询学生信息 n“);printf(“ * 3 返回上级菜单 n

14、“);printf(“ * 查询菜单 * n“);printf(“请选择 1-3: “);int menu;scanf(“%d“,switch(menu)case 1: searchWay1(L);break;case 2: searchWay2(L);break;case 3:break;/跳回主菜单程序 /*更新学生信息模块*void alterStu(Link L)/按学号更新学生信息 int n;printf(“请输入要修改的学生学号: “);scanf(“%d“,Link p=L-next;if(p=NULL)printf(“学生管理系统没有学生信息!“);while(p!=NULL

15、)/循环查找学生信息,如果找到该学号则进入循环体更改学生信息/*if(p-stuNumber=n)int num=1, stuNumber,age;char telenum50;char name20;char chass50;printf(“*更改学生信息*n“);printf(“请输入学生的学号,姓名和电话号码n“);printf(“请输入学号%d: “,num);scanf(“%d“,printf(“请输入姓名%d: “,num);getchar();gets(name);printf(“请输入年龄%d: “,num);scanf(“%d“,printf(“请输入班级%d: “,num)

16、;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)

17、/打开文件,不存在此文件则新建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-nex

18、t;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“,printf(“n%dt%st%sn“,p-stuNumber,p-name,p-telenum);q-next=p;q=p;q

19、-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(“ *

20、2:按姓名 *n“);printf(“ * 3: 返回主菜单 *n“);printf(“n 请输入删除方式:“);scanf(“%d“,if(way3)deteStu(L);switch (way)case 1: printf(“请输入要删除的学生学号:“);scanf(“%d“,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“);de

21、teStu(L);/*主菜单程序*int mainMenu()printf(“n*欢迎使用学生管理信息系统*n“);printf(“* * 1 输入学生信息 * * n“);printf(“* * 2 显示学生信息 * * n“);printf(“* * 3 查询学生信息 * * n“);printf(“* * 4 更新学生信息 * * n“);printf(“* * 5 添加学生信息 * * n“);printf(“* * 6 删除学生信息 * * n“);printf(“* * 7 保存学生信息 * * n“);printf(“* * 8 从文件导入学生信息 * * n“);printf(

22、“* * 0 退出管理信息系统 * * n“);printf(“*欢迎使用学生管理信息系统*“);int menu=0;printf(“请选择 0-8:“);scanf(“%d“,if(menu8)printf(“输入无效,请正确输入有效序号 0-8:“);scanf(“%d“,return menu;/*main()程序*void main()Link L=(Link)malloc(LEN);/在主函数上首先让结构体指针初始化;L-next=NULL;int flag=0;/学生信息是否建立int menu=0;/菜单选项domenu=mainMenu();switch(menu)/用于调用子菜单case 1:L=createLink(L);break;case 2:printList(L); break;case 3:searchMenu(L); break;case 4:alterStu(L) ;break;case 5:createLink(L);break;case 6:deteStu( L); break;case 7:keepStu( L); break;case 8:L=stuEntry();break;case 0:return;while(1);/*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报