C语言之学生管理系统.docx

上传人:b****8 文档编号:13090296 上传时间:2023-06-11 格式:DOCX 页数:21 大小:134.68KB
下载 相关 举报
C语言之学生管理系统.docx_第1页
第1页 / 共21页
C语言之学生管理系统.docx_第2页
第2页 / 共21页
C语言之学生管理系统.docx_第3页
第3页 / 共21页
C语言之学生管理系统.docx_第4页
第4页 / 共21页
C语言之学生管理系统.docx_第5页
第5页 / 共21页
C语言之学生管理系统.docx_第6页
第6页 / 共21页
C语言之学生管理系统.docx_第7页
第7页 / 共21页
C语言之学生管理系统.docx_第8页
第8页 / 共21页
C语言之学生管理系统.docx_第9页
第9页 / 共21页
C语言之学生管理系统.docx_第10页
第10页 / 共21页
C语言之学生管理系统.docx_第11页
第11页 / 共21页
C语言之学生管理系统.docx_第12页
第12页 / 共21页
C语言之学生管理系统.docx_第13页
第13页 / 共21页
C语言之学生管理系统.docx_第14页
第14页 / 共21页
C语言之学生管理系统.docx_第15页
第15页 / 共21页
C语言之学生管理系统.docx_第16页
第16页 / 共21页
C语言之学生管理系统.docx_第17页
第17页 / 共21页
C语言之学生管理系统.docx_第18页
第18页 / 共21页
C语言之学生管理系统.docx_第19页
第19页 / 共21页
C语言之学生管理系统.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言之学生管理系统.docx

《C语言之学生管理系统.docx》由会员分享,可在线阅读,更多相关《C语言之学生管理系统.docx(21页珍藏版)》请在冰点文库上搜索。

C语言之学生管理系统.docx

C语言之学生管理系统

流程图:

运行结果:

程序源码:

#include

#include

#include

#include

#include

#defineLENsizeof(structstudent)//求字节数运算符

structstudent

{

charname[20];

longintnum;

charsex[4];

intage;

charaddress[30];

floatscore;

structstudent*next;//链表

};//定义一个结构题

intTOTAL_NUM=0;//学生总数

structstudent*head=NULL;

voidmainmenu();//主界面

voidrecord();//记录数据

voidinsert(structstudent*stu);//插入数据

voiddisplay(structstudent*stu);//显示一个学生的信息

voiddisplayAll();//显示所有学生的信息

voidquery();//查询学生信息

voidquery_by_num();//按学号查询学生信息

voidquery_by_name();

voidreadData();//读取文件里学生的信息

voidwriteData();//向文件写入学生信息

voidfreeAll();//清空链表内容

voiddel();//删除学生信息

voidchange();//更改学生信息

voidsort();//排序

voiddevise(structstudent*p);//选择更改内容

intmain(void)

{

mainmenu();

return0;

}

//系统主菜单

voidmainmenu()

