C语言课程设计学生成绩管理系统分析方案Word文件下载.docx
《C语言课程设计学生成绩管理系统分析方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统分析方案Word文件下载.docx(15页珍藏版)》请在冰点文库上搜索。
可通过函数output()来实现,
3、排序模块:
可通过sort()来实现,通过比较总分的大小来排序;
4、插入模块:
可通过函数insert()来实现,其中通过学号的大小来比较,并且以此来排序;
5、删除模块:
可通过函数delete()来实现,其中通过输入学号来选择要删除的学生信息;
5、退出系统:
可通过一个函数exit()来实现,输入“0”即退出此程序。
三、程序流程图
四、程序清单
源程序:
#include<
stdlib.h>
stdio.h>
string.h>
#defineMAXN35
#defineMAX_NAME128
typedefstructstudent/*定义学生信息*/
{
intno。
/*定义学号*/
charname[MAX_NAME]。
/*定义姓名*/
charfield[MAX_NAME]。
/*定义专业*/
doublesubject1。
/*定义五个科目*/
doublesubject2。
doublesubject3。
doublesubject4。
doublesubject5。
doublemark_ave。
/*定义平均分*/
doublemark_tot。
/*定义总分*/
}STUDENT。
/*以下为输入信息程序*/
voidinput(STUDENT*data,int*len)
putchar('
\n'
)。
printf("
%s\n"
"
Pleaseenteranewrecord,ifneedtoexitthecurrentmenupleaseinput-1."
%s"
Form:
\nno"
Namefieldsubject1subject2subject3subject4subject5\n"
scanf("
%d"
&
no)。
while(no!
=-1)
{
data[*len].no=no。
scanf("
%s%s%lf%lf%lf%lf%lf"
data[*len].name,data[*len].field,&
data[*len].subject1,&
data[*len].subject2,&
data[*len].subject3,&
data[*len].subject4,&
data[*len].subject5)。
data[*len].mark_ave=(data[*len].subject1+data[*len].subject2+data[*len].subject3+data[*len].subject4+data[*len].subject5)/5.0。
data[*len].mark_tot=data[*len].subject1+data[*len].subject2+data[*len].subject3+data[*len].subject4+data[*len].subject5。
(*len)++。
/*指针加一*/
/*输入*/
}
}
/*以下为输出信息程序*/
voidoutput(STUDENT*data,intlen)
inti。
system("
cls"
/*定义系统菜单*/
%5s"
no"
/*输出菜单*/
%7s"
name"
field"
%10s"
subject1"
subject2"
subject3"
subject4"
subject5"
%12s"
mark_ave"
mark_tot"
for(i=0。
i<
80。
i++)
putchar('
='
for(i=0。
i<
len。
printf("
%5d"
data[i].no)。
%8s"
data[i].name)。
printf("
data[i].field)。
%8.1lf"
data[i].subject1)。
data[i].subject2)。
%10.1lf"
data[i].subject3)。
data[i].subject4)。
data[i].subject5)。
%12.1lf"
data[i].mark_ave)。
data[i].mark_tot)。
}
PressEntertocontinue."
getchar()。
}
/*以下为排序程序*/
voidsort(STUDENT*data,intlen)
inti,j,k。
STUDENTtemp。
for(i=0。
len-1。
i++)
for(k=i,j=i+1。
j<
len。
j++)
if(data[k].mark_tot<
data[j].mark_tot)
k=j。
if(k!
=i)
{
temp=data[i]。
data[i]=data[k]。
data[k]=temp。
}
/*以下为添加程序*/
voidinsert(STUDENT*data,int*len)
intno,pos。
doublesubject1,subject2,subject3,subject4,subject5,mark_ave,mark_tot。
lab:
Enterthenewrecord,pleaseinputfromthecurrentmenu-1."
Form:
\nno"
if(no==-1)return。
data[*len].no=no。
name,field,&
subject1,&
subject2,&
subject3,&
subject4,&
subject5)。
mark_ave=(subject1+subject2+subject3+subject4+subject5)/5.0。
mark_tot=subject1+subject2+subject3+subject4+subject5。
pos=0。
while((data[pos].mark_tot<
mark_tot)&
&
(pos<
*len))
pos++。
for(i=*len-1。
i>
=pos。
i--)
data[i+1]=data[i]。
data[pos].no=no。
strcpy(data[pos].name,name)。
strcpy(data[pos].field,field)。
data[pos].subject1=subject1。
data[pos].subject2=subject2。
data[pos].subject3=subject3。
data[pos].subject4=subject4。
data[pos].subject5=subject5。
data[pos].mark_ave=mark_ave。
data[pos].mark_tot=mark_tot。
(*len)++。
gotolab。
/*以下为删除程序*/
voiddelete_item(STUDENT*data,int*len)
intno,i,pos。
pos=0。
Thestudentsneedtodeletetheinputofstudentid,pleaseinputfromthecurrentmenu-1."
if(no==-1)
return。
while((data[pos].no!
=no)&
pos=pos+1。
if(pos>
=*len)
Didnotfindthestudentsneedtodelete"
gotolab。
else
for(i=pos+1。
i<
*len。
data[i-1]=data[i]。
*len=*len-1。
if(*len==0)
{
printf("
Norecords,pleasepressEntertoreturn."
getchar()。
return。
}
/*以下为显示信息程序*/
voidpaint()
\n%49s\n"
ScoreManageSystem\n"
1Inputdata2Outputdata\n"
3sort4Insert\n"
5delete0Quit\n"
=79。
i++)
Enternumfrom1to5:
"
/*以下为主程序*/
voidmain()
STUDENTdata[MAXN]。
intlen=0。
chara。
paint()。
%c"
a)。
while(a!
='
0'
)
switch(a)
case'
1'
:
input(data,&
len)。
break。
2'
output(data,len)。
3'
sort(data,len)。
4'
insert(data,&
5'
delete_item(data,&
default:
if(a!
)printf("
InputError!
if(a!
)paint()。
五、测试数据
运行源程序,结果如下:
六、问题小结
在设计过程中,遇到的问题有:
1、如何排序,在排序方法的选择上出现问题,最终在查阅课本、相互比较之下得到了解决;
2、所学的函数实现不了系统要求的功能,通过查阅书籍、询问同学得到了解决,如使用了system("
)来定义系统菜单等。
七、收获和体会
通过此次课程设计,巩固了对for循环、switch结构、函数调用、指针等已学过的重要知识点的掌握;
了解并学习了system("
),goto语句,掌握了新知识;
提高了分析解决问题的能力。
八、参考资料:
1)谭浩强,C程序设计教程,清华大学出版社,2007年
2)赵永哲,李雄飞,戴秀英编著,《C语言程序设计》,科学出版社,2003年
3)夏宽理,赵子正编著,《C语言程序设计》,中国铁道出版社,2006年
物理与电子信息学院课程设计评定意见
指导教师评语
主要内容包括:
设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。
成绩:
签名:
年 月 日