数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx

上传人:b****1 文档编号:4439702 上传时间:2023-05-03 格式:DOCX 页数:42 大小:130.70KB
下载 相关 举报
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第1页
第1页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第2页
第2页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第3页
第3页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第4页
第4页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第5页
第5页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第6页
第6页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第7页
第7页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第8页
第8页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第9页
第9页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第10页
第10页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第11页
第11页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第12页
第12页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第13页
第13页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第14页
第14页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第15页
第15页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第16页
第16页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第17页
第17页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第18页
第18页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第19页
第19页 / 共42页
数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx

《数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx(42页珍藏版)》请在冰点文库上搜索。

数据结构课程设计报告学生成绩管理系统11Word格式文档下载.docx

具体要完成的任务是:

A.编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。

B.写出规范的课程设计报告书;

三、课程设计步骤及时间进度和场地安排

时间:

1周地点:

现代教育中心

具体时间安排如下:

第一天:

布置题目,确定任务、查找相关资料

第二天〜第四天:

功能分析,编写程序,调试程序、运行系统;

第五天上午:

撰写设计报告;

第五天下午:

程序验收、答辩。

四、课程设计考核及评分标准

课程设计考核将综合考虑学生的系统设计方案、运行结果、课程设计报告书的质量、态

度、考勤、答辩情况等各因素。

具体评分标准如下:

1)设计方案正确,具有可行性、创新性;

设计方案止确,具有可行性、创新性;

30

2)系统开发效果较好;

20

3)设计报告规范、课程设计报告质量高;

设计报告规范、课程设计报告质量高;

4)课程设计答辩时,问题回答正确;

课程设计答辩时,问题回答正确;

5)态度认真、刻苦钻研、遵守纪律;

态度认真、刻苦钻研、遵守纪律;

10

按上述五项分别记分后求和,总分按五级制记载最后成绩。

优秀(100〜90分),良好(80〜89分),中等(70〜79分),及格(60〜69分),

不及格(0〜59分)

一、问题描述5

二、基本要求5

三、数据结构设计6

四、软件模块结构图7

五、程序设计思想9

六、程序流程图13

七、源程序18

八、调试分析32

九、测试数据33

十、用户使用手册35

一、问题描述

〔问题描述〕给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课

程代号与分数组成,要求设计算法:

(1)输入每个人的各门课程的成绩,计算每人的平均成绩;

(2)按平均成绩的高低次序,打印出个人的名次,平均成绩相同的为同一名

次;

(3)按名次列出每个学生的姓名和各科成绩;

〔基本要求〕学生的考试成绩必须通过键盘输入,且需对输出进行格式控制;

、基本要求

学生的考试成绩必须通过键盘输入,且需对输出进行格式控制;

三、数据结构的设计

为了对学生信息进行统一操作,使用了结构体这一数据结构,学生的各项数据信息都能用结构体来表示,具体如下:

structstu

{intnum;

/*学号,整型变量*/

charname[50];

/*姓名,长度为50的字符串数组*/

charclasses[50]/*班级名称,长度为50的字符串数组*/;

doublegsps_score;

/*高等数学平时成绩,双精度实型变量*/

doublegsks_score;

/*高等数学考试成绩,双精度实型变量*/

doublegszh_score;

/*高等数学综合成绩,双精度实型变量*/

doubledlps_score;

/*电路理论平时成绩,双精度实型变量*/

doubledlks_score;

/*电路理论考试成绩,双精度实型变量*/

doubledlzh_score;

/*电路理论综合成绩,双精度实型变量*/

doubleyyps_score;

/*英语平时成绩,双精度实型变量*/

doubleyyks_score;

/*英语考试成绩,双精度实型变量*/

doubleyyzh_score;

/*英语综合成绩,双精度实型变量*/

doublewlps_score;

/*物理平时成绩,双精度实型变量*/

doublewlks_score;

/*物理考试成绩,双精度实型变量*/

doublewlzh_score;

/*物理综合成绩,双精度实型变量*/

doublepj_score;

/*平均成绩,双精度实型变量*/

}student[1000];

/*最多存储1000个学生数据*/

该结构体数据定义为全局变量。

四、软件模块结构图

学生信息录入模块

按学号查询学生信息

学生信息查询模块

主菜单控制模块

学生信息修改模块

学生信息删除模块

学生信息插入模块

按姓名查询学生信息

 

输出优秀学生相关信息

学生信息输出模块

输出不及格学生信息每门课程的平均成绩

课程成绩统计模块

按单科成绩排名次

模块功能描述:

a.主菜单控制模块:

主菜单直接控制七个模块(学生信息输出模块的两个子模块直接归主菜单控制),在各模块间起到纽带的作用。

在主菜单,可以通过选择进入其他模块,其他模块运行结束后也可回到主菜单继续选择。

b.学生信息录入模块:

循环输入学生信息,建立临时的学生信息数据库。

