华东交大C++课程设计 统计学生成绩.docx

上传人:b****4 文档编号:12147078 上传时间:2023-04-17 格式:DOCX 页数:53 大小:199.71KB
下载 相关 举报
华东交大C++课程设计 统计学生成绩.docx_第1页
第1页 / 共53页
华东交大C++课程设计 统计学生成绩.docx_第2页
第2页 / 共53页
华东交大C++课程设计 统计学生成绩.docx_第3页
第3页 / 共53页
华东交大C++课程设计 统计学生成绩.docx_第4页
第4页 / 共53页
华东交大C++课程设计 统计学生成绩.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

华东交大C++课程设计 统计学生成绩.docx

《华东交大C++课程设计 统计学生成绩.docx》由会员分享,可在线阅读,更多相关《华东交大C++课程设计 统计学生成绩.docx(53页珍藏版)》请在冰豆网上搜索。

华东交大C++课程设计 统计学生成绩.docx

华东交大C++课程设计统计学生成绩

华东交大C++课程设计统计学生成绩

前言

计算机技术作为信息化的核心技术受到全社会的普遍重视。

如今,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。

深入掌握计算机专业知识、具有良好系统设计与分析能力的计算机高级专业人才在社会上深受欢迎。

而系统设计与分析能力的培养需要通过实践训练才能获得。

通过计算机对一些系统的管理已经成为一种系统、便捷的方式。

本课程设计就是用C++设计管理学生成绩的问题,实现对学生成绩问题的管理操作。

C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。

C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。

面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。

1

一(论文摘要....................................................................3二(课程设计任务分析.....................................................4

2.1课程设计任务书..........................................................4

2.2设计运行环境..............................................................6

2.3课程设计任务要求.........................................................6

2.4小组成员任务分配表......................................................7三(课程任务具体设计......................................................8

3.1设计思想...................................................................8

3.2系统总框图.................................................................8

3.3各模块设计分析...........................................................9

3.4程序所定义函数及说明..................................................15

3.5程序源代码...............................................................19四(程序运行及调试过程.................................................35

4.1程序运行结果............................................................35

4.2存在问题与不足及对策..................................................41五(论文总结...................................................................42六(参考文献...................................................................42

致谢.......................................................................42

2

一.论文摘要

随着科学技术的发展,计算机领域不断取得新的研究成果。

计算机在代替和延伸脑力劳动方面发挥越来越重要的作用,不仅在工业方面而且在日常生活中也越来越离不开计算机。

尤其是在学校里,要处理大量的学生数据。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟的优点。

本章的重点是进一步熟悉文件操作和运算符重载。

本课程设计的重点是练习文件的存储与读取以及读入整行数据,要求编写一个“学生”.类及用来存取文件的save()和load()函数同时使用函数及运算符重载技术。

本文介绍了简易统计学生成绩的系统在MicrosoftVisualC++6.0环境下的实现过程:

系统的分析,功能模块的设计,系统的调试和测试。

此系统的主要管理的信息有:

学生的学号,姓名,算术和语文成绩以及平均分。

本系统的主要功能有:

从键盘输入学生的学号.姓名以及成绩,计算每个学生的平均成绩,将数据存入文件stud,dat中并验证是否正确的存入了文件。

把学生姓名和平均成绩抽取起来,将两门功课成绩都不及格的学生信息从文件中删除并外存入文件bad.dat中。

能检索文件中某个学生信息的子程序。

关键词:

统计学生成绩;函数;运算符重载;文件操作;

3

二.课程设计任务分析

2.1课程设计任务书

华东交通大学

课程设计(论文)任务书

学院专业班一、课程设计(论文)题目:

统计学生成绩

二、课程设计(论文)工作自2012年6月1日起至2012年6月6日止三、课程设计(论文)地点:

软件学院实训中心四、课程设计(论文)内容要求:

1.本课程设计的目的

(1)掌握C++语言的程序设计方法;

(2)理论联系实际,进一步提高学生的软件开发技术;

(3)培养学生分析、解决问题的能力;

(4)提高学生实践论文撰写能力。

2.课程设计的任务及要求

1)基本要求:

(1)对系统所需完成的功能分析;

(2)使用VisualC++编译器进行程序编译;

(3)提出系统的设计方案;

(4)对所设计源程序进行调试。

2)创新要求

在基本要求达到后,可进行创新设计。

3)课程设计论文编写要求

1)理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准(

格式进行书写和装订。

(2)课程设计报告(论文)包括设计任务分析(包括设计任务书、设计运行环境、同组人员及分工等)、系统总框图、每个模块的设计分析、列出所有定义的函数及说明、存在的问题与不足及对策、附上程序源代码。

(3)用A4纸打印出文档(附上源代码),封面到教务处购买;所写的有效代码不得少于50行;17周上机检查程序并上交设计报告。

4)课程设计评分标准:

(1)学习态度:

20分;

(2)回答问题及系统演示:

30分

(3)课程设计报告书论文质量:

50分。

成绩评定实行优秀、良好、中等、及格和不及格五个等级。

不及格者需重做。

5)参考文献:

(1)谢昕等编著,《C++程序设计》第二版,北京邮电大学出版社

4

(2)吕凤翥.C++语言基础教程[M].清华大学出版社.2007.2(3)谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版6)课程设计进度安排

