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

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

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

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

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

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

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()。

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

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

排名函数

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

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

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

冒泡排序

for(i=0。

i<

counter-1。

i++)

for(j=i+1。

j<

counter。

j++)

{

if(p[i]->

ave<

p[j]->

ave)

{

temp=p[i]。

p[i]=p[j]。

p[j]=temp。

}

}

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

p[i]->

paiming1=i+1。

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

voidViewAll()

inti。

for(i=0。

{

ViewInfo(&

student[i])。

printf("

\n"

)。

getchar()。

printf("

回车键返回..."

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

fwrite(p,size,n,fp)。

D.读取信息(整型)

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

E.学号检索

intNumExist(structstudent_infostudent[],intnum)

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

returni。

return-1。

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

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

程序截图:

五.程序源代码

2013年1月3日

#include<

stdio.h>

stdlib.h>

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

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

//每个学生的信息为:

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

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

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

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

structstudent_infostudent[N]。

intcounter,PM。

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

voidmain()

charselect。

init()。

//调用初始化函数

while

(1)

select=welcome()。

switch(select)

case'

1'

:

InputInfo()。

break。

//选项1:

输入学生信息

2'

view()。

//选项2:

浏览学生信息

3'

xiugai()。

//选项3:

修改学生信息

4'

DeleteInfo()。

//选项4:

删除学生信息

5'

paiming1(student)。

paiming2(student)。

PM=1。

getchar()。

//选项5:

学生信息排名

6'

ViewAll()。

break。

//选项6:

浏览全部学生信息

7'

clean()。

//选项7:

清除所有信息

8'

PaimingView()。

//选项8:

查询排名

0'

exit()。

//选项9:

退出

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

voidinit()

fp=fopen("

counter.dat"

"

rb"

//打开计数变量counter文件

if(fp!

=NULL)//载入counter

fclose(fp)。

LoadInt(&

counter,sizeof(counter),1,"

else

fp=fopen("

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

counter=0。

if(counter!

=0)//载入学生数据

LoadStruct(student,sizeof(structstudent_info),counter,"

student_info.dat"

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

charwelcome()

system("

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

1.录入学生信息\n\n"

2.浏览学生信息\n\n"

3.修改学生信息\n\n"

4.删除学生信息\n\n"

5.排名学生成绩\n\n"

6.浏览所有学生信息\n\n"

7.清除所有数据\n\n"

8.查询排名\n\n"

0.退出\n\n"

输入相应的功能序号:

"

select=getchar()。

if(select=='

||select=='

returnselect。

continue。

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

voidInputInfo()

inti,n。

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

scanf("

%d"

&

n)。

for(i=1。

=n。

student[counter]=input()。

counter++。

PM=0。

SortInfo(student)。

SaveStruct(student,sizeof(structstudent_info),counter,"

SaveInt(&

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

voidview()

inti,num。

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

scanf("

num)。

getchar()。

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

printf("

不存在该学号,按回车键返回..."

getchar()。

system("

return。

\n按回车键返回..."

return。

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

voidxiugai()

charYN,select。

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

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

ViewInfo(&

是否要修改?

(Y/N):

%c"

YN)。

if(YN!

='

Y'

&

YN!

y'

修改取消."

1.学号\n"

2.性别\n"

3.家庭住址\n"

4.联系电话\n"

5.语文成绩\n"

6.数学成绩\n"

7.外语成绩\n"

8.同学互评分\n"

9.品德成绩\n"

0.任课教师教师评分\n"

select)。

switch(select)

case'

printf("

修改学号:

scanf("

student[i].num)。

修改性别:

%s"

student[i].sex)。

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

当前位置:首页 > 党团工作 > 其它

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

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