好文档 - 专业文书写作范文服务资料分享网站

数据结构课程设计报告-学生成绩管理系统[]

天下 分享 时间: 加入收藏 我要投稿 点赞

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

{int num;/*学号,整型变量*/

char name[50];/*姓名,长度为50的字符串数组*/ char classes[50]/*班级名称,长度为50的字符串数组*/; double gsps_score;/*高等数学平时成绩,双精度实型变量*/ double gsks_score;/*高等数学考试成绩,双精度实型变量*/ double gszh_score;/*高等数学综合成绩,双精度实型变量*/ double dlps_score;/*电路理论平时成绩,双精度实型变量*/ double dlks_score;/*电路理论考试成绩,双精度实型变量*/ double dlzh_score;/*电路理论综合成绩,双精度实型变量*/ double yyps_score;/*英语平时成绩,双精度实型变量*/ double yyks_score;/*英语考试成绩,双精度实型变量*/ double yyzh_score;/*英语综合成绩,双精度实型变量*/ double wlps_score;/*物理平时成绩,双精度实型变量*/ double wlks_score;/*物理考试成绩,双精度实型变量*/ double wlzh_score;/*物理综合成绩,双精度实型变量*/ double pj_score;/*平均成绩,双精度实型变量*/ }student[1000];/*最多存储1000个学生数据*/ 该结构体数据定义为全局变量。

四、软件模块结构图

第 6 页 共 37 页

学生信息录入模块 按学号查询学生信息 学生信息查询模块 按姓名查询学生信息 学生信息修改模块 主菜单控制模块学生信息删除模块 学生信息插入模块 输出优秀学生相关信息 学生信息输出模块 输出不及格学生信息

模块功能描述:

a.主菜单控制模块:主菜单直接控制七个模块(学生信息输出模块的两个子模块直接归主菜单控制),在各模块间起到纽带的作用。在主菜单,可以通过选择进入其他模块,其他模块运行结束后也可回到主菜单继续选择。

b.学生信息录入模块:循环输入学生信息,建立临时的学生信息数据库。

c.学生信息查询模块:可选择按学号或者按姓名查询学生信息,如学生信息不存在则给出提示。

d.学生信息修改模块:查找到要修改的学生信息后,可对该学生的信

第 7 页 共 37 页

每门课程的平均成绩 课程成绩统计模块 按单科成绩排名次

息进行逐项修改。

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

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

g.学生信息输出模块:输出优秀学生信息模块能够输出优秀学生(平均成绩大于等90分)的学号和姓名;输出不及格学生信息模块能够输出不及格学生的相关信息。

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

五、程序设计思想

第 8 页 共 37 页

结构化的程序设计主要靠设计和调用各模块的函数来实现。本程序设计了多个函数,每个函数自身能完成一个任务,有的函数和别的函数结合能完成更大的任务。每一个模块功能的实现其实就是对函数的调用,本说明首先介绍本程序所涉及的子函数,再介绍主函数,最后介绍程序整体的实现过程。

1.void Inputfun() 此函数较特别,它只进行输入操作,但由于此函数所包含的语句较长且需要被其他三个函数使用,为方便调用单写了一个函数。此函数在源程序中放在最前,所以在此先作说明。此函数可细分为11个小块,用来输入学生的基本数据。每小块的结构基本相同即for(;;){基本语句 +一个continue语句+基本语句+一个break语句}之所以用这个结构为了使输入的数据更加正规。比如在分数的输入中就限定了只能输入0至100之间的数值,这也符合分数录入规则。需要特别注意的是,这个函数完成了本程序中要做的两个计算。其一是在每门课的考试试成绩输入后完成了对这门课的综合成绩的加权计算(考试成绩*0.7+平时成绩*0.3);其二是在最后一门课程的综合成绩算出后,计算了该学生四门课的平均成绩。

2.void Getinformation() 此函数用来录入学生信息。它调用了void Inputfun()函数,其实它的主体部分就是void Inputfun()函数。这函数还用了一个for循环以达到循环输入的目的。

3.int Searchbynum (int no)\\int Searchbyname (char na[50]) 这是两个“兄弟函数”,是按学号查找和按姓名查询模块中的两个重要函数。主要功能是根据用户输入的学号\\姓名返回改学生所在的的数

第 9 页 共 37 页

组下标。利用for循环嵌套一个if语句实现,若找到学生该学生信息就返回数组下标,若找不到就返回-1。

4.void Seekinformation()\\void Printinformation(int x) 这两个函数关系紧密,所以一起介绍。void Seekinformation()函数利用for循环和if语句使查找中能够使用学号和姓名两种方式。如源程序所示,在用if语句确定了查找方式后先后调用了int Searchbynum (int

no)\\int

Searchbyname

(char

na[50])

void

Printinformation(int x)两个函数,根据int Searchbynum (int no)\\int Searchbyname (char na[50])返回的数组下标,运用void Printinformation(int x)输出所查询的内容。所以

int Searchbynum (int no)\\int Searchbyname (char na[50])\\void Seekinformation()\\void Printinformation(int x)这四个函数是查询模块的四个联系紧密的重要函数,在它们的共同作用下查询模块的功能得以实现。

5.void Modifyinformation() 此函数用于修改学生信息。基本原理就是用输入的新数据覆盖原来的老数据,达到修改的目的。本函数还调用了查找模块的函数,使修改前能按学号或姓名找到要修改的学生信息。修改过程中调用了Inputfun()函数

6.void Deleteinformation() 此函数用于删除学生信息。同样调用了查找模块的函数。删除模块的关键语句是for (i=x;i<999;i++) student[i]=student[i+1];从要删除的那一个数据开始,用后一个数据覆盖它,一直循环到最后,相当于把开始的第一个数据删除了。

第 10 页 共 37 页

数据结构课程设计报告-学生成绩管理系统[]

为了对学生信息进行统一操作,使用了结构体这一数据结构,学生的各项数据信息都能用结构体来表示,具体如下:structstu{intnum;/*学号,整型变量*/charname[50];/*姓名,长度为50的字符串数组*/charclasses[50]/*班级名称,长度为50的字符串数组*/;doublegsps_score
推荐度:
点击下载文档文档为doc格式
0xqi25lqnl2mdyx423a46cyp27lz4y01br2
领取福利

微信扫码领取福利

微信扫码分享