学生管理系统数据结构课程设计之完整代码.docx
- 文档编号:6863584
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:18
- 大小:19.01KB
学生管理系统数据结构课程设计之完整代码.docx
《学生管理系统数据结构课程设计之完整代码.docx》由会员分享,可在线阅读,更多相关《学生管理系统数据结构课程设计之完整代码.docx(18页珍藏版)》请在冰豆网上搜索。
学生管理系统数据结构课程设计之完整代码
数据结构课程设计
学生信息管理系统C语言编写仅供参考:
#include
#include
#include
#include
#defineLENsizeof(LNode)
typedefstructLNode
{
//用于存放学生信息节点
intstuNumber;
chartelenum[50];
intage;
charchass[50];
chardeptName[50];
/*charzhuanYe[50];
charadress[50];*/
charname[20];
structLNode*next;
}LNode,*Link;
//****************创建链表结点**************************************************************************
LinkcreateLink(LinkL)
{//初始化定义函数,声明变量
voidinserStu(LinkL,LinkElem);//定义插入函数
intcount(LinkL);
inttemp;
temp=count(L);
printf("节点个数为%d:
\n",temp);
Linkp;
intnum=1,stuNumber;
chartelenum[50];
charname[20];
intage;
/*chardeptName[50];
charadress[50];
charzhuanYe[50];*/
charchass[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的学生记录********************************************************
voidprintList(LinkL)
{
printf("\n*********************学号,姓名,年龄,班级,电话号码**************************\n");
printf("\n学号姓名年龄专业班级电话号码\n");
intn=1;
Linkp=L;
intcount(LinkL);
inttemp;
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;
}
//********************************插入学生信息**************************************
voidinserStu(LinkL,LinkElem)
{
Linkprior(LinkL,Linkp);
Linkp=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;
}
}
//***********************找到当前地址元素的前一元素的地址*************************************************************************
Linkprior(LinkL,Linkp)
{
if(L->next==NULL)return(L);
Linkp_prior=L;
while(p_prior->next!
=p)
{
p_prior=p_prior->next;
}
return(p_prior);
}
//********************************8按学号查询学生信息***************************************************************************
intsearchName(LinkL,charn[])
{
intflag=0;//标志要查找的学生和学生记录中的姓名是否匹配
Linkp=L->next;
intseat=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++;
}
}
returnflag;
}
//****************************************按学号查找学生信息*********************************************************************
intsearchNum(LinkL,intn)
{
intflag=0;//标志要查找的学生和管理信息系统中的学号是否匹配
Linkp=L->next;
intseat=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++;
}
}
returnflag;
}
//*******************************从通讯录中删除第i个元素***************************************************************************
voiddeleteElem(LinkL,inti)
{
Linkp=L;
intj=0;
while(p->next&&j { p=p->next;j++; } if(! (p->next))//判断i时候合法,i不能大于元素的个数,也不能小于等于0 { printf("第%d个学生删除失败\n",i); return; } Linkq=p->next; p->next=q->next; free(q); } //*******************按姓名删除学生信息********************************************************************************************** intdeleName(LinkL,charn[]) {voiddeteStu(Link); intflag=0;//判断要删除的学生和系统中的姓名是否匹配 Linkp=L->next; intseat=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"); } } returnflag; } //*****************按学号删除学生信息***************************************************************** intdeleNum(LinkL,intn) {voiddeteStu(Link); intflag=0; Linkp=L->next; intseat=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"); } } returnflag; } //************************************************************************************* voidsearchWay1(LinkL) {voidsearchMenu(LinkL); intsearchWay=0;//控制跳出循环,再次选择查询方式 if(searchWay==0) { printf("请输入要查询的学生的学号: \n"); intn,s; scanf("%d",&n); s=searchNum(L,n); if(s==0)printf("查找失败\n"); searchWay=1; } if(searchWay==1) { searchMenu(L); } } //******************************************************************************** voidsearchWay2(LinkL) {voidsearchMenu(LinkL); intsearchWay=0;//控制跳出循环,再次选择查询方式 if(searchWay==0) { charn[20];intflag; printf("请输入要查询的学生姓名\n"); chartemp2=getchar(); gets(n); flag=searchName(L,n); if(flag==0)printf("查找失败! \n"); searchWay=1; } if(searchWay==1) { searchMenu(L); } } //*****************************************************************8 voidsearchMenu(LinkL) { intmainMenu(); printf("**********************查询菜单**************************************\n"); printf("***1输入学生学号查询学生信息\n"); printf("***2输入学生姓名查询学生信息\n"); printf("***3返回上级菜单\n"); printf("**********************查询菜单**************************************\n"); printf("请选择1-3: "); intmenu; scanf("%d",&menu); switch(menu) { case1: {searchWay1(L);break;} case2: {searchWay2(L);break;} case3: { break;//跳回主菜单程序 } } } //************************************更新学生信息模块***************************************** voidalterStu(LinkL)//按学号更新学生信息 { intn;printf("请输入要修改的学生学号: "); scanf("%d",&n); Linkp=L->next; if(p==NULL){printf("学生管理系统没有学生信息! ");} while(p! =NULL)//循环查找学生信息,如果找到该学号则进入循环体更改学生信息 {//********************************************************************************************** if(p->stuNumber==n){ intnum=1,stuNumber,age; chartelenum[50]; charname[20]; charchass[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; } } //****************保存学生信息模块*************************************************************************** voidkeepStu(LinkL) { Linkp=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"); } //********************统计结点个数模块*********************************************************************************** intcount(LinkL) { intn=0; Linkp=L->next; if(p==NULL){printf("不存在学生信息\n");} while(p! =NULL) { p=p->next; n++; } returnn; } //********************************导入学生信息模块********************************************************************** LinkstuEntry() { FILE*fp; Linkp,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();//返回 returnL; } //********************添加学生信息******************************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 管理 系统 数据结构 课程设计 完整 代码