软件工程学年设计 - 血红色呢过成绩管理系统

更新时间:2024-06-03 09:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件工程学年课程设计

课程名称:学生成绩管理系统 姓 名:XXX 学 号:XXX

院 系:计算机科学与技术学院 指导教师:XXX

目录

1引言…………………………………………………………………………………4

1.1问题的提出…………………………………………………………………4 1.2国内外研究的现状…………………………………………………………4 1.3任务与分析…………………………………………………………………4 2程序的主要功能……………………………………………………………………5

2.1数据录入……………………………………………………………………5 2.2数据查询……………………………………………………………………5 2.3数据修改……………………………………………………………………5 2.4数据排序……………………………………………………………………5 2.5统计信息……………………………………………………………………5 2.6打开文件……………………………………………………………………5 2.7保存文件……………………………………………………………………5 2.8显示记录……………………………………………………………………5 2.9退出系统……………………………………………………………………5 3 程序运行平台………………………………………………………………………5 4总体设计……………………………………………………………………………6 5 系统流程图…………………………………………………………………………6 6 数据结构设计………………………………………………………………………8

6.1 宏定义………………………………………………………………………8 6.2 全局变量……………………………………………………………………8 6.3结构体类型的具体层次结构………………………………………………8 7 主要模块的算法说明………………………………………………………………9 8 系统测试 …………………………………………………………………………11 9 总结 ………………………………………………………………………………16 10参考文献…………………………………………………………………………18

2

摘要

随着计算机的普及,计算机在生活中得到越来越多的应用,其中在计算机上运行的各种软件在解决生活中的实际问题中起着重大的作用。

在学校或班级,我们经常会对某次考试中所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理统计学生总成绩和平时成绩时工作会相对繁琐,所以针对这种情况,同时我分析了成绩管理所需要的功能,在利用c语言及VC++6.0程序运行平台之下,设计了一种小型的学生成绩管理系统,该系统具有学生成绩相关信息的录入、查询、修改、排序、统计、显示、打开文件、保存文件等功能。

关键词:学生成绩管理系统;计算机;c语言;课程设计

3

1 引言

1.1 问题的提出

在学校或班级,我们经常会对某次考试中所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理统计学生总成绩和平均成绩时工作会相对繁琐,因此创建一个学生成绩管理系统有着十分重要的作用,然而,对于这种规模不大的管理系统,我们只需设计一种小型的管理软件即可。因此我们只需利用c语言,加以Visual c++6.0开发环境,就可以很轻松地解决此类问题。 1.2 国内外研究的现状

在国计算机内外,计算机的应用已延伸到各个领域,为了利用计算机解决生活中的实际问题,许多大小型应用软件应运而生。例如在各所学校,为了管理数目众多的学生的成绩,学生成绩管理系统软件成为各所学校必不可少的一项资源。但由于学生成绩管理系统应用十分普遍,所以从总体上来看针对此类的程序设计大都已经成熟,只是特定的处理功能需求根据实际需要而设计,所以就个人来说,无论以生活应用或是自我能力的提升作为出发点,去设计学生成绩管理系统都是很有必要的。 1.3 任务与分析

本课题主要的目的是利用c语言编写程序,实现学生成绩管理功能。

由于学生成绩管理具有学生成绩的录入、学生信息的显示和保存

4

到文件、查询、修改和统计学生成绩鞥功能。那么首先我们可以定义一个结构体student,其中包含学生学号、姓名、性别、5门课成绩、总分、平均分;然后通过相应的函数实现学生成绩管理的各种功能。 2 程序的主要功能

2.1数据录入:录入学生基本信息(学号、姓名、性别)和五门课程

(A、B、C、D、E)的考试成绩;并且可以每人计算各科的总成绩与平均成绩。

2.2数据查询:按学号、按姓名或按总名次查询。

2.3数据修改:删除或重新录入指定学号、姓名、名次的学生的基本

信息(学号、姓名等)以及课程信息(分数)。

2.4数据排序:按照学号、姓名、名次并选择进行升序还是降序进行

排列。

