c语言程序设计学生管理系统Word格式文档下载.docx
- 文档编号:18703419
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:19
- 大小:41.48KB
c语言程序设计学生管理系统Word格式文档下载.docx
《c语言程序设计学生管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言程序设计学生管理系统Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
voidsave(structstudent*head);
voidread();
voidtotalsort(structstudent*head);
voidaversort(structstudent*head);
voidBfindsort();
intall=0;
voidmain()
inti,n,m,num;
charord[10]="
student"
ord_1[10];
structstudent*p;
for(i=0;
i<
=3;
i++)
{
if(i==3)
exit(0);
printf("
请第%d次输入进入系统的指令:
"
i+1);
scanf("
%s"
ord_1);
if(strcmp(ord,ord_1)!
=0)
printf("
输入的指令有误请重新输入。
\n"
);
if(strcmp(ord,ord_1)==0)
break;
}
p=NULL;
loop_2:
printf("
输入系统的功能:
\n0、建立一个数据库;
\n1、添加与保存学生数据;
\n2、删除与保存学生数据;
\n3、修改与保存学生数据;
\n4、显示数据库的记录;
\n5、将数据进行排序;
\n6、查询指定成绩的人数:
loop:
scanf("
%d"
&
n);
if(n<
0||n>
6)
printf("
\n输入的选择有误请重新输入:
gotoloop;
if(n==2)
输入删除学生数据的学号:
num);
switch(n)
case0:
p=creat();
save(p);
read();
break;
case1:
p=add();
case2:
p=del(num);
case3:
p=alter();
case4:
case5:
{
printf("
输入选择排序的功能1、根据平均成绩;
2、根据总成绩:
loop_1:
m);
if(m<
1||m>
2)
{
printf("
gotoloop_1;
}
switch(m)
case1:
aversort(p);
case2:
totalsort(p);
}
}break;
case6:
Bfindsort();
loop_5:
输入你要进行的步骤:
1、返回上一菜单菜单;
2、退出程序。
scanf("
if(n<
1||n>
{
printf("
输入的选择有误,请重新输入:
gotoloop_5;
}
switch(n)
case1:
gotoloop_2;
case2:
}
structstudent*creat(void)
inti,n;
structstudent*head,*p,*q,*tail;
输入学生的个数:
head=NULL;
n;
all++;
p=(structstudent*)malloc(sizeof(structstudent));
if(head==NULL)
head=p;
else
tail->
next=p;
tail=p;
p->
next=NULL;
q=head;
输入学生的学号、名字、年级、专业、三门成绩:
%d%s%d%s%f%f%f"
p->
num,&
name,&
grade,&
major,&
score_1,&
score_2,&
score_3);
while(q->
next!
=NULL)
{
if(q->
num==p->
num)
输入的学生号错误请重新输入学生学号:
scanf("
gotoloop;
q=q->
next;
}
aver=(p->
score_1+p->
score_2+p->
score_3)/3;
total=p->
score_3;
}
return(head);
voidsave(structstudent*head)
FILE*fp;
if((fp=fopen("
student.txt"
"
wb"
))==NULL)
打开文件失败。
p=head;
while(p!
fwrite(p,sizeof(structstudent),1,fp);
p=p->
fclose(fp);
structstudent*del(intnum)
inti,n=0;
structstudent*p,*q,*head;
if(all==0)
数据库为空。
head=NULL;
return(head);
p=(structstudent*)malloc(sizeof(structstudent));
rb"
打开student.txt文件失败\n"
p!
=NULL;
p=(structstudent*)malloc(sizeof(structstudent));
fread(p,sizeof(structstudent),1,fp);
if(i==0)
head=p;
if(num==p->
if(p==head)
head=p->
else
q->
next=p->
n++;
all--;
q=p;
if(n==0)
没有%d这一学生号的学生!
num);
structstudent*add()
inti,j,m,n=0;
structstudent*p,*q,*temp,*head,*tail;
else
if((fp=fopen("
exit(0);
while(p->
p=(structstudent*)malloc(sizeof(structstudent));
fread(p,sizeof(structstudent),1,fp);
tail=p;
tail->
fclose(fp);
输入需要输入学生的个数:
j);
j;
temp=head;
while(temp!
if(temp->
gotoloop_1;
temp=temp->
p->
q=head;
n=1;
while(q->
q=q->
n++;
该链表一共有节点个数%d。
n);
loop:
输入将数据插入第几个节点后面。
if(m<
0||m>
n)
输入有误,请重新输入。
gotoloop;
if(m==0)
next=head;
while((m-1)!
q=q->
m--;
next=q->
q->
structstudent*alter()
intm,num,gra,n;
charmaj[10],name[10];
floatscore_1,score_2,score_3;
p=(structstudent*)malloc(sizeof(structstudent));
fread(p,sizeof(structstudent),1,fp);
head=p;
q=p;
loop_1:
输入修改学生数据的姓名:
name);
while(strcmp(name,p->
name)!
if(p==NULL)
没有该学生。
return(head);
请选择修改学生的具体数据:
\n1、学号;
2、年级;
3、专业;
\n4、成绩1;
5、成绩2;
6、成绩3:
if(m<
switch(m)
case1:
输入新的学号:
scanf("
while(q!
{
if(q->
num==num)
{
printf("
gotoloop_2;
}
}
p->
num=num;
输入新的年级:
gra);
p->
grade=gra;
break;
输入新的专业:
maj);
strcpy(p->
major,maj);
输入新的成绩:
%f"
score_1);
score_1=score_1;
p->
score_2);
score_2=score_2;
score_3=score_3;
选择你要执行的内容:
\n1、返回上一菜单\n2、返回主菜单\n3、修改另一学生的数据"
loop_5:
3)
gotoloop_5;
gotoloop;
gotoloop_1;
voidread()
structstudent*p,*head;
系统没有学生数据。
return;
打开student.txt文件的学生数据。
listnumnamegrademajorscore_1score_2score_3avertotal\n"
student%-3d%-4s%-5d%-5s%-7.2f%-7.2f%-7.2f%-4.2f%-5.2f\n"
num,p->
name,p->
grade,p->
major,p->
score_1,p->
score_2,p->
score_3,p->
aver,p->
total);
voidaversort(structstudent*head)
inttemp;
floattemp_1;
chartemp_2[10];
structstudent*p,*q,*i;
i=p->
while(i!
if(i->
aver>
q->
aver)
q=i;
i=i->
if(q!
=p)
temp=p->
num;
num=q->
num=temp;
strcpy(temp_2,p->
strcpy(p->
name,q->
strcpy(q->
name,temp_2);
grade;
grade=q->
grade=temp;
major);
major,q->
major,temp_2);
temp_1=p->
score_1;
score_1=q->
score_1=temp_1;
score_2;
score_2=q->
score_2=temp_1;
score_3=q->
score_3=temp_1;
aver;
aver=q->
aver=temp_1;
total;
total=q->
total=temp_1;
student_1.txt"
wb+"
打开student_1.txt文件失败\n"
rewind(fp);
读出由平均成绩排序出来的文件student_1.txt。
voidtotalsort(structstudent*head)
total>
total)
name)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 学生 管理 系统