大一数据结构c语言课程设计Word格式文档下载.docx
《大一数据结构c语言课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《大一数据结构c语言课程设计Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
//查询
voidgenggai(structstudent*h);
//更改主
voidgxuehao(structstudent*p);
//改学号
voidgname(structstudent*p);
//改姓名
voidggaoshu(structstudent*p);
//改高数成绩
voidgyingyu(structstudent*p);
//改英语成绩
voidgc(structstudent*p);
//改c语言成绩
voidtongji();
//统计主
voidmax_average(structstudent*h);
//统计平均分最高
voidmax_gaoshu(structstudent*h);
//统计高数最高
voidmax_yingyu(structstudent*h);
//统计英语最高
voidmax_c(structstudent*h);
//统计c语言最高
voidbujige_average(structstudent*h);
//统计平均分不及格学生信息
voidbujige_gaoshu(structstudent*h);
//统计高数不及格学生信息
voidbujige_yingyu(structstudent*h);
//统计英语不及格学生信息
voidbujige_c(structstudent*h);
//同意c语言不及格学生信息
structstudent*creat(intn);
//创建链表
voidorder_two(structstudent*p,structstudent*q);
//调换位置
voidorder(structstudent*h);
//排序
源程序
#include"
stdio.h"
string.h"
conio.h"
#include<
stdlib.h>
#defineN30
#defineM3
typedefstructstudent
{
charnumber[10];
charname[20];
floatscore[M];
floataver;
floattotal;
}STU;
STUstu[N];
intn;
voidinputscore(void);
voidsavescore(void);
voidavergescore(void);
voidtotal(void);
voidlookscore(void);
voidsearchscore(void);
voidstatistic(void);
voidadd(void);
voidmodify(void);
voiddelscore(void);
voidmenu(void);
intmain()
shortintflag=0;
menu();
do
{
flag=1;
switch(getch())
case'
1'
:
inputscore();
break;
/*输入成绩*/
2'
lookscore();
/*查看成绩*/
3'
searchscore();
/*查找成绩*/
4'
statistic();
/*成绩统计*/
5'
modify();
/*修改成绩*/
6'
add();
/*添加成绩*/
7'
delscore();
/*删除成绩*/
8'
savescore();
/*保存成绩*/
9'
exit(0);
/*退出成绩*/
default:
printf("
输入有误\n"
);
}
printf("
按任意键继续\n"
getch();
}while(flag==1);
}
voidmenu(void)
system("
cls"
\t\t\n"
printf("
\t\t学生信息管理系统\n"
\t\t1.输入成绩2.查看成绩并排序\n"
\t\t3.查询学生成绩4.成绩统计\n"
\t\t5.修改成绩6.添加成绩\n"
\t\t7.删除成绩8.保存成绩\n"
\t\t9.退出系统\n"
\t\t请您选择(0-9)\n"
/************输入各个同学的学生信息***********/
voidinputscore(void)
inti,j;
请输入学生总数:
\n"
scanf("
%d"
&
n);
for(i=0;
i<
n;
i++)
请输入第%d个学生的学号:
i+1);
%s"
stu[i].number);
scanf("
stu[i].name);
请输入学生成绩:
高数\tC语言\t大英\n"
for(j=0;
j<
M;
j++)
%f"
stu[i].score[j]);
成功输入\n"
/***************计算各个同学的总分************/
voidtotal(void)
inti,j;
stu[i].total=0;
stu[i].total+=stu[i].score[j];
/********************计算各个同学的平均分*************/
voidavergescore(void)
stu[i].aver=0;
stu[i].aver+=stu[i].score[j];
stu[i].aver=stu[i].aver/M;
/************查看学生成绩及根据平均分对学生排序************/
voidlookscore(void)
inti,j,k;
STUt;
total();
avergescore();
n-1;
for(k=i,j=i+1;
if(stu[j].aver>
stu[k].aver)
k=j;
if(k!
=j)
t=stu[k];
stu[k]=stu[i];
stu[i]=t;
名次\t学号\t\t姓名\t高数\tC语言\t大英\t总分\t平均分\n"
for(i=0;
%d\t%s\t\t%s\t"
i+1,stu[i].number,stu[i].name);
%4.2f\t"
stu[i].score[j]);
//输出成绩
stu[i].total);
stu[i].aver);
/**********************通过输入学号查找学生成绩**********************/
voidsearchscore(void)
chara[10];
请输入需查询的学生学号\n"
a);
{if(strcmp(a,stu[i].number)==0)//比较两个字符串
{printf("
break;
/*找到该学生成绩信息后跳出for循环*/
else
未找到该学生信息\n"
/************统计学生成绩信息,平均分及格率,优秀率*************/
voidstatistic(void)
STU*p=stu;
floatcount=0.0,sum=0.0;
{sum+=(p+i)->
aver;
该班级平均分为%4.2f\n"
sum/n);
/*平均分计算*/
{if((p+i)->
aver>
=60)
count++;
}
该班级及格率为%4.2f%%\n"
count/n*100);
/*及格率计算*/
count=0.0;
=90)
该班级的优秀率为%4.2f%%\n"
/*优秀率计算*/
平均分低于60的学生名单\n"
if(stu[i].aver<
60)
%s\n"
}/*统计不及格学生名单*/
/****************修改学生成绩*************/
voidmodify(void)
{chara[10];
请输入需要修改成绩的学生学号\n"
{if(strcmp(a,stu[i].number)==0)
{printf("
%d\t%s\t%s\t"
请重新输入该学生的学号:
请重新输入学生成绩:
/*找到该学生成绩后进行后进行修改,跳出for循环*/
修改成功\n"
break;
请确认该学生是否为本班学生!
/**********************添加学生成绩*************************/
voidadd(void)
inta,i,j;
system("
请输入新增加的学生人数:
a);
n=n+a;
for(i=n-a;
请输入学生%d的学号:
请输入学生成绩:
添加成功\n"
/*******************删除学生成绩********************/
voiddelscore(void)
{inti,j,c;
charm,a[10];
请输入学生学号\n"
for(j=0;
%4.2f"
c=i;
是否删除该学生成绩(y/n)\n"
m);
if(m=='
y'
)
{
for(i=c;
stu[i]=stu[i+1];
/*结构体整体赋值将最后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/
n=n-1;
/*删除该学生信息后学生总数减一*/
printf("
删除成绩成功\n"
else
删除成绩失败\n"
/***********************保存学生成绩*************************/
voidsavescore(void)
FILE*fp;
inti,flag=1;
charm;
puts("
是否保存学生成绩(y/n)"
if(m=='
{if((fp=fopen("
score.dat"
"
wb"
))==NULL)
文件打开失败\n"
return;
}
for(i=0;
if(fwrite(&
stu[i],sizeof(structstudent),1,fp)!
=1)
保存失败\n"
flag=0;
if(flag==1)
保存成功!
fclose(fp);