VC++课程设计报告

VC++课程设计报告
VC++课程设计报告

计算机网络课程设计报告

题目:设计一个类CStudent

专业:通信工程

班级:1301

学号:0905130129

姓名:

指导教师:张伟

日期:2014-01-10

一.课程设计的题目/封面

课程设计题目:设计一个类CStudent

二.设计目的

设计目的:这次课程设计旨在让我熟练掌握C++语言的基本语法规则;深刻理解基本的面向对象的程序设计方法,如类的实现,创建类等;全面熟悉各种面向对象的程序设计技术,如输出运算符“<<”重载。在加深我对理论教学内容的理解和掌握的同时,也培养了我分析问题、解决问题的能力,提高了我将课本知识运用到实际生活问题中的实践能力。

三.设计思路

设计思路:先定义一个类CStudent的对象,然后每次从键盘输入要存入的学生信息,将这些输入的信息保存在这个对象里面,再把这个对象写入二进制文件中,接着再读取下一个学生的信息,存入到文件中,同时利用for循环结构来实现循环,直到存入所有学生信息后终止。整个程序中须定义多个成员函数,分别实现不同功能。在程序执行的过程中,运用switch选择语句,通过选择数字0-4,来调用不同函数,以执行不同功能,达到最终目的。程序中用到的多个成员函数各自功能的说明如下:

1.void getdata():从键盘按规定的数据类型输入学生的编号、姓

名、性别、年龄、数学成绩、计算机成绩和外语成绩等信息,

并算出总成绩。

2.void outdate():从“stud.dat”文件中取出学生的数学成绩、

计算机成绩、外语成绩等信息,凭借其算出总成绩和平均成绩,再将其存入到“stud.dat”文件中,并确定在屏幕上显示的学生信息间的间隔。

3.void get():通过for循环和调用getdata()函数,从键盘输入

所有同学的相关信息,并将其存入“stud.dat”文件中。

4.void shaixuan():从键盘输入要筛选学生的性别Sex和总成绩

超过n分,按回车键后,被筛选的学生的相关信息就会显示在屏幕上。

5.void xingming():从键盘输入要筛选学生的姓名,按回车键后,

被筛选的学生的相关信息就会显示在屏幕上。

6.void bianhao():从键盘输入要筛选学生的编号,按回车键后,

被筛选的学生的相关信息就会显示在屏幕上。

解决方案:先分析实际问题,运用所学知识得出设计思路,根据设计思路,划分将要编写的程序模块,如数据类型的定义,函数的定义,main函数对其它函数的调用等,然后按各部分写成相应的程序代码,如按系统要求的不同功能,定义不同的成员函数,然后将其综合成一个总程序,最后运行、调试,若在调试过程中出现错误,再分析、发现、解决问题,直到所设计的程序能达到预期的所有功能。

四.设计原理

设计原理:该程序使用了面向对象设计的系统分析和设计,构造了一个结构类型用于描述学生的相关信息,其成员包括编号、姓名、性别、年龄、数学成绩、计算机成绩和外语成绩,其间还使用了函数的定义、说明与调用,数组的定义、使用与存储,输出运算符“<<”重载,if语句,break语句,switch选择语句,for循环结构等多种语句和结构,最终通过调试,实现了系统的所有预期功能,解决实际问题。

五.设计内容

具体内容

(1)定义数据结构

该程序根据要输入的学生信息,确定了适合的数据类型,学生信息与数据类型对应关系如下:

int Num; //学生编号

char Name[10]; //学生姓名

char Sex[10]; //学生性别

int Age; //学生年龄

float Math,Com,Eng,Total,Ave; //学生数学成绩,计算机成绩,外语成绩,总成绩,平均成绩

(2)程序实现

根据题目要求,最终设计的程序是按如下程序流程图实现的:

(3)程序要求

设计一个类CStudent,类中包含一个学生的基本信息数据如下:编号、姓名、性别、年龄、数学成绩、计算机成绩、外语成绩。并假

从键盘输入学生总数n

switch 选择语句,选择数字0-4

选择1,从键盘按适当数据类型输入所有学生相关信息 选择2,按性别和总成绩超过n 分筛选出相关学生信息 选择3,从键盘输入学生姓名,筛选出相关学生信息 选择4,从键盘输入学生编号,筛选出相关学生信息

选择0,退出程序,执行结束

继续从键盘输入数字0-4

设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。如:1 LiPing m 18 89 98 94

采用binary文件形式,并使用随机读取的处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件的各对象数据进行随机读写处理)。并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。要求成员函数完成以下功能:

(1)从键盘输入一个学生的有关信息,并将他们存入到数据文件中(按编号来确定写出位置)。

(2)按编号对学生信息进行检索并将检索结果显示在屏幕上。

(3)按姓名对学生信息进行检索并将检索结果显示在屏幕上。

(4)计算某编号学生的总成绩与平均成绩。

(5)列出所有总成绩超过n分的性别s同学的有关信息(n,s由用户从键盘输入)。

六.实现步骤