2.5统计信息:可分别统计A、B、C、D、E这五门课程的最高分、最

低分与平均分。

2.6打开文件:读取已保存的文件。 2.7保存文件:保存正在编辑的文件。 2.8显示记录:显示正在编辑的数据的记录。 2.9退出系统:推出此系统。 3 程序运行平台

VC++6.0 具体操作如下:

打开VC++6.0,点击文件——点击新建——点击文件——选择c++

5

Source File,同时输入文件名,建立保存目录——点击确定,创建源文件成功。编写程序,再编译,链接,执行等。 4总体设计

数据录入 显示 排序 按学号、姓名、名次 主菜修改 按学号、姓名、名次 单 查询 按姓名、学号、名次 统计信息 课程的最高分、最低分、平均分 保存 读取 退出 5 系统流程图

6

开始 输出界面 学号 选择操作 姓名 选择1 输入数据 性别 五门成绩 选择2 查询 按姓名、学号、名次 选择3 修改 按学号、姓名、名次 选择4 排序 按学号、姓名、名次 选择5 统计信息 最高、低分、平均分 选择6 读取数据选择7 保存数据选择8 显示数据 选择8 退出系统 结束 7

6 数据结构设计

针对要处理的学生信息和数据格式的实际情况,本程序使用了结构体型数据、全局变量和宏定义,用结构体型数据存放学生的各种信息,并由学号从小到大的顺序把各结构体建立成链表;用全局变量保存对于每个同学都相同的信息等;用宏定义使程序更加简洁也使程序更容易更改 6.1 宏定义 如下:

#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/

#define numsubs 5 /*学科数目*/ 6.2 全局变量 如下:

extern int numstus; /*学生数目*/

extern student *pointer; /*指向结构体数组*/ extern int lens;

6.3结构体类型的具体层次结构 如下:

typedef struct message_student /*结构体定义*/ {

char number[6]; char name[20];

8

char sex[4];

float subject[numsubs]; float score; float average; int index; }student;

7 主要模块的算法说明

对于每个模块其功能的实现实际上就是对各相应函数的调用,每个函数都能够完成相对独立的一个任务,按一定的规则调用这些函数就能解决小型成绩管理系统内的问题。因此,程序设计是靠定义函数和调用函数来实现的。下面是对程序中各个函数的具体介绍: 7.1 int findrecord(student stud[])

数据查询函数:查找指定学号或姓名或名次学生的信息并将其信息输出;(1)判定numstus是否为0,若是则返回值-1并输出没有可被查找的记录;若不是则选择用何种方式查找并传递给字符数组str[0];(2)判断str[0]的值,如等于1,则将输入的学号传递给数组str,在调用strcmp和display函数找出并显示出来;如等于2,则将输入的姓名传递给数组str,在调用strcmp和display函数找出并显示出来;如等于3,则将输入的名次传递给整型变量num,在比较和调用display函数找出并显示出来;如超出范围则显示没有查找所要的信息并返回-1,否则返回整型变量i。 7.2 int openfile(student stu[])

9

文件打开函数:(1)判定numstus是否为0,如否则显示已经有记录存在是否保存,如选择Y,则调用writetotext函数,并将numstus置为0;(2)如是,则先判断文件是否为空,如是返回-1;如否,先获取文件名,再获得该文件名下的信息并显示文件读取成功,是否显示记录;(3)如选y,调用display函数显示记录,否则返回0. 7.3 void sort(student stud[])

数据排序函数:(1)首先比较numstus是否得0,如是,输出没有可供查询的记录,如否则选择排序的方式按学号、姓名、名次,并将输入的数字传递给字符数组str;(2)判段str[0],并调用sortname2函数。 7.4

void statistic(student stud[])

统计数据函数:(1)判定numstus是否为0,如是则输出没有可被查找的的记录;(2)如否,怎选择统计成绩的科目并传递给字符变量c1,并利用for循环语句算出最高分、最低分与平均分。 7.5

int writetotext(student stud[])

保存文件函数:经写入的文件名存入文件变量fp中并显示已成功存储和数据列表。 7.6

