学生管理系统(数据结构课程设计之完整代码).doc
《学生管理系统(数据结构课程设计之完整代码).doc》由会员分享,可在线阅读,更多相关《学生管理系统(数据结构课程设计之完整代码).doc(14页珍藏版)》请在咨信网上搜索。
数据结构课程设计 学生信息管理系统C语言编写 仅供参考: #include<stdio。h> #include<stdlib。h〉 #include<string。h> #include〈conio。h> #define LEN sizeof(LNode) typedef struct LNode { //用于存放学生信息节点 int stuNumber; char telenum[50]; int age; char chass[50]; char deptName[50]; /*char zhuanYe[50]; char adress[50];*/ char name[20]; 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 telenum[50]; char name[20]; int age; /* char deptName[50]; char adress[50]; char zhuanYe[50];*/ char chass[50]; //开始输出学生信息 while(1) { printf("请输入学生的信息:学号,姓名,年龄,班级,院系,专业,家庭住址,电话号码\n”); printf("学号输入负数结束!\n"); printf(”请输入学号%d: ",num); scanf(”%10d”,&stuNumber); if(stuNumber〈0) {break;} printf(”请输入姓名%d: ”,num); getchar(); gets(name); printf(”请输入年龄%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=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 手机号:%s\n",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—〉stuNumber〈=n) { if(p—〉stuNumber==n)//比较要查找的学号是否和当前学生信息所指的学号匹配 { flag=1;//输入学号匹配 printf(”要查找的是第%d位学生\n",seat); printf(”学号是:%d 名字:%s 年龄:%d 班级:%s 手机号:%s\n",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&&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; 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 n[20];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 telenum[50]; char name[20]; char chass[50]; 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,"%d\t%s\t%s\n”,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,”%d\t%s\t%s\n”,&p—〉stuNumber,&p-〉name,&p—>telenum); printf("\n%d\t%s\t%s\n”,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(way<1||way〉3){deteStu(L);} switch (way) { case 1: { printf("请输入要删除的学生学号:"); scanf(”%d”,&n); flag= deleNum(L,n);break; } case 2:{ char n[20]; 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(”* *** 4 更新学生信息 **** * \n"); printf("* *** 5 添加学生信息 **** * \n"); printf(”* *** 6 删除学生信息 **** * \n”); printf(”* *** 7 保存学生信息 **** * \n"); printf(”* *** 8从文件导入学生信息 **** * \n"); printf("* *** 0 退出管理信息系统 **** * \n"); printf("****************************欢迎使用学生管理信息系统***********************************************”); int menu=0; printf("请选择0-8:”); scanf("%d”,&menu); if(menu<0&&menu〉8) { printf(”输入无效,请正确输入有效序号0—8:”); scanf(”%d”,&menu); } return menu; } //**************************main()程序***************************************************************************************************** void main() { Link L=(Link)malloc(LEN);//在主函数上首先让结构体指针初始化; L-〉next=NULL; int flag=0;//学生信息是否建立 int menu=0;//菜单选项 do{ menu=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); } //******************************************************************************************************************************- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 管理 系统 数据结构 课程设计 完整 代码
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文