1.准备阶段(4学时):

选择设计题目、了解设计目的要求、查阅相关资料。

2.程序模块设计分析阶段(4学时):

程序总体设计、详细设计。

3.代码编写调试阶段(8学时):

程序模块代码编写、调试、测试。

4.撰写论文阶段(4学时):

总结课程设计任务和设计内容,撰写课程设计论文。

7)课程设计题目具体要求:

本课程设计的重点是练习文件的存储与读取以及读入整行数据。

要求编写一个“学生”类及用来存储文件的save()和load()函数,使用函数及运算符重载技术完成如下操作:

(1)有10个小学生,每个学生有“算术”和“语文”两门功课,从键盘输入学生的学号.姓名以及成绩,计算每个学生的平均成绩,将数据存入文件stud,dat中并验证是否正确的存入了文件。

(2)要求对“<<”和“>>”运算符进行重载。

考虑到输入学号时,也会因不小心引入空格,而且名字中也需要有空格,所以重载“>>”运算符时,需要满足这个要求。

(3)把学生姓名和平均成绩抽取起来,建立一个简明文件stud_mean.dat,并验证是否正确的存入了。

(4)从文件stud.dat按如下格式输出大于等于平均成绩的学生信息:

学号姓名算术语文平均

(5)将两门功课成绩都不及格的学生信息从文件中删除并外存入文件bad.dat中。

(6)编写能检索文件中某个学生信息的子程序。

如无此学生,输出“未查到”信息。

(7)使用多文件编程和菜单操作。

学生签名:

2012年6月1日

课程设计(论文)评审意见

(1)考勤(10分):

优()、良()、中()、一般()、差();

(2)系统设计(20分):

优()、良()、中()、一般()、差();(3)编程调试(10分):

优()、良()、中()、一般()、差();(4)回答问题(15分):

优()、良()、中()、一般()、差();(5)论文撰写(35分):

优()、良()、中()、一般()、差();(6)创新思想(10分):

优()、良()、中()、一般()、差();综合评定等级:

评阅人:

职称:

年月日

5

2.2设计运行环境

1.操作系统:

Windowsxp

1.程序运行环境:

MicrosoftVisualC++6.0

2.3课程设计任务要求

本课程设计的重点是练习文件的存储与读取以及读入整行数据。

要求编写一个“学生”类及用来存储文件的save()和load()函数,使用函数及运算符重载技术完成如下操作:

(1)有10个小学生,每个学生有“算术”和“语文”两门功课,从键盘输入学生的学号.姓名以及成绩,计算每个学生的平均成绩,将数据存入文件stud,dat中并验证是否正确的存入了文件。

(2)要求对“<<”和“>>”运算符进行重载。

考虑到输入学号时,也会因不小心引入空格,而且名字中也需要有空格,所以重载“>>”运算符时,需要满足这个要求。

(3)把学生姓名和平均成绩抽取起来,建立一个简明文件stud_mean.dat,并验证是否正确的存入了。

(4)从文件stud.dat按如下格式输出大于等于平均成绩的学生信息:

学号姓名算术语文平均