1.实现步骤:先根据题目要求编写好程序代码,然后调试程序,在调试的过程中,先从键盘输入要存入信息的学生人数n,再选择数字1,按程序中规定的数据类型从键盘分别依次输入学生的编号、姓名、性别、年龄、数学成绩、计算机成绩、外语成绩;然后选择数字

2,从键盘输入要筛选学生的性别Sex和总成绩超过多少分,屏幕上就会显示筛选出的学生的信息;然后选择数字3,从键盘输入要筛选学生的姓名,屏幕上就会显示筛选出的学生的信息;然后选择数字4,从键盘输入要筛选学生的编号,屏幕上就会显示筛选出的学生的信息;最后选择数字0,就退出程序。

2.程序代码:

#include

#include

#include

#include

using namespace std;

int n;

class CStudent

{

public:int Num;

char Name[10];

char Sex[10];

int Age;

float Math,Com,Eng,Total,ave;

public: void getdata()

{

cout<<"编号:";

cin>>Num;

cout<

cin>>Name;

cout<

cin>>Sex;

cout<

cin>>Age;

cout<

cin>>Math;

cout<

cin>>Com;

cout<

cin>>Eng;

cout<

Total=Math+Com+Eng;

}

void outdate()

{

Total=Math+Com+Eng;

ave=(Math+Com+Eng)/3;

cout<

}

};

void get()

{ofstream outfile("stud.dat");

CStudent s[50];

int i;

cout<<"输入数据:"<

for(i=0;i

{

cout<<"第"<

s[i+1].getdata();

outfile.write((char*)&s,sizeof(s));

};

outfile.close();

}

void shaixuan()

{

ifstream infile("stud.dat");

CStudent s[50];

int i;

string sex;

float total;

cout<<"请输入你要筛选同学的性别:"<<"";

cin>>sex;

cout<<"请输入你筛选同学的总成绩超过多少分:"<<"";

cin>>total;

infile.read((char*)&s,sizeof(s));

while(infile)

{

for(i=0;i<50;i++)

{

if((sex==s[i].Sex)&&(total<=s[i].Total))

{

cout<<"编号姓名性别年龄数学成绩计算机成绩外语成绩总分平均分"<

s[i].outdate();

}

}

infile.read((char*)&s,sizeof(s));

};

infile.close();

}

void xingming()

{

ifstream infile("stud.dat");

CStudent s[50];

int i;

string str;

cout<<"请输入你要筛选同学的姓名:"<<"";

cin>>str;

infile.read((char*)&s,sizeof(s));

while(infile)

{

for(i=0;i<50;i++)

{

if(str==s[i].Name)

{

cout<<"编号姓名性别年龄数学成绩计算机成绩外语成绩总分平均分"<

s[i].outdate();

}

}

infile.read((char*)&s,sizeof(s));

};

infile.close();

}

void xuehao()

{

ifstream infile("stud.dat");

CStudent s[50];

int i,m;

cout<<"请输入你要筛选同学的编号:"<<"";

cin>>m;

infile.read((char*)&s,sizeof(s));

while(infile)

{

for(i=0;i<50;i++)

{

if(m==s[i].Num)

{

cout<<"编号姓名性别年龄数学成绩计算机成绩外语成绩总分平均分"<

s[i].outdate();

}

}

infile.read((char*)&s,sizeof(s));

};

infile.close();

}

int main()

{

int a;

cout<<"请输入你想添加多少个学生的信息n:"<<"";

cin>>n;

do

{

cout<<"如果你输入数字1,你就可以添加学生信息了;"<<'\n';

cout<<"如果你输入数字2,你就可以筛选出所有总成绩超过n分的性别为sex同学的有关信息了;"<<'\n';

cout<<"如果你输入数字3,你就可以按编号进行筛选了;"<<'\n';

cout<<"如果你输入数字4,你就可以按姓名进行筛选了;"<<'\n';

cout<<"如果你输入数字0,你就可以退出此程序了;"<<'\n';

cin>>a;

switch(a)

{

case 1:get();break;

case 2:shaixuan();break;

case 3:xuehao();break;

case 4:xingming();break;

default:cout<<"error"<

}

}

while(a==1||a==2||a==3||a==4);

return 0;

}

七.最终结果显示

结果显示:

八.总结

在这次程序设计的过程中,我遇到了好多问题,同时也收获了不少。一拿到题目我就非常紧张,害怕自己做不出来,焦虑的情绪让我浪费了好多时间,这让我懂得在生活中遇到问题时,要有良好的心态,一定要镇定自若,决不能惊慌失措。当我花了好久,终于辛辛苦苦设计出了程序,可是当调试时出现了问题,不能达到预期功能,于是我又要回头检查错误,修改程序,这又让我耗了好多时间和精力,这让我知道做任何事都要严谨的态度,并考虑到结果。当遇到问题不能自己独立解决时,我求助了同学,这也让我深刻懂得,在必要的时候我们可以求助他人,但大部分还是要靠自己的力量解决问题。在完整地设计了一个较大的程序后,我对书本上的理论知识有了更全面、深刻

的理解,同时也锻炼了我的动手能力、实践能力、将课本知识运用到

实际生活中的能力。虽然这次程序设计的过程很艰难,但最终我成功了,我觉得一切的努力都是值得的。

相关主题
相关文档
最新文档