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

上传人:b****6 文档编号:6467252 上传时间:2023-01-06 格式:DOCX 页数:19 大小:19.10KB
下载 相关 举报
学生管理系统数据结构课程设计之完整代码.docx_第1页
第1页 / 共19页
学生管理系统数据结构课程设计之完整代码.docx_第2页
第2页 / 共19页
学生管理系统数据结构课程设计之完整代码.docx_第3页
第3页 / 共19页
学生管理系统数据结构课程设计之完整代码.docx_第4页
第4页 / 共19页
学生管理系统数据结构课程设计之完整代码.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

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

《学生管理系统数据结构课程设计之完整代码.docx》由会员分享,可在线阅读,更多相关《学生管理系统数据结构课程设计之完整代码.docx(19页珍藏版)》请在冰豆网上搜索。

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

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

数据结构课程设计

学生信息管理系统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;

}

//

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1