(5)将两门功课成绩都不及格的学生信息从文件中删除并外存入文件bad.dat中。

(6)编写能检索文件中某个学生信息的子程序。

如无此学生,输出“未查到”信息。

(7)使用多文件编程和菜单操作。

6

2.4小组成员任务分配表

小组成员任务分配表

成员

班级学号分配任务项目

论文设计部分代码

编写

部分代码编写及代码

编整理工作

部分代码编写及后期

完善总结和打印

我的任务详情:

我的任务主要是负责论文的设计与部分代码的编写工作。

首先,在看完了课程设计的论文任务书以及题目后,根据里面的要求,我进行了概括总结,之后,在XX文库里看了几篇往届学生的课设论文范例。

在总结以前写论文的经验,再添加了一些自己的想法,最终融汇而成。

论文设计完成初稿后,与小组成员进行讨论,做了某些方面的修改和完善。

除此之外,我还参与部分代码编写工作,主要是前三个部分的编写,我看了老师给的代码范例,也从网上看了一些类似范例,最终决定用老师的代码。

在MicrosoftVisualC++6.0环境下运行时发现一些错误,并予以纠正。

由于创新能力缺乏,所以没有进一步的创新设计。

在遇到某些问题时,咨询了老师及一些学长学姐。

最终顺利的完成了任务。

7

三.课程任务具体设计

3.1设计思想

设计一个菜单,通过菜单选择实现相应的操作,对于输入的原始信息,使用链表存储它们,这样做的好处是,可以随时增加内容,也容易将两门功课不及格的学生从文件中删除。

为学生设计一个类,单独设计完成这个这个文件读写的成员函数。

使用结构数组作为学生信息简表和两门不及格的学生的存储器,由它们和文件建立读写关系,需要显示它们时,现将文件读入内存,然后再显示。

需要显示输出大于等于平均成绩的学生信息时,则直接从内存链表中筛选。

当然,需要显示原始信息时,也通过直接显示链表信息的方法实现。

这四种数据的显示问题均通过一个成员函数来实现。

为了操作方便,原始数据可以单独存取.修改和查询。

3.2系统总框图

统计学生成绩

增建显保寻均读删结

加立示存找不取除束

原简各原原及原原程

始明种始始格始始序

记文文文记文文记运

录件件件件录件录行

8

3.3各模块设计分析

3.3.1定义头文件

用#define命令自定义宏,用静态结构体函数声明简明文件和不及格文件。

定义一个学生类,说明数据成员函数。

具体代码如下:

#if!

defined(CPP9_H)#defineCPP9_H#include//对文件操作文件输入输出#include//标准库头文件定义杂项函数及内存分配函数#include//定义输入输出函数#include//字符串处理

#include//数据输入输出

#defineASK(p){do{p=newStudent;if(p==NULL){cout<<"memoryfail!

"<<

endl;exit(-1);}}while(0);};//宏定义

staticstructshorts{//静态结构体声明定义变量

charname[16];

doubleave;

}sm[10]={{"",0}};//给静态结构体变量赋初值staticstructbads{//静态结构体声明定义变量

charno[10];//定义学生总数

charname[16];//定义学生姓名

intmath;//定义数学成绩

intchi;//定义语文成绩

doubleave;//定义平均成绩}bad[10]={{"","",0,0}};//给静态结构体变量赋初值

classStudent//定义一个学生类{

private:

//定义私有成员

charno[10];

charname[16];

intmath;

intchi;

doubleave;

Student*next;//定义对象指针

intmenu_select(void);//声明菜单选择函数

public:

//定义公有成员

staticintcount;//定义了一个静态对象

Student();//构造函数的声明

9

~Student();//析构函数的声明

Student*input(Student*);//输入信息函数的声明

voiddisplay(Student*);//显示数据信息函数的声明

voidsave(Student*);//文件存储操作函数的声明

Student*load(Student*);//文件读取操作函数的声明

voidhandle_menu(Student*);//菜单处理函数的声明

Student*delete_record(Student*);//删除学生信息函数的声明

voidshort_record(Student*);//建立简明文件的声明

Student*bad_record(Student*top);//建立不及格文件的声明

voidStudent:

:

find_record(Student*);//查询学生信息函数的声明

