C语言课程方案设计书学生综合测评系统.docx

上传人:b****3 文档编号:3851395 上传时间:2022-11-25 格式:DOCX 页数:28 大小:43.16KB
下载 相关 举报
C语言课程方案设计书学生综合测评系统.docx_第1页
第1页 / 共28页
C语言课程方案设计书学生综合测评系统.docx_第2页
第2页 / 共28页
C语言课程方案设计书学生综合测评系统.docx_第3页
第3页 / 共28页
C语言课程方案设计书学生综合测评系统.docx_第4页
第4页 / 共28页
C语言课程方案设计书学生综合测评系统.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C语言课程方案设计书学生综合测评系统.docx

《C语言课程方案设计书学生综合测评系统.docx》由会员分享,可在线阅读,更多相关《C语言课程方案设计书学生综合测评系统.docx(28页珍藏版)》请在冰豆网上搜索。

C语言课程方案设计书学生综合测评系统.docx

C语言课程方案设计书学生综合测评系统

封面

作者:

PanHongliang

仅供个人学习

注意:

本文档可供大家参考,学习。

请大家借鉴优点,批评不足。

请各位湖工学弟,学妹不要署名后直接打印,应付老师。

一定要弄懂代码,这对大家的代码编写技术很有好处。

虽然现在完全自主编写有些困难,但是也要有一个迎难而上的心态。

祝大家学业有成!

 

课程设计报告

课程名称C语言程序设计

课题名称学生综合测评系统

专业

班级

学号

姓名

指导教师

任务书下达日期年月日

任务完成日期年月日

目录

一、设计内容与设计要求3

学生综合测评系统3

一、问题描述:

3

二、功能描述:

3

三、算法提示:

3

四、测试数据:

4

二.设计要求:

4

三.进度安排4

四.总体设计方案5

1.总体流程图5

2.程序主要函数5

1.voidinti()初始化函数5

2.welcome()函数5

3.voidInputInfo()录入学生信息6

4.voidDeleteInfo()删除信息7

5.voidpaiming1()/voidpaiming2()成绩排名7

6.voidViewAll()浏览全部学生信息7

7.voidclean()清除所有信息8

8.voidPaimingView()查询排名8

3.程序其他函数8

A.信息存盘(结构体)8

B.读取信息(结构体)8

C.信息存盘(整型)8

D.读取信息(整型)8

E.学号检索9

五.程序源代码10

六.收获及体会22

七.参考文献22

计算机与通信学院课程设计评分表23

课程名称:

《C语言程序设计》23

一、设计内容与设计要求

学生综合测评系统

一、问题描述:

每个学生的信息为:

学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。

考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。

二、功能描述:

A、学生信息处理

(1)输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。

提示:

学生信息可先输入到数组中,排序后可写到文件中。

(2)插入(修改)同学信息:

提示:

先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,

(3)删除同学信息:

提示:

输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。

(4)浏览学生信息:

  提示:

打开文件,显示该文件的学生信息。

B、学生数据处理:

(1)按考试科目录入学生成绩并且按公式:

考试成绩=(语文+数学+外语)/3计算考试成绩,并计算考试名次,提示:

先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。

(2)学生测评数据输入并计算综合测评总分及名次。

提示:

综合测评总分=(考试成绩)*0.6+(同学互评分)*0.1+品德成绩*0.1+任课老师评分*0.2。

(3)学生数据管理

提示:

输入学号,读出并显示该同学信息,输入新数据,将改后信息写入文件

(4)学生数据查询:

提示:

输入学号或其他信息,即读出所有数据信息,并显示出来。

C、学生综合信息输出

提示:

输出学生信息到屏幕。

三、算法提示:

1、数据结构:

结构体类型数组

2、数据库结构:

下表构成该系统的基本数据库。

学号

姓名

考试成绩

评分

Char

Char

struct

int

四、测试数据:

学生人数:

N=10

二.设计要求:

掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。

(1)按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调试和运行。

源程序及编译生成各文件均保存;

(2)按本任务书的要求,编写《课程设计报告》(Word文档格式)。

并用A4的复印纸打印并装订;

(3)在2013年1月5日之前,请各班学习委员收齐课程设计报告交老师。

附:

课程设计报告内容要求如下:

封面

课程设计任务书

课程设计主文档

内容如下:

1、课程设计题目

2、课程设计目的

3、课程设计主要任务

4、设计环境

5、总体设计方案的选定

(主控模块和各子模块的设计方法及框图)

6、源程序清单

7、收获及体会

参考资料

四、报告内容要求用宋体五号字,主标题用黑三号、一级标题用黑四号字,二级标题用宋体小四号字加粗,要求用A4纸张打印出来。

课程设计说明书装订顺序:

封面、任务书、正文、附件(A4大小的图纸及程序清单)。

三.进度安排

第18周,具体安排如下:

星期

时间

班级

内容

地点

第17周

任务布置

第18周星期三

第一次上机

机房

第18周星期四

第二次上机

机房

第18周星期五

第三次上机与答辩

机房

