c语言学生信息管理系统课程设计.docx
《c语言学生信息管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《c语言学生信息管理系统课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
![c语言学生信息管理系统课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/26/fc44184e-463b-409f-a069-26897af80f1b/fc44184e-463b-409f-a069-26897af80f1b1.gif)
c语言学生信息管理系统课程设计
学生课程设计报告
课程设计题目:
学生信息管理系统
一、课程设计内容
通过一个系统窗口,选择要执行的功能:
(1)成绩的录入,依次输入学生的个数,学号,姓名三门成绩;
(2)成绩的查询(学号或姓名);
(3)成绩统计(平均成绩);
(4)成绩按平均分排名;
(5)任意键退出
二、技术路线
利用C语言编写程序,构造结构体,构造及调用函数实现这些功能。
三、设计与实现
/***************************头文件*********************************/
#include〈stdio。
h〉
#includeh>
#include〈stdlib。
h>
/***************************常量***********************************/
#defineMENU_NUM7
#defineN3
#defineMAX100//记录的最大数量
/****************************结构体********************************/
structstudent
{
charno[10];/*学号由10个字符组成*/
charname[15];/*学生姓名*/
floatscore[N];/*各门课成绩*/
floatsum;/*总分*/
floataverage;/*平均分*/
};
/********************************全局变量*************************/
intcount;//记录学生总人数
structstudentstud[MAX];//记录学生信息
/********************************函数声明*************************/
voidinput();//输入学生信息
voidoutput();//输出学生信息
voidPrintMenu();//显示菜单
voidcomputer();//计算学生成绩
voidfind();//根据学号或姓名查询成绩
voidsort();//成绩排名
intcmp(constvoid*a,constvoid*b);//排序规则
/***********************************主函数************************/
voidmain()
{
intchoose;
count=0;
while
(1)
{
PrintMenu();
scanf("%d",&choose);
switch(choose)
{
case1:
input();//输入成绩
break;
case2:
find();//查询成绩
break;
case3:
computer();//统计成绩
break;
case4:
//sort();//按成绩排序,按名次输出成绩
qsort(stud,count,sizeof(structstudent),cmp);//调用库函数中的排序方法
output();
break;
case5:
exit(0);
}
printf(”\n\n");
}
}
/*********************************排序规则***********************/
intcmp(constvoid*a,constvoid*b)
{
structstudent*aa=(structstudent*)a;
structstudent*bb=(structstudent*)b;
if(aa—〉sum!
=bb-〉sum)
{
returnaa—〉sumsum?
1:
—1;
}
else
{
if(aa—>score[0]!
=bb—〉score[0])
returnaa->score[0]score[0]?
1:
-1;
returnaa->score[2]1:
-1;
}
return0;
}
/*****************************************************************
*函数名:
PrintMenu
*
*描述:
显示操作菜单
*
*入口参数:
无
*
*出口参数:
无
******************************************************************/
voidPrintMenu()
{
printf("———-—-———-—------——-————----——-—-----—\n”);
printf("|学生成绩管理系统|\n”);
printf("|1。
。
。
.成绩录入|\n");
printf(”|2.。
.。
成绩查询(学号或姓名)|\n”);
printf(”|3.。
..成绩统计(平均成绩)|\n");
printf("|4.。
。
.成绩排名|\n”);
printf("|5...。
任意键退出|\n”);
printf(”-—---—-———-———-———-————----—-————---——”);
printf(”\n”);
printf(”\n”);
printf(”请输入您要进行的操作:
");
}
/*****************************************************************
*函数名:
input
*
*描述:
输入学生信息
*
*入口参数:
无
*
*出口参数:
无
******************************************************************/
voidinput()
{
intn,i;
floattemp;
printf("请输入要录入的学生的人数:
”);
scanf(”%d",&n);
for(i=0;i{
printf("输入第%d个学生信息\n",i+1);
printf("学号:
");
scanf(”%s",stud[count+i]。
no);
printf(”姓名:
");
scanf("%s”,stud[count+i]。
name);
printf("成绩1:
");
scanf(”%f”,&stud[count+i].score[0]);
printf("成绩2:
”);
scanf(”%f”,&stud[count+i].score[1]);
printf(”成绩3:
”);
scanf(”%f”,&stud[count+i].score[2]);
}
count+=n;
}
/*****************************************************************
*函数名:
find
*
*描述:
根据学号或姓名查询成绩
*
*入口参数:
无
*
*出口参数:
无
******************************************************************/
voidfind()
{
inti;
charch[15];
printf("请输入学号或姓名:
");
scanf(”%s”,ch);
printf("--—-———-—---—-————--—-—--—-—-—-—-———--———--——-------———-\n”);
printf(”|学号|姓名|成绩1|成绩2|成绩3|总分|平均分|\n”);
for(i=0;i{
if(!
strcmp(ch,stud[i]。
no)||!
strcmp(ch,stud[i]。
name))
{
i]。
score[2],stud[i].sum,stud[i].average);
printf("--—---—--———-————---————-—-——-----——-—-——---———-——-———--\n");
return;
}
}
printf(”没有找到该学生的信息!
\n");
printf(”—-—-—------——-——--—---—---————-—----—--———--—--———---———\n”);
}
/*****************************************************************
*函数名:
computer
*
*描述:
计算学生总成绩和平均成绩
*
*入口参数:
无
*
*出口参数:
无
******************************************************************/
voidcomputer()
{
inti;
for(i=0;i{
stud[i]。
sum=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];
stud[i].average=(stud[i]。
score[0]+stud[i]。
score[1]+stud[i]。
score[2])/N;
}
output();
}
/*****************************************************************
*函数名:
output
*
*描述:
输出学生所有信息
*
*入口参数:
无
*
*出口参数:
无
******************************************************************/
voidoutput()
{
inti;
printf(”——-——-——-—-—-———---————---————---——-————--—-—-—-————————\n”);
printf("|学号|姓名|成绩1|成绩2|成绩3|总分|平均分|\n”);
stud[i].no,stud[i].name,stud[i].score[0],stud[i]。
score[1],stud[i]。
score[2],stud[i].sum,stud[i].average);
}
printf(”--———————-—---—--———---—--——————-—--——-————————-———--—-—\n”);
}
/*****************************************************************
*函数名:
sort
*
*描述:
排序
*
*入口参数:
无
*
*出口参数:
无
******************************************************************/
voidsort()
{
for(i=0;i{
stud[i]。
sum=stud[i].score[0]+stud[i].score[1]+stud[i]。
score[2];
stud[i]。
average=(stud[i].score[0]+stud[i].score[1]+stud[i].score[2])/3;
k=i;
for(j=i+1;j〈count;j++)
{
if(stud[k]。
sumsum)
{
k=j;
}
}
if(k!
=i)
{
temp=stud[i];
stud[i]=stud[k];
stud[k]=temp;
}
}
printf("学生成绩排名\n");
printf(”按名次\n");
output();
}
四、测试结果
(1)
(2)
(3)
(4)
(5)
五、感想和体会
通过这次课程设计,前期的查找资料和学习探索,后期的设计与测试,终于完成了这次设计,我们队的每个人表现得很积极,充分体会到了团队合作力量的强大。
这一周的设计,不仅让我们对专业知识有了更深的了解,还提高了我们实践能力和钻研努力的品质。
总之,这次的成果将会激励着我们探索出更多新的东西,为以后的路上积累了经验。