c.学生信息查询模块:

可选择按学号或者按姓名查询学生信息,如学

生信息不存在则给出提示。

d.学生信息修改模块:

查找到要修改的学生信息后,可对该学生的信息进行逐项修改。

e.学生信息删除模块:

查找到要删除的学生信息后,可对其进行删除操作。

f.学生信息插入模块:

在数据库末尾插入学生信息,逐项输入要插入的学生信息即可。

g.学生信息输出模块:

输出优秀学生信息模块能够输出优秀学生(平均成绩大于等90分)的学号和姓名;

输出不及格学生信息模块能够输出不及格学生的相关信息。

h.课程成绩统计模块:

可以得到每门课程的平均成绩,还可以任意抽取一门课按单科成绩排定学生名次。

五、程序设计思想

结构化的程序设计主要靠设计和调用各模块的函数来实现。

本程

序设计了多个函数,每个函数自身能完成一个任务,有的函数和别的

函数结合能完成更大的任务。

每一个模块功能的实现其实就是对函数

的调用,本说明首先介绍本程序所涉及的子函数,再介绍主函数,最

后介绍程序整体的实现过程。

1.voidInputfun()此函数较特别,它只进行输入操作,但由于此函

数所包含的语句较长且需要被其他三个函数使用,为方便调用单写了

一个函数。

此函数在源程序中放在最前,所以在此先作说明。

此函数

可细分为11个小块,用来输入学生的基本数据。

每小块的结构基本

相同即for(;

;

){基本语句+一个continue语句+基本语句+一个

break语句}之所以用这个结构为了使输入的数据更加正规。

比如在

分数的输入中就限定了只能输入0至100之间的数值,这也符合分数

录入规则。

需要特别注意的是,这个函数完成了本程序中要做的两个

计算。

其一是在每门课的考试试成绩输入后完成了对这门课的综合成

绩的加权计算(考试成绩*0.7+平时成绩*0.3);

其二是在最后一门课

程的综合成绩算出后,计算了该学生四门课的平均成绩。

2.voidGetinformation()此函数用来录入学生信息。

它调用了void

Inputfun()函数,其实它的主体部分就是voidInputfun()函数。

函数还用了一个for循环以达到循环输入的目的。

3.intSearchbynum(intno)\intSearchbyname(charna[50])这

是两个“兄弟函数”,是按学号查找和按姓名查询模块中的两个重要

函数。

主要功能是根据用户输入的学号姓名返回改学生所在的的数

组下标。

利用for循环嵌套一个if语句实现,若找到学生该学生信

息就返回数组下标,若找不到就返回-1。

4.voidSeekinformation()\voidPrintinformation(intx)这两

个函数关系紧密,所以一起介绍。

voidSeekinformation()函数利用

for循环和if语句使查找中能够使用学号和姓名两种方式。

如源程

序所示,在用if语句确定了查找方式后先后调用了intSearchbynum

(intno)\intSearchbyname(charna[50])和voidPrintinformation(intx)两个函数,根据intSearchbynum(int

no)\intSearchbyname(charna[50])返回的数组下标,运用void

Printinformation(intx)输出所查询的内容。

所以

intSearchbynum(intno)\intSearchbyname(charna[50])\void

Seekinformation()\voidPrintinformation(intx)这四个函数是查

询模块的四个联系紧密的重要函数,在它们的共同作用下查询模块的

功能得以实现。

5.voidModifyinformation()此函数用于修改学生信息。

基本原理

就是用输入的新数据覆盖原来的老数据,达到修改的目的。

本函数还

调用了查找模块的函数,使修改前能按学号或姓名找到要修改的学生

信息。

修改过程中调用了Inputfun()函数

6.voidDeleteinformation()此函数用于删除学生信息。

同样调用

了查找模块的函数。

删除模块的关键语句是for(i=x;

i<

999;

i++)

student[i]=student[i+1];

从要删除的那一个数据开始,用后一个数

据覆盖它,一直循环到最后,相当于把开始的第一个数据删除了。

7.voidInsertinformaton()此函数用于插入学生数据。

由于没有用

链表,所以选择插入在最后一个有效数据之后。

本函数运用if(student[j].num==0)这个语句找到了最后一个有效数据之后的数

组下标j,然后将数据输入到student[j]中,便完成的了插入。

插入

过程中,调用了Inputfun()函数。

8.voidShowthefail()此函数用于显示不及格学生的信息。

能够按

要求输出不及格学生的学号、姓名、各科成绩以及平均成绩。

首先用

这条if语句搜索该学生是否有成绩不及格,当四门课中至少有一门

不及格时会输出该学生的相关信息。

9.voidStu_p()此函数用于输出优秀学生(平均成绩大于90分)的

信息,利用for循环和条件判断句输出找出相应的学生输出相关信

息。

10.voidChengjitongji()

每门课的平均成绩的功能;