湖南工程学院计算机与通信学院

年月日

四.总体设计方案

1.总体流程图

2.程序主要函数

1.voidinti()初始化函数

初始化函数用于从硬盘中加载学生数据和学生数目。

首先,从硬盘读取counter.dat的数据。

若不存在counter.dat则说明程序第一次运行。

创建counter.dat和student_data.dat,把counter的初始值赋为1。

若存在counter.dat.则读取其中数据,把数据赋给变量counter,这个值为已储存的学生信息数量。

这个counter变量就是计数器变量。

用来计量学生信息数量的变化。

2.welcome()函数

Welcome函数用来显示选项菜单,并将用户所选的序号返回。

主函数中的变量select接收到welcome的返回值。

通过开关语句,选择需要使用的功能。

3.voidInputInfo()录入学生信息

输入学生的信息。

学生信息由以下结构体定义。

structstudent_info

{

intnum。

//学号

charname[6]。

//姓名

charsex[5]。

//性别

charadress[20]。

//家庭住址

chartel[10]。

//电话

intchinese,math,english,huping,pingde,jiaoping,paiming1,paiming2。

//语文数学英语互评品德教评

doubleave,zhongping。

//平均综合

}。

InputInfo调用input函数。

在input函数中的局部变量stu中录入数据,然后input函数返回stu给InputInfo中的结构体数组的counter号元素。

然后,InputInfo通过SortInfo()。

SaveStruct()。

SaveInt()。

将数组按学号排序,并存储结构体student和counter。

4.voidDeleteInfo()删除信息

删除信息函数,从要删除位信息开始,前位用后一位覆盖,直到数组结束。

并同时将counter减1。

之后调用SaveStruct()。

SaveInt()。

储存student结构体数组和counter计数变量。

5.voidpaiming1()/voidpaiming2()成绩排名

排名函数

将student的给个元素的首地址储存在p[N]指针数组中。

通过冒泡法将指针数组排序。

接下来,按顺序把指针数组顺序,把排名赋给student的成员paiming1,paiming2。

冒泡排序

for(i=0。

i

i++)

for(j=i+1。

j

j++)

{

if(p[i]->aveave)

{

temp=p[i]。

p[i]=p[j]。

p[j]=temp。

}

}

排名名词给每一个student的成员paiming1或paiming2。

for(i=0。

i

i++)

p[i]->paiming1=i+1。

6.voidViewAll()浏览全部学生信息

voidViewAll()

{

inti。

for(i=0。

i

i++)

{

ViewInfo(&student[i])。

printf("\n")。

}

getchar()。

printf("回车键返回...")。

getchar()。

system("cls")。

}

7.voidclean()清除所有信息

counter计数变量清零,counter.dat清空,student_info.dat清空。

8.voidPaimingView()查询排名

根据输入的学号查询排名

3.程序其他函数

A.信息存盘(结构体)

voidSaveStruct(structstudent_info*sp,intsize,intn,charfilename[20])

{

FILE*fp。

fp=fopen(filename,"wb")。

fwrite(sp,size,n,fp)。

fclose(fp)。

}

B.读取信息(结构体)

voidLoadStruct(structstudent_info*sp,intsize,intn,charfilename[20])

{

}

C.信息存盘(整型)

voidSaveInt(int*p,intsize,intn,charfilename[20])

{

FILE*fp。

fp=fopen(filename,"wb")。

fwrite(p,size,n,fp)。

fclose(fp)。

}

D.读取信息(整型)

voidLoadInt(int*p,intsize,intn,charfilename[20])

{

}

E.学号检索

intNumExist(structstudent_infostudent[],intnum)

{

inti。

for(i=0。

i

i++)

{

if(student[i].num==num)

returni。

}

return-1。

}

检索学号所在的元素下表,若学号存在,则返回该学号所在下标。

若学号不存在,则返回-1。

程序截图:

五.程序源代码

学生综合测评系统

2013年1月3日

#include

#include

#defineN100

//----------------------------------------函数声明----------------------------------------

voidinit()。

charwelcome()。

voidInputInfo()。

voidview()。

voidxiugai()。

voidDeleteInfo()。

voidpaiming1(structstudent_infostudent[])。

voidpaiming2(structstudent_infostudent[])。

voidViewAll()。

voidclean()。

voidPaimingView()。

voidexit()。

structstudent_infoinput()。

voidSortInfo(structstudent_infostudent[])。

voidViewInfo(structstudent_info*sp)。

voidSaveStruct(structstudent_info*sp,intsize,intn,charfilename[20])。

voidLoadStruct(structstudent_info*sp,intsize,intn,charfilename[20])。

voidSaveInt(int*p,intsize,intn,charfilename[20])。

voidLoadInt(int*p,intsize,intn,charfilename[20])。

intNumExist(structstudent_infostudent[],intnum)。

//---------------------------------定义学生信息结构体----------------------------------------

structstudent_info

