C语言课程设计学生成绩管理系统分析方案.docx

上传人:b****1 文档编号:207260 上传时间:2023-04-28 格式:DOCX 页数:15 大小:121.48KB
下载 相关 举报
C语言课程设计学生成绩管理系统分析方案.docx_第1页
第1页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第2页
第2页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第3页
第3页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第4页
第4页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第5页
第5页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第6页
第6页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第7页
第7页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第8页
第8页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第9页
第9页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第10页
第10页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第11页
第11页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第12页
第12页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第13页
第13页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第14页
第14页 / 共15页
C语言课程设计学生成绩管理系统分析方案.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计学生成绩管理系统分析方案.docx

《C语言课程设计学生成绩管理系统分析方案.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统分析方案.docx(15页珍藏版)》请在冰点文库上搜索。

C语言课程设计学生成绩管理系统分析方案.docx

C语言课程设计学生成绩管理系统分析方案

《课程名称》

课程设计报告

题目

学生成绩管理系统

学号

姓名

年级专业

2009电子信息工程

同组人员

指导教师

完成日期

2010

06

30

安徽师范大学物理与电子信息学院

CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity

一、问题描述和基本要求

1、每条记录包括:

学号、姓名、专业和5门课程的分数;

2、能够实现添加、删除、修改功能;

3、能够计算某学生的总分和平均分;

4、能够照总分排序输出。

二、系统分析和设计

仔细阅读系统要求,首先将此系统化分为如下模块:

1、输入初始的学生信息:

可用函数input()来实现此操作;

2、输出学生的信息以及成绩:

可通过函数output()来实现,

3、排序模块:

可通过sort()来实现,通过比较总分的大小来排序;

4、插入模块:

可通过函数insert()来实现,其中通过学号的大小来比较,并且以此来排序;

5、删除模块:

可通过函数delete()来实现,其中通过输入学号来选择要删除的学生信息;

5、退出系统:

可通过一个函数exit()来实现,输入“0”即退出此程序。

三、程序流程图

四、程序清单

源程序:

#include

#include

#include

#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)

{

intno。

putchar('\n')。

printf("%s\n","Pleaseenteranewrecord,ifneedtoexitthecurrentmenupleaseinput-1.")。

printf("%s","Form:

\nno")。

printf("%s","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)++。

/*指针加一*/

scanf("%d",&no)。

/*输入*/

}

}

/*以下为输出信息程序*/

voidoutput(STUDENT*data,intlen)

{

inti。

system("cls")。

/*定义系统菜单*/

printf("%5s","no")。

/*输出菜单*/

printf("%7s","name")。

printf("%7s","field")。

printf("%10s","subject1")。

printf("%10s","subject2")。

printf("%10s","subject3")。

printf("%10s","subject4")。

printf("%10s","subject5")。

printf("%12s","mark_ave")。

printf("%10s","mark_tot")。

putchar('\n')。

for(i=0。

i<80。

i++)

putchar('=')。

putchar('\n')。

for(i=0。

i

i++)

{

printf("%5d",data[i].no)。

printf("%8s",data[i].name)。

printf("%8s",data[i].field)。

printf("%8.1lf",data[i].subject1)。

printf("%8.1lf",data[i].subject2)。

printf("%10.1lf",data[i].subject3)。

printf("%10.1lf",data[i].subject4)。

printf("%10.1lf",data[i].subject5)。

printf("%12.1lf",data[i].mark_ave)。

printf("%10.1lf",data[i].mark_tot)。

putchar('\n')。

}

for(i=0。

i<80。

i++)

putchar('=')。

putchar('\n')。

printf("PressEntertocontinue.")。

getchar()。

getchar()。

}

/*以下为排序程序*/

voidsort(STUDENT*data,intlen)

{

inti,j,k。

STUDENTtemp。

for(i=0。

i

i++)

{

for(k=i,j=i+1。

j

j++)

if(data[k].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。

inti。

charname[MAX_NAME]。

charfield[MAX_NAME]。

lab:

printf("%s\n","Enterthenewrecord,pleaseinputfromthecurrentmenu-1.")。

printf("%s","Form:

\nno")。

printf("%s","Namefieldsubject1subject2subject3subject4subject5\n")。

scanf("%d",&no)。

if(no==-1)return。

data[*len].no=no。

scanf("%s%s%lf%lf%lf%lf%lf",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

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。

lab:

pos=0。

printf("%s\n","Thestudentsneedtodeletetheinputofstudentid,pleaseinputfromthecurrentmenu-1.")。

scanf("%d",&no)。

if(no==-1)

return。

while((data[pos].no!

=no)&&(pos<*len))

pos=pos+1。

if(pos>=*len)

{

printf("%s\n","Didnotfindthestudentsneedtodelete")。

gotolab。

}

else

{

for(i=pos+1。

i<*len。

i++)

data[i-1]=data[i]。

*len=*len-1。

if(*len==0)

{

printf("%s\n","Norecords,pleasepressEntertoreturn.")。

getchar()。

getchar()。

return。

}

gotolab。

}

}

/*以下为显示信息程序*/

voidpaint()

{

inti。

system("cls")。

printf("\n%49s\n","ScoreManageSystem\n")。

for(i=0。

i<80。

i++)

putchar('=')。

putchar('\n')。

printf("1Inputdata2Outputdata\n")。

printf("3sort4Insert\n")。

printf("5delete0Quit\n")。

for(i=0。

i<=79。

i++)

putchar('=')。

putchar('\n')。

printf("%s\n","Enternumfrom1to5:

")。

}

/*以下为主程序*/

voidmain()

{

STUDENTdata[MAXN]。

intlen=0。

chara。

paint()。

scanf("%c",&a)。

while(a!

='0')

{

switch(a)

{

case'1':

input(data,&len)。

break。

case'2':

output(data,len)。

break。

case'3':

sort(data,len)。

break。

case'4':

insert(data,&len)。

break。

case'5':

delete_item(data,&len)。

break。

default:

if(a!

='\n')printf("%s\n","InputError!

")。

break。

}

if(a!

='\n')paint()。

scanf("%c",&a)。

}

}

五、测试数据

运行源程序,结果如下:

六、问题小结

在设计过程中,遇到的问题有:

1、如何排序,在排序方法的选择上出现问题,最终在查阅课本、相互比较之下得到了解决;

2、所学的函数实现不了系统要求的功能,通过查阅书籍、询问同学得到了解决,如使用了system("cls")来定义系统菜单等。

七、收获和体会

通过此次课程设计,巩固了对for循环、switch结构、函数调用、指针等已学过的重要知识点的掌握;了解并学习了system("cls"),goto语句,掌握了新知识;提高了分析解决问题的能力。

八、参考资料:

1)谭浩强,C程序设计教程,清华大学出版社,2007年

2)赵永哲,李雄飞,戴秀英编著,《C语言程序设计》,科学出版社,2003年

3)夏宽理,赵子正编著,《C语言程序设计》,中国铁道出版社,2006年

物理与电子信息学院课程设计评定意见

指导教师评语

主要内容包括:

设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。

成绩:

签名:

年 月 日

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

当前位置:首页 > 自然科学 > 物理

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

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