学生管理系统(数据结构课程设计报告之代码)_第1页
学生管理系统(数据结构课程设计报告之代码)_第2页
学生管理系统(数据结构课程设计报告之代码)_第3页
已阅读5页,还剩12页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构课程设计学生信息管理系统C语言编写 仅供参考:#in clude<stdio.h>#in clude<stdlib.h>#in clude<stri ng.h>#in clude<c oni o.h>#define LEN sizeof(LNode)typedef struct LNode/用于存放学生信息节点int stuNumber; char tele nu m50;int age;char chass50; char deptName50; /*char zhua nY e50;char adress50;*/ char n am

2、e20; struct LNode *n ext;LNode,*Li nk;*Link createL in k(L ink L) /初始化定义函数,声明变量void in serStu(L ink L,Li nk Elem);/定义插入函数int coun t(L ink L);int temp;temp=co un t(L);printf("节点个数为 d n",temp);Li nk p;int num=1, stuNumber;char tele nu m50;char n ame20;int age;/* char deptName50;char adress50

3、;char zhua nY e50;*/char chass50;/开始输出学生信息while(1)n");prin tf(”请输入学生的信息:学号,年龄,班级,院系,专业,家庭住址,prin tf("学号输入负数结束!n");printf("请输入学号 d: ”,num);sea nf("%10d",& stuNumber);if(stuNumber<0) break;printf(”请输入 %d: ",num);getchar();gets (n ame);printf("请输入年龄 %d: ”,

4、num);scan f("%d", &age);printf("请输入班级 %d: ",num);getchar();gets(chass);printf("请输入:",num);getchar();gets(tele nu m);/* printf("请输入院系 %d: ”,num);getchar();gets(deptName);*/if(stuNumber>=0)p=(Li nk)malloc(LEN);p->stuNumber=stuNumber;strcpy(p->chass,chass

5、);/* strcpy(p->deptName,deptName);*/p->age=age;strcpy(p->tele nu m,tele nu m);strcpy(p->n ame ,n ame);/插入新结点in serStu(L,p);nu m+;return (L);/*打 印 头结点 为* void prin tList(L ink L)prin tf("n* n");prin tf("n学号年龄 专业班级n");int n=1;Link p=L;int coun t(L ink L);int temp;temp=c

6、ou nt(L);结点个数:if(temp=O)printf("系统中没有元素n”);/判断学生管理系统中有无信息elsewhile(p-> next!=NULL)printf("%2d %-9d",n,p->next->stuNumber);prin tf("%-8s%-5d%-12s%sn",p-> next-name,p->next->age,p->next->chass,p->next->telenum/*p->next->deptName*/);/首 个字符打印不