还能够按每门课程的成绩对学生进行排

序,使学生在该门课的表现一目了然。

排序中用到了冒泡排序的方法。

9.voidmain()下面对主函数作简要说明。

Switch语句是函数的主

体:

此函数用于按要求统计成绩。

有分别统计

switch(c)/*利用switch语句集成各个功能函数*/

case1:

Getinformation();

break;

/*获得学生信息*/

case2:

Seekinformation();

/*查找学生信息*/

case3:

Modifyinformation();

/*修改学生信息*/

case4:

Deleteinformation();

/*

删除学生信息*/

case5:

Insertinformaton();

插入学生信息*/

case6:

Stu_p();

/*显示优秀学生信息*/

case7:

Showthefail();

/*显示不及格学生信息*/

case8:

Chengjitongji();

/*课程成绩的统计*/

case0:

exit(0);

/*退出*/

default:

break;

}

通过一个数值输入函数,使用户在简单的数值输入后就可轻松调用各

模块。

还使用了for(;

)使各模块能够循环调用。

11.最后对程序的整体实现过程作个简要说明。

源程序中多处运用

continue和break语句,同时配合scanf函数和if条件判断语句,

使用户能够根据提示通过简单的数值输入来选择下一步该做什么。

文界面,用户很容易根据提示上手,简单易用。

六、程序流程图

c=4?

以上为主函数流程图,主函数下八个供选择的模块只是简单的用一个

执行框表示。

现分别画出八个模块的流程图:

1、录入学生成绩:

七、源程序

#include<

stdio.h>

string.h>

stdlib.h>

conio.h>

structstu/*定义结构体*/

{intnum;

charclasses[50];

inta,b,c,d,x,i,j,k,s,y,flag;

chars1[50],c1;

doublef,t,gp,dp,yp,wp;

/***********************录入、修改、插入学生信息三个模块调用了输入模块

*************************************/

voidInputfun()/*输入学生信息模块*/

{

for(;

;

)/*设计死循环以至于在输入格式错误时可以再次输入*/

printf("

请输入班级名称:

\t"

);

/*输入班级名称*/

scanf("

%s"

&

s1);

if(strlen(s1)>

20)

您输入的班级名称过长!

\n"

continue;

strcpy(student[i].classes,s1);

/*格式正确后跳出死循环*/

请输入学号:

/*输入学号*/

%d"

b);

if(student[i].num<

0)

您输入的学号错误!

student[i].num=b;

请输入姓名:

/*输入姓名*/

您输入的姓名过长!

strcpy(student[i].name,s1);

请输入该生高等数学平时成绩:

/*输入各科平时成绩和考试成

绩*/

%lf"

f);

if(f>

100||f<

成绩不合理!

请您输入合理的成绩.\n"

student[i].gsps_score=f;

请输入该生高等数学考试成绩:

student[i].gsks_score=f;

student[i].gszh_score=student[i].gsks_score*0.7+student[i].gsps_score

*0.3;

/*按考试成绩70%平时成绩30%算该门课程的最终成绩*/

请输入该生电路理论平时成绩:

student[i].dlps_score=f;

请输入该生电路理论考试成绩:

student[i].dlks_score=f;

student[i].dlzh_score=student[i].dlks_score*0.7+student[i].dlps_score

请输入该生英语平时成绩:

student[i].yyps_score=f;

请输入该生英语考试成绩:

student[i].yyks_score=f;

student[i].yyzh_score=student[i].yyks_score*0.7+student[i].yyps_score

请输入该生物理平时成绩:

student[i].wlps_score=f;

请输入该生物理考试成绩:

student[i].wlks_score=f;

student[i].wlzh_score=student[i].wlks_score*0.7+student[i].wlps_score*0.3;

student[i].pj_score=(student[i].yyzh_score+student[i].dlzh_score+stud

ent[i].gszh_score+student[i].wlzh_score)/4;

/*计算每个学生的平均成绩*/

录入学生信息模块

/*********************************

**************************************

voidGetinformation()/*获得学生信息*/

for(i=0;

1000;

i++)/*利用循环连续输入学生信息*/

if(i==0)

system("

cls"

请根据提示输入学生的信息\n\n"

else

请输入下一个学生的信息\n\n"

Inputfun();

继续请按1,返回主菜单请按0.\n"

a);

if(a==0)break;

/****************查询模块:

包含四个函数,函数间有联系**********************************/

intSearchbynum(intno)/*按学号查找*/

for(j=0;

j<

j++)

if(student[j].num==no)

returnj;

return-1;

intSearchbyname(charna[50])/*按姓名查找*/

for(k=0;

k<

k++)

if(strcmp(student[k].name,na)==0)

returnk;

voidPrintinformation(intx)/*输出学生信息*/

if(x==-1)

该学生信息不存在!

班级:

%s\n"

student[x].classes);

学号:

%d\n"

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

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

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

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