friendostream&operator<<(ostream&os,Student&ob);//重载"<<"运算符函数声明

friendistream&operator>>(istream&is,Student&ob);//重载">>"运算符函数声明};

#endif

3.3.2源文件

菜单栏的构建,定义一个student类的构造函数和析构函数,定义一个菜单处理函数和菜单选择函数。

具体代码如下:

#include"cpp9.h"

intStudent:

:

count=0;//声明静态成员记录计数变量/****************************************构造函数

***************************************/Student:

:

Student()//定义构造函数

{

next=NULL;

name[0]='0';

no[0]='';

math=0;

chi=0;

ave=0.0;

}

/****************************************析构函数

***************************************/Student:

:

~Student()//定义析构函数

{

if(next!

=NULL)

deletenext;}//缺省析构函数体为空voidmain()//定义主函数

{

Student*top;//定义对象指针

10

ASK(top);

top->handle_menu(top);}

/************************************菜单处理函数

***********************************/voidStudent:

:

handle_menu(Student*top)//定义菜单处理函数{

for(;;)//相当于while

(1)语句(死循环)

{

switch(menu_select())

{

case1:

top=input(top);//调用输入信息函数

break;

case2:

display(top);//调用显示数据信息函数

break;

case3:

save(top);//调用文件存储操作函数

break;

case4:

top=load(top);//调用文件读取操作函数

break;

case5:

top=delete_record(top);//调用删除学生信息数据函数

break;

case6:

short_record(top);//调用生成简明文件函数

break;

case7:

top=bad_record(top);//调用查询学生信息函数

break;

case8:

find_record(top);

break;

case9:

cout<<"\t退出操作,再见~"<

deletetop;

return;//退出函数

}

}

}

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

11

*菜单选择函数

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

intStudent:

:

menu_select()//定义菜单选择函数{

chars[2];

intcn=0;

cout<<'\n'

<<"\t1,增加原始记录\n"

<<"\t2,显示各种文件\n"

<<"\t3,保存原始文件\n"

<<"\t4,读取原始文件\n"

<<"\t5,删除原始记录\n"

<<"\t6,建立简明文件\n"

<<"\t7,均不及格文件\n"

<<"\t8,寻找原始记录\n"

<<"\t9,结束程序运行\n"

<<"\n\t左边数字对应功能选择,请选择1~9:

"<

for(;;)

{

gets(s);//从键盘接受字符串,并放入数组s中

cn=atoi(s);

if(cn<1||cn>9)cout<<"\n\t输入错误,重选1-9:

"<

elsebreak;

}

returncn;//退出函数

}

3.3.3源文件

定义一个文件存储操作函数,将记录存入文件,再建力一个文件读取操作函数,读取文件信

息。

再用运算符的重载,便于操作自定义数据类型。

具体代码如下:

#include"cpp9.h"

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

*文件存储操作函数

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

voidStudent:

:

save(Student*top)//定义文件存储操作函数{

if(top->name[0]=='0')//如果指针指向对象的name等于0,那么就直接退出函数

{

cout<<"\t没有记录可存!

"<

return;//退出函数

}

ofstreamout;//建立输出流对象

12

out.open("stud.dat",ios:

:

out);//与stud.dat关联并制定以输出方式打开

if(!

out)//如果文件不能打开

{

cout<<"\t不能打开文件!

"<

exit

(1);//非正常退出

}

cout<<"\n\t存文件"<

out<count<<'\n';//重载"<<"运算符

Student*p=top;//定义对象指针

while(p!

=NULL)//当p不为空时

{

out<<*p;//重载"<<"运算符

p=p->next;//对象访问成员

}

out.close();//关闭文件

cout<<'\t'<count<<"条记录已经存入文件,请继续操作。

"<

}

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

*文件读取操作函数

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

Student*Student:

:

load(Student*top)//定义文件读取操作函数

{

ifstreamin;//建立输入流对象

in.open("stud.dat",ios:

:

in|ios:

:

nocreate);//与stud.dat关联并制定以输入方式打开/如果文

件不存在,则打开文件失败

if(!

in)//如果打开文件失败

{

cout<<"\t文件不存在!

"<

returntop;

}

cout<<"\n\t取文件..."<

in>>top->count;

in.

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

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

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

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