学生信息管理系统C语言源代码.docx
- 文档编号:29147563
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:18
- 大小:16.99KB
学生信息管理系统C语言源代码.docx
《学生信息管理系统C语言源代码.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统C语言源代码.docx(18页珍藏版)》请在冰豆网上搜索。
学生信息管理系统C语言源代码
#include
#include
#include
#include
#definelensizeof(structstudent)
FILE*fp;
structstudent
{
longnum;
charname[15];
intage;
charsex[3];
charchushen[10];
chardizhi[20];
charphone[11];
charemail[20];
structstudent*next;
};
voidmenu()
{
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("=====================================\n");
}
structstudent*creat()//录入学生信息
{
intn;
structstudent*head;
structstudent*p1,*p2;
n=0;
p1=p2=(structstudent*)malloc(len);
scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&p1->num,&p1->age,p1->name,p1->sex,p1->chushen,p1->dizhi,p1->phone,p1->email);
head=NULL;
while(p1->num!
=0)
{
n=n+1;
if(n==1)head=p1;
elsep2->next=p1;
p2=p1;
p1=(structstudent*)malloc(len);
scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&p1->num,&p1->age,p1->name,p1->sex,p1->chushen,p1->dizhi,p1->phone,p1->email);
}
p2->next=NULL;
return(head);
}
voidinsert(structstudent*head)//插入学生信息
{
intsearch_num;
structstudent*p,*q,*s;
p=head;
printf("在哪个学生前插入请输入学号:
\n");
scanf("%d",&search_num);
while((p!
=NULL)&&(p->num!
=search_num))
{
q=p;
p=p->next;
}
s=(structstudent*)malloc(len);
q->next=s;
system("cls");
printf("请输入学生信息:
\n");
printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");
scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&s->num,&s->age,s->name,s->sex,s->chushen,s->dizhi,s->phone,s->email);
s->next=p;
}
voidprintList(structstudent*head)//浏览全部学生信息
{
structstudent*p;
p=head;
if(head==NULL)
printf("没有学生信息!
!
\n");
else
{
do
{
fread(p,len,1,fp);
printf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->age,p->name,p->sex,p->chushen,p->dizhi,p->phone,p->email);
p=p->next;
}while(p!
=NULL);
}
}
voidfindList_num(structstudent*head,longsearch_num)//按学号查找
{
structstudent*p;
p=head;
while((p!
=NULL)&&(p->num!
=search_num))
p=p->next;
if(p!
=NULL)
printf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->age,p->name,p->sex,p->chushen,p->dizhi,p->phone,p->email);
else
printf("没有该学生信息!
!
\n");
}
voidfindList_name(structstudent*head,char*search_name)//按姓名查找
{
structstudent*p;
intcmp1=0,cmp=0;
p=head;
while(p!
=NULL)
if(strcmp(p->name,search_name)!
=0)
{
p=p->next;
cmp++;
}
else
{
printf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->age,p->name,p->sex,p->chushen,p->dizhi,p->phone,p->email);
p=p->next;
cmp1=1;
}
if(cmp!
=0&&cmp1==0)
printf("没有该学生信息!
!
\n");
}
voidxiugai(structstudent*p1,longxiu_num)//修改学生信息
{
structstudent*p2;
p2=p1;
while((p2!
=NULL)&&(p2->num!
=xiu_num))
p2=p2->next;
if(p2!
=NULL)
{
scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&p2->num,&p2->age,p2->name,p2->sex,p2->chushen,p2->dizhi,p2->phone,p2->email);
}
else
printf("没有该学生信息!
!
\n");
}
structstudent*delList(structstudent*head,longdel_num)//删除学生信息
{
structstudent*p,*q;
p=head;
q=head;
while(p&&(p->num!
=del_num))
{
q=p;
p=p->next;
}
if(p==NULL)
printf("无此学号!
\n");
else{
if(p==head)
{
head=p->next;
free(p);
}
else{
q->next=p->next;
free(p);
}
}
returnhead;
}
voidpaixu(structstudent*head)//按学号排序
{
structstudent*p,*f,*t;
charch[100];
inti;
t=f=p=head;
for(p=head;p->next!
=NULL;p=p->next)
{
for(t=head,f=t->next;t->next!
=NULL;t=t->next,f=f->next)
{
if(t->num>f->num>0)
{
i=t->num;
t->num=f->num;
f->num=i;
i=t->age;
t->age=f->age;
f->age=i;
strcpy(ch,t->name);
strcpy(t->name,f->name);
strcpy(f->name,ch);
strcpy(ch,t->sex);
strcpy(t->sex,f->sex);
strcpy(f->sex,ch);
strcpy(ch,t->chushen);
strcpy(t->chushen,f->chushen);
strcpy(f->chushen,ch);
strcpy(ch,t->dizhi);
strcpy(t->dizhi,f->dizhi);
strcpy(f->dizhi,ch);
strcpy(ch,t->phone);
strcpy(t->phone,f->phone);
strcpy(f->phone,ch);
strcpy(ch,t->email);
strcpy(t->email,f->email);
strcpy(f->email,ch);
}
}
}
//returnhead;
}
voidsave(structstudent*head)//保存为磁盘文件
{
structstudent*p;
if((fp=fopen("keshe","w"))==NULL)
{
printf("cannotopenthisfile\n");
exit(0);
}
p=head;
while(p!
=NULL)
{
fprintf(fp,"%d\n",p->num);
fprintf(fp,"%d\n",p->age);
fprintf(fp,"%s\n",p->name);
fprintf(fp,"%s\n",p->sex);
fprintf(fp,"%s\n",p->chushen);
fprintf(fp,"%s\n",p->dizhi);
fprintf(fp,"%s\n",p->phone);
fprintf(fp,"%s\n",p->email);
p=p->next;
}
fclose(fp);
}
structstudent*read()//从磁盘读取文件
{
structstudent*head=NULL;
structstudent*p=NULL;
structstudent*t=NULL;
inta;
//fp=fopen("keshe","r");
if((fp=fopen("keshe","r"))==NULL)
{
printf("cannotopenthisfile\n");
exit(0);
}
while
(1)
{
t=(structstudent*)malloc(len);
a=fscanf(fp,"%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&t->num,&t->age,t->name,t->sex,t->chushen,t->dizhi,t->phone,t->email);
if(a==0||a==-1)
returnhead;
t->next=NULL;
if(p==NULL)
{
p=t;
head=t;
}
else
{
p->next=t;
p=p->next;
p->next=NULL;
}
}
fclose(fp);
}
voidmain()
{
intcode=0;
structstudent*pt=NULL;
while(code!
=8)
{
menu();
printf("请输入上述序号进行操作:
\n");
scanf("%d",&code);
system("cls");
switch(code)
{
case1:
{
system("cls");
printf("每个学生的信息之间用Tab键分隔\n");
printf("===========================录入学生信息==============================\n");
printf("---------------------------------------------------------------------\n");
printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");
pt=creat();
save(pt);
system("cls");
printf("===========================录入学生信息==============================\n");
printf("---------------------------------------------------------------------\n");
printf("************录入学生信息成功***********!
!
\n");
printf("按回车键返回主菜单\n");
getchar();
getchar();
system("cls");
};break;
case2:
{
system("cls");
printf("===========================学生信息表================================\n");
printf("---------------------------------------------------------------------\n");
printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");
pt=read();
printList(pt);
printf("=====================================================================\n");
printf("---------------------------------------------------------------------\n");
printf("\n按回车键返回主菜单\n");
getchar();
getchar();
system("cls");
};break;
case3:
{
intsearch=0;
system("cls");
printf("===========================查询学生信息==============================\n");
printf("---------------------------------------------------------------------\n");
while(search!
=3)
{
printf("1、按学号查询\n2、按姓名查询\n3、退出查询\n");
scanf("%d",&search);
switch(search)
{
case1:
{
longsearch_num;
system("cls");
printf("请输入学生学号\n");
scanf("%d",&search_num);
system("cls");
printf("===========================查询结果==================================\n");
printf("---------------------------------------------------------------------\n");
printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");
findList_num(read(),search_num);
printf("=====================================================================\n");
printf("---------------------------------------------------------------------\n");
printf("\n按回车键返回查询菜单\n");
getchar();
getchar();
system("cls");
};break;
case2:
{
charsearch_name[15];
system("cls");
printf("请输入学生姓名\n");
scanf("%s",search_name);
system("cls");
printf("===========================查询结果==================================\n");
printf("---------------------------------------------------------------------\n");
printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");
findList_name(read(),search_name);
printf("=====================================================================\n");
printf("---------------------------------------------------------------------\n");
printf("\n按回车键返回查询菜单\n");
getchar();
getchar();
system("cls");
};
}
}
system("cls");
};break;
case4:
{
longdel_num;
system("cls");
printf("===========================删除学生信息==============================\n");
printf("---------------------------------------------------------------------\n");
printf("请输入要删除学生信息的学号:
\n");
scanf("%d",&del_num);
system("cls");
pt=delList(read(),del_num);
save(pt);
printf("===========================删除结果================================\n");
printf("-------------------------------------------------------------------\n");
printf("学号为%d的学生信息成功删除\n",del_num);
printf("\n按回车键返回主菜单\n");
getchar();
getchar();
system("cls");
};break;
case5:
{
system("cls");
printf("每个学生的信息之间用Tab键分隔\n");
printf("===========================插入学生信息==============================\n");
printf("---------------------------------------------------------------------\n");
insert(pt);
save(pt);
system("cls");
printf("===========================插入学生信息==============================\n");
printf("---------------------------------------------------------------------\n");
printf("****插入学生信息成功***!
!
\n\n");
printf("按回车键返回主菜单\n");
getchar();
getchar();
system("cls");
}break;
case6:
{
longsearch_num;
system("cls");
printf("请输入要修改的学生学号:
\n");
scanf("%d",&search_num);
system("cls");
printf("每个学生的信息之间用Tab键分隔\n");
printf("===========================修改学生信息==================================\n");
printf("-------------------------------------------------------------------------\n");
printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");
findList_num(read(),search_num);
printf("\n");
printf("请输入修改信息:
\n");
printf("学号\t年龄\t姓名\t性别
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 语言 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)