{

intnum。

//学号

charname[6]。

//姓名

charsex[5]。

//性别

charadress[20]。

//家庭住址

chartel[10]。

//电话

intchinese,math,english,huping,pingde,jiaoping,paiming1,paiming2。

//语文数学英语互评品德教评

doubleave,zhongping。

//平均综合

//每个学生的信息为:

学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、

//考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。

//考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。

}。

//---------------------------------定义全局结构体数据----------------------------------------

structstudent_infostudent[N]。

intcounter,PM。

//----------------------------------------------主函数----------------------------------------

voidmain()

{

charselect。

init()。

//调用初始化函数

while

(1)

{

select=welcome()。

switch(select)

{

case'1':

system("cls")。

InputInfo()。

break。

//选项1:

输入学生信息

case'2':

system("cls")。

view()。

break。

//选项2:

浏览学生信息

case'3':

system("cls")。

xiugai()。

break。

//选项3:

修改学生信息

case'4':

system("cls")。

DeleteInfo()。

break。

//选项4:

删除学生信息

case'5':

system("cls")。

paiming1(student)。

paiming2(student)。

PM=1。

getchar()。

getchar()。

system("cls")。

break。

//选项5:

学生信息排名

case'6':

system("cls")。

ViewAll()。

break。

//选项6:

浏览全部学生信息

case'7':

system("cls")。

clean()。

break。

//选项7:

清除所有信息

case'8':

system("cls")。

PaimingView()。

break。

//选项8:

查询排名

case'0':

system("cls")。

exit()。

break。

//选项9:

退出

}

}

}

//----------------------------------------初始化函数----------------------------------------

voidinit()

{

FILE*fp。

fp=fopen("counter.dat","rb")。

//打开计数变量counter文件

if(fp!

=NULL)//载入counter

{

fclose(fp)。

LoadInt(&counter,sizeof(counter),1,"counter.dat")。

}

else

{

fp=fopen("counter.dat","wb")。

//若没有counter文件,则创建一个,counter初始为0。

fclose(fp)。

counter=0。

}

if(counter!

=0)//载入学生数据

LoadStruct(student,sizeof(structstudent_info),counter,"student_info.dat")。

}

//----------------------------------------欢迎函数----------------------------------------

charwelcome()

{

charselect。

while

(1)

{

system("cls")。

printf("\t\t欢迎使用学生信息管理系统\n")。

printf("\n")。

printf("1.录入学生信息\n\n")。

printf("2.浏览学生信息\n\n")。

printf("3.修改学生信息\n\n")。

printf("4.删除学生信息\n\n")。

printf("5.排名学生成绩\n\n")。

printf("6.浏览所有学生信息\n\n")。

printf("7.清除所有数据\n\n")。

printf("8.查询排名\n\n")。

printf("0.退出\n\n")。

printf("输入相应的功能序号:

")。

select=getchar()。

if(select=='1'||select=='2'||select=='3'||select=='4'||select=='5'||select=='6'||select=='7'||select=='8'||select=='0')

returnselect。

system("cls")。

continue。

}

}

//-------------------------------------1.录入学生信息----------------------------------------

voidInputInfo()

{

inti,n。

printf("需要录入多少位学生的信息:

")。

scanf("%d",&n)。

system("cls")。

for(i=1。

i<=n。

i++)

{

student[counter]=input()。

counter++。

}

PM=0。

SortInfo(student)。

SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat")。

SaveInt(&counter,sizeof(counter),1,"counter.dat")。

}

//-------------------------------------2.游览学生信息----------------------------------------

voidview()

{

inti,num。

printf("请输入需要游览的学生信息的学号:

")。

scanf("%d",&num)。

getchar()。

if((i=NumExist(student,num))==-1)

{

printf("不存在该学号,按回车键返回...")。

getchar()。

system("cls")。

return。

}

ViewInfo(&student[i])。

printf("\n按回车键返回...")。

getchar()。

system("cls")。

return。

}

//-------------------------------------3.修改学生信息----------------------------------------

voidxiugai()

{

inti,num。

charYN,select。

printf("请输入需要修改的学生信息的学号:

")。

scanf("%d",&num)。

getchar()。

if((i=NumExist(student,num))==-1)

{

printf("不存在该学号,按回车键返回...")。

getchar()。

system("cls")。

return。

}

ViewInfo(&student[i])。

printf("是否要修改?

(Y/N):

")。

scanf("%c",&YN)。

getchar()。

if(YN!

='Y'&&YN!

='y')

{

printf("修改取消.")。

getchar()。

system("cls")。

return。

}

system("cls")。

printf("1.学号\n")。

printf("2.性别\n")。

printf("3.家庭住址\n")。

printf("4.联系电话\n")。

printf("5.语文成绩\n")。

printf("6.数学成绩\n")。

printf("7.外语成绩\n")。

printf("8.同学互评分\n")。

printf("9.品德成绩\n")。

printf("0.任课教师教师评分\n")。

scanf("%c",&select)。

switch(select)

{

case'1':

printf("修改学号:

")。

scanf("%d",&student[i].num)。

break。

case'2':

printf("修改性别:

")。

scanf("%s",&student[i].sex)。

break。

case'3':

printf("修

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1