7、出来p= p_>n ext;n+;printf("n*return;/* * void in serStu(L ink L,L i nk 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->n ext;/ 确定Elem的插入位置i

8、f(p=NULL)若为空表,插入到头结点之p=prior(L,p);Elem-> next=NULL;p->n ext=Elem;/后elsep=prior(L,p);Elem-> next=p->n ext;p_> next=Elem;/*找到当前地址元素的前一元素的地址*Li nk prior(Li nk L, Li nk p)if(L-> next=NULL)return(L);Link p_prior=L; while(p_prior- >n ext!=p) p_prior= p_prior- >n ext ;return (p_prio

9、r);/*8按学 号查询学生 信 息* int searchName(L ink L,char n )int flag=O;标志要查找的学生和学生记录中的是否匹配Link p=L->n ext;int seat=1;if(L->next=NULL|L=NULL)printf("没有学生信息 n");elsewhile(p!=NULL)if(!strcmp(p-> name, n)/比较要查找的是否和当前学生信息所指的匹配flag=1;/输入匹配printf("要查找的是第d位学生n”,seat);printf("学号是:%d 名字:%s

10、 年龄:%d班级:%s 手机号:%sn",p->stuNumber,p->name,p->age,p->chass,p->telenum);p=p->n ext ;seat+; return flag;按学号查找学生信息*int searchNum(L ink L,i nt n) int flag=O;标志要查找的学生和管理信息系统中的学号是否匹配Link p=L->n ext;int seat=1;if(L->next=NULL)printf("没有学生信息 n");elsewhile(p!=NULL)if(p-&

11、gt;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->chass,p->telenum);p=p->n ext ;seat+; retur n flag;/*从通讯录中删除第 i 个元素* void deleteElem(L ink L,i nt

12、 i)Link p=L;int j=0;while(p-> next&&j<i-1)p= p_>n ext;j+;if(!(p->next)/判断i时候合法,i不能大于元素的个数,也不能小于等于0printf("第d(学生删除失败n",i);return;Link q=p->n ext; p->n ext=q->n ext; free(q);按删除学生* int deleName(L ink L, char n ) void deteStu(Li nk);int flag=O;判断要删除的学生与系统中的是否匹配Lin

13、k p=L->n ext;int seat =1;if(L-> next=NULL)pri ntf("n n");deteStu( L);elsewhile(p!=NULL)if(!strcmp(p->n ame ,n)/ flag=1;prin tf("%s",p->n ame ); p=p->n ext; deleteElem(L,seat);/ elsep=p->next ;seat+;删除提示:系统中没有元素,删除失败!比较名字是否匹配删除第i个学生的信息被删除了 n");if(flag)pri nt

14、f("retur n flag;/*按 学 号 删 除 学* int deleNum(Link L,int n) void deteStu(Li nk);int flag=0;Link p=L->next ;int seat=1;if(L-> next=NULL)printf("n删除提示:系统中没有元素,删除失败!elsewhile(p!=NULL)if(p->stuNumber=n)flag=1;prin tf("%d",p->stuNumber);p=p->n ext;deleteElem(L,seat);break;

15、p=p->next ;seat+;n");deteStu( L);if(flag) printf(" else printf("被删除了 n");没有找到学生信息n");retur n flag;/*void searchWay1(Li nk L) void searchMe nu(Link L);int searchWay=O;控制跳出循环,再次选择查询方式if(searchWay=O)prin tf("请输入要查询的学生的学号:int n,s;scan f("%d", &n);n");s

16、=searchNum(L, n);if(s=O)printf("查找失败 n”);searchWay=1;if(searchWay=1)searchMe nu( L);/* void searchWay2(Li nk L) void searchMe nu(Link L);int searchWay=O;控制跳出循环,再次选择查询方式if(searchWay=O)char n20;int flag;printf("请输入要查询的学生n");char temp2=getchar();gets( n);flag= searchName(L ,n);if(flag=0)

17、printf(”查找失败!n");searchWay=1;if(searchWay=1)searchMe nu( L);y*8 void searchMe nu(Link L)int mainMenu();printf("*n");printf(" n");printf(" n");printf(" n");printf("*查 询 菜 单1输入学生学号查询学生信息2输入学生查询学生信息3返回上级菜单查 询 菜 单n");*printf(”请选择 1-3:");int men

18、u;scan f("%d",&me nu);switch(me nu)case 1: searchWay1(L);break;case 2: searchWay2(L);break; case 3:break;/跳回主菜单程序/*更 新 学 生 信 息 模*void alterStu(Li nk L)/按学号更新学生信息intn ;pri ntf("请输入要修改的学生学号:");sca nf("%d",&n);Link p=L->n ext;if(p=NULL)pri ntf("学生管理系统没有学生信息

19、!");while(p!=NULL)循环查找学生信息,如果找到该学号则进入循环体更改学生信息*if(p->stuNumber=n)int num=1, stuNumber,age;char tele nu m50;char n ame20;char chass50;printf( *n");printf("请输入学生的学号,和n");printf("请输入学号 %d: ”,num);scan f("%d",& stuNumber);printf(”请输入 %d: ", num);getchar();g

20、ets (n ame);printf("请输入年龄 %d: ”,num);sca nf("%d",&age);printf("请输入班级 %d: ",num);getchar();gets(chass);printf(”请输入:",num);getchar();gets(tele nu m);p->age=age;p->stuNumber=stuNumber;strcpy(p->tele nu m,tele nu m); strcpy(p->n ame ,n ame);strcpy(p->chas

21、s,chass);/更新新结点printf("*/*p=p->n ext;/*保 存 学 生 信*void keepStu(L ink L)Link p=L->n ext;FILE* fp;if(fp=fope n("stude nt.txt","r")=NULL) 测试 student.txt","w"); fclose(fp);测试 stude nt.txt","a");打开文件,不存在此文件则新建while(p!=NULL)fprin tf(fp,"%dt%

22、st%sn ",p->stuNumber,p->n ame,p->tele nu m); p=p->n ext;fclose(fp);prin tf("文件保存成功!/*n “);统*int coun t(L ink L)int n=0;Link p=L->n ext; if(p=NULL)pri ntf("不存在学生信息n");while(p!=NULL)p=p->n ext;n+;return n;/*导 入 学 生 信 息 模*Link stuE ntry() FILE* fp;Link p,q ,L;测试 st

23、udent.txt","r")=NULL)打开文件,不存在此文件则新建L=q=(Li nk)malloc(LEN);printf("n 学号手机号n");printf(H*n");while(!feof(fp)p=(Li nk)malloc(LEN);fscan f(fp,"%dt%st%sn",&p->stuNumber,&p-> name, &p->tele nu m);prin tf("n%dt%st%sn",p->stuNumber,p-&

24、gt;n ame,p->tele nu m);q_>n ext=p;q=p;q-> next=NULL;fclose(fp);printf(”按任意键结束:");getch();返回return L;*/*void AddStu(Li nk L)int temp;temp=co un t(L);printf("节点个数为 d n",temp);if(temp=0)createLi nk(L);如果没有学生信息则调用初始化函数createL in k(L);删* void deteStu(Li nk L)int flag=0,way ,n;prin

25、tf("n*、n")prin tf("n*、n")printf("*、n")printf("*n");prin tf("n选择操作请输入删除方式:工式 *3:");1 :按学返回主菜单sca nf("%d",&way);if(way<1|way>3)deteStu(L);switch (way)case 1: ");prin tf("请输入要删除的学生学号:sca nf("%d",&n);flag= deleNum(L ,n );break;case 2:char n20;prin tf(”请输入要删除的学生:”);char temp仁getchar();gets( n);flag=deleName(L ,n );break;case 3:break;if(flag)prin tf("删除成功! n ”);deteStu(L);/*int mainMenu()prin tf("n*7I*欢迎使用学生管理信丿系统*、n")prin tf("*1输入学生信息* n");prin tf("*2显示学生信息* n&quo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论