void amendrecord(student stud[])

修改信息函数:(1)判断numstus是否为0,如是,则显示没有

10

可供修改的记录;(2)如否,则调用findrecord函数找到该学生信息,并提示是否删除,如选y,则调用deleterecord;(3)如选n,则提示是否重新输入学生的信息;(4)如选y,则重新录入信息,并显示列表,如否i为1,如继续修改1为-1. 7.7

void addrecord(student stud[])

数据录入函数:(1)如numstus不为0,选择覆盖信息i=0;否则i=numstus;(2)如numstus为0,则将学生的信息存入到结构体中,并利用for循环计算总分与平均分,调用count、display函数算出名次与现实数据。 7.8

void display(student stud[],int n1,int n2)

显示数据函数:调用showtable函数现实表头,利用for循环来显示结构体中的数据。 8 系统测试

首先进入VC++6.0,点击文件——点击打开——双击选择源文件,在编译,链接,执行。

11

学生成绩管理系统的总菜单:

录入成功实现:

12

显示记录实现:

学生记录排序实现:

13

统计信息实现:

保存文件实现:

14

打开文件实现:

修改文件实现:

15

9 总结

经过两个多星期的折腾,总算把程序设计给完成了,这是一个坚苦而又漫长的过程,学习C语言已经接近三年了,虽然是一个小型学生成绩系统设计,看着自己的成果,那几个熬夜的晚上还是很值得的,很欣慰!

在本次设计的全过程中,我对三年所学的知识有了一个比较系

统的认识和理解。涉及了各方面的知识,大大扩展了我的知识面,同时是我学会了如何使用所学的知识去解决一些实际的问题。 在设计中我深知自己掌握的知识还远远不够,掌握的一些理论知识应用到实践中去,总会出现这样或那样的问题,不是理论没有掌握好,而是光知道书本上的知识是远远不够的,一定要把理论知

16

识和实践结合起来。把学到的知识应用到时间中去,多做多练,才可以把理论的精华发挥出来。知识不是知道,了解就好,一定要去应用它,发展它,让它在现实生活中得到充分的应用,从而解决一些问题,这才是学习的根本目的。而且知识又不是单一的,它是互相联系的,学科与学科之间都有着内在的联系。计算机是一门非常复杂且庞大的学科,一项课题往往需要多项技术才可以完成的。在设计阶段,通过对课题的深入分析与研究,迫使我对技术有了一定的了解。在遇到问题时,得到了指导老师与同学的悉心帮助,使我感受到集体的力量是无穷的。

通过这次设计,我学会了和别人配合工作,因为一个人所学的知识不可能面面俱到的,只有通过合作,发挥自己的优点,体现团队精神,才能使工作做得更为出色。通过这次设计,我学到了许多书本上学不到的知识,增强了自己的动手能力。即将大三结束,我十分珍惜这次锻炼的机会,我按部就班的完成了自己的设计任务,但由于自己的知识水平有限,仍然存在很多的不足之处,恳请老师多多指教!当今的社会是竞争的社会,而人才的竞争则是竞争的焦点,课程设计对于我们这些没有接触过实际项目的同学来说,是离校前很好的一次锻炼,使我们各方面的能力都有了很大的提高,为我们踏出校门,走上社会增强了能力与自信!

计算机技术的高速发展,使我深深地认识到只有不断的加强学习,才能在计算机技术方面不至于被淘汰,今后,我还要加强学习,努力使自己成为一位专业的计算机人员,为我自己所从事的工作服

17

务。 10参考文献

(1) C程序设计(第三版) 作者:谭浩强 著 出版社:清华大学出版社

(2)C程序设计题解与上机指导(第三版) 谭浩强 主编 出版社:清华大学出版社

(3)《C语言程序设计》 -- 张磊 出版社:高等教育出版社 4《C语言最新编程技巧200例》 作者:鲁沐浴,电子工业出版社

18

本文来源:https://www.bwwdw.com/article/uy46.html

微信扫码分享

《软件工程学年设计 - 血红色呢过成绩管理系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top