收藏 分销(赏)

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

上传人:丰**** 文档编号:3992216 上传时间:2024-07-24 格式:DOC 页数:14 大小:47.54KB 下载积分:8 金币
下载 相关 举报
学生管理系统(数据结构课程设计之完整代码).doc_第1页
第1页 / 共14页
学生管理系统(数据结构课程设计之完整代码).doc_第2页
第2页 / 共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); } //******************************************************************************************************************************
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服