{

intchoice;

choice=-1;

readData();

printf("\t\t\t----------------------------------------------------\n");

printf("\t\t\t|欢迎使用通信工程专业学生信息管理系统|\n");

printf("\t\t\t----------------------------------------------------\n");

printf("\t\t\t本程序需要在当前目录下建立student.txt才可正常运行\n");

do

{

printf("\n\n\n");

printf("\t\t\t--------------------------------------------\n");

printf("\t\t\t通信工程专业学生信息管理系统|\n");

printf("\t\t\t--------------------------------------------\n");

printf("\t\t\t[1]----录入学生信息|\n");

printf("\t\t\t[2]----浏览学生信息|\n");

printf("\t\t\t[3]----查询学生信息|\n");

printf("\t\t\t[4]----删除学生信息|\n");

printf("\t\t\t[5]----修改学生信息|\n");

printf("\t\t\t[6]----排序|\n");

printf("\t\t\t[0]----退出系统|\n");

printf("\t\t\t--------------------------------------------\n");

printf("请输入您的选择");

scanf("%d",&choice);

switch(choice)

{

case0:

writeData();freeAll();exit(0);

case1:

record();break;

case2:

displayAll();break;

case3:

query();break;

case4:

del();break;

case5:

change();break;

case6:

sort();break;

default:

printf("\n无效选项!

");break;

}

}while(choice!

=0);

}

//录入学生信息

voidrecord()

{

structstudent*p0;

p0=(structstudent*)malloc(LEN);

printf("\t\t\t请输入学生的姓名:

");

scanf("%s",p0->name);

printf("\t\t\t请输入学生的学号:

");

scanf("%ld",&p0->num);

printf("\t\t\t请输入学生的性别:

");

scanf("%s",p0->sex);

printf("\t\t\t请输入学生的年龄:

");

scanf("%d",&p0->age);

printf("\t\t\t请输入学生的地址:

");

scanf("%s",p0->address);

printf("\t\t\t请输入学生的成绩:

");

scanf("%f",&p0->score);

insert(p0);

printf("\t\t\t该学生的信息为:

\n");

printf("\t\t\t-------------------------------------------------------------------------------\n");

printf("\t\t\t姓名\t学号\t\t年龄\t性别\t地址\t\t成绩\n");

display(p0);

}

voidinsert(structstudent*stu)

{

structstudent*p0,*p1,*p2;

p1=head;

p0=stu;

if(head==NULL)

{

head=p0;

p0->next=NULL;

}

else

{

while((p0->num>p1->num)&&(p1->next!

=NULL))

{

p2=p1;p1=p1->next;

}

if(p0->num<=p1->num)

{

if(head==p1)

head=p0;

else

p2->next=p0;

p0->next=p1;

}

else

{

p1->next=p0;

p0->next=NULL;

}

}

TOTAL_NUM++;

}

voiddisplay(structstudent*p)

{

printf("\t\t\t%s\t%ld\t\t%d\t%s\t%s\t\t%f\n",p->name,p->num,p->age,p->sex,p->address,p->score);

}

//浏览学生信息

voiddisplayAll()

{

structstudent*p;

printf("\t\t\t学生总数:

%d\n",TOTAL_NUM);

p=head;

if(head!

=NULL)

{

printf("\t\t\t姓名\t学号\t\t年龄\t性别\t地址\t\t成绩\n");

printf("\t\t\t-------------------------------------------------------------------------------\n");

do

{

display(p);

p=p->next;

}

while(p!

=NULL);

}

printf("\n");

}

voidquery()

{

intchoice;

choice=-1;

do

{

printf("\n");

printf("--------------------\n");

printf("|按学号查询请按1|\n");

printf("|按姓名查询请按2|\n");

printf("|取消请按0|\n");

printf("+--------------------+\n");

printf("请输入您的选择");

scanf("%d",&choice);

switch(choice)

{

case0:

return;

case1:

query_by_num();break;

case2:

query_by_name();break;

default:

printf("\n无效选项!

");break;

}

}

while(choice!

=0);

}

//按姓名查询学生信息

voidquery_by_name()

{

charname[20];

structstudent*p1;

printf("请输入学生的姓名");

scanf("%s",name);

if(head==NULL)

{printf("无学生记录\n");

return;

}

p1=head;

while(strcmp(name,p1->name)&&p1->next!

=NULL)

p1=p1->next;

if(!

strcmp(name,p1->name))

{

printf("\t\t\t姓名\t学号\t\t年龄\t性别\t地址\t\t成绩\n");

printf("\t\t\t-------------------------------------------------------------------------------\n");

display(p1);

}

else

printf("没有该学生记录请核对");

}

//按学号查询学生信息

voidquery_by_num()

{

intnum;

structstudent*p1;

printf("请输入学生的学号");

scanf("%ld",&num);

if(head==NULL)

{

printf("无学生记录\n");

return;

}

p1=head;

while(num!

=p1->num&&p1->next!

=NULL)

p1=p1->next;

if(num==p1->num)

{

printf("\t\t\t姓名\t学号\t\t年龄\t性别\t地址\t\t成绩\n");

printf("\t\t\t-------------------------------------------------------------------------------\n");

display(p1);

}

else

printf("\t\t\t没有该学生记录请核对");

}

//写入文件

voidwriteData()

{

FILE*fp;//文件指针

structstudent*p;

fp=fopen("1.txt","w");

if(!

fp)

{

printf("文件打开错误");

return;

}

fprintf(fp,"%d\n",TOTAL_NUM);

for(p=head;p!

=NULL;p=p->next)

{

fprintf(fp,"%s\t%ld\t%s\t%d\t%s\t%f\n",p->name,p->num,p->sex,p->age,p->address,p->score);

}

fclose(fp);

}

voidfreeAll()

{

structstudent*p1,*p2;

p1=p2=head;

while(p1)

{

p2=p1->next;

free(p1);

p1=p2;

}

}//读取文件

voidreadData()

{

FILE*fp;//文件指针

structstudent*p1,*p2;

fp=fopen("student.txt","r");

if(!

fp)

{

printf("文件打开错误");

return;

}

fscanf(fp,"%d\n",&TOTAL_NUM);

head=p1=p2=(structstudent*)malloc(LEN);

fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%f\n",p1->name,&p1->num,p1->sex,&p1->age,p1->address,&p1->score);

while(!

feof(fp))

{

p1=(structstudent*)malloc(LEN);

fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%f\n",p1->name,&p1->num,p1->sex,&p1->age,p1->address,&p1->score);

p2->next=p1;

p2=p1;

}

p2->next=NULL;

fclose(fp);

}

//删除学生信息

voiddel()

{

structstudent*p1,*p2;

longintnum;

if(head==NULL)

{

printf("无学生记录\n");

return;

}

printf("请输入您要删除的学生的学号");

scanf("%ld",&num);

p1=head;

while(num!

=p1->num&&p1->next!

=NULL)

{

p2=p1;

p1=p1->next;

}

if(num==p1->num)

{

if(p1==head)

head=p1->next;

else

p2->next=p1->next;

free(p1);

TOTAL_NUM--;

}

else

printf("没有该学生记录请核对\n");

}

voidsort()//排序模块。

将学生记录按学号从小到大排列。

用起泡排序算法实现

{

inti;

structstudent*ptr,*s=head,*p;

intcount=0,count1;

while(s)//统计链表结点个数

{

count++;

s=s->next;

}

for(i=1;i

{

ptr=head;

p=NULL;

count1=count-i;//用来控制每轮起泡排序的终点即每次把学号最小的结点移到倒数第i个结点

while(ptr&&ptr->next&&(count1--))

{

if(ptr->score>ptr->next->score)

{

s=ptr->next;

ptr->next=s->next;

if(p==NULL)//ptr处于队头时

head=s;

else

p->next=s;

s->next=ptr;

p=s;

}

else

{

ptr=ptr->next;

if(p==NULL)//ptr处于队头时

p=head;

else

p=p->next;

}

}

}

displayAll();

return;

}

voidchange()

{

structstudent*p1,*p2;

longintnum;

if(head==NULL)

{

printf("无学生记录\n");

return;

}

printf("请输入您要修改的学生的学号");

scanf("%ld",&num);

p1=head;

while(num!

=p1->num&&p1->next!

=NULL)

{

p2=p1;p1=p1->next;

}

if(num==p1->num)

devise(p1);

else

printf("没有该学生记录请核对\n");

}

voiddevise(structstudent*p)

{

intchoice;

choice=-1;

do

{

printf("请选择您要修改的学生的信息内容\n");

printf("+----------------------+\n");

printf("|姓名请按1|\n");

printf("|学号请按2|\n");

printf("|性别请按3|\n");

printf("|年龄请按4|\n");

printf("|地址请按5|\n");

printf("|爱好请按6|\n");

printf("|取消请按0|\n");

printf("+----------------------+\n");

printf("请输入您的选择");

scanf("%d",&choice);

switch(choice)

{

case0:

return;

case1:

printf("请输入新姓名");scanf("%s",p->name);break;

case2:

printf("请输入新学号");scanf("%d",&p->num);break;

case3:

printf("请输入新性别");scanf("%s",p->sex);break;

case4:

printf("请输入新年龄");scanf("%s",&p->age);break;

case5:

printf("请输入新地址");scanf("%s",p->address);break;

case6:

printf("请输入新成绩");scanf("%f",&p->score);break;

default:

printf("\n无效选项!

");break;

}

}

while(choice!

=0);

}

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

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2