中南大学 c++课设报告.docx
《中南大学 c++课设报告.docx》由会员分享,可在线阅读,更多相关《中南大学 c++课设报告.docx(20页珍藏版)》请在冰豆网上搜索。
![中南大学 c++课设报告.docx](https://file1.bdocx.com/fileroot1/2023-2/3/a4d3f73a-7fe7-44f8-b8b9-27b6b98fe471/a4d3f73a-7fe7-44f8-b8b9-27b6b98fe4711.gif)
中南大学c++课设报告
中南大学
面向对象编程(C++)
实验报告
学生姓名郁博文
学院信息科学与工程学院
专业班级信息安全1302班
完成时间2014年6月28日
目录
1.实验内容2
2.实验13
2.1设计思路3
2.2实验过程3
3.实验23
3.1设计思路3
3.3实验过程3
4.实验33
4.1设计思路3
4.2实验过程3
5.总结3
面向对象编程(C++)
1.实验内容
实验1:
构建一个类。
实验2:
编写一个糖果机的系统,能够实现购买糖果、付款、找零等功能。
实验3:
编写一个程序,能够根据输入的学生信息,自动生成成绩报告。
2.实验1:
类与对象
2.1设计思路
构建一个学生类,进行初始化,输入学生学号和姓名信息,输出信息。
2.2实验过程
3.实验2:
糖果机
3.1设计思路
构建三个类,并且初始化这三个类,构造函数使其实现投币、找零、显示商品等功能,然后设计欢迎界面。
欢迎界面会显示商品名称及价格,用户投币后可以购买商品(可重复投币)。
选择所需商品后,自动找零退出。
3.3实验过程
4.实验3:
成绩报告
4.1设计思路
构建一个学生类,一个课程类,通过函数,输入学生姓名、学号、课程数目等信息,输出成绩报告。
如果未缴纳学费,将不显示成绩报告。
4.2实验过程
5.总结
实验一是在刚刚接触类和对象时编写的,是个非常简单的程序,但是正是通过这个程序,我开始接触面向对象的编程。
实验二是编写一个糖果机,本来应该实现连续购买的功能,但多次调试仍然直接跳过了那段else语句,至今没有找到错误在哪。
实验三编写得很艰难,之前没接触过文件方面的内容,所以没有做到直接读取txt文档后输出结果。
通过这几次实验,我发现了自身的不足,比如没有很好的书写习惯,考虑问题不周到,对于面相对象的理解不够深入等。
但在编程的过程中我体验到了一分耕耘一分收获的喜悦;多次调试后程序成功运行了,那时候的欢乐是我以前无法想象的。
果然,学习任何一门课程,只要学得用心,都可以从中体会到学习的快乐。
今后我的进步,想必都是从这一点一点敲入编译器的代码中获得的。
6.代码附录
实验1:
类和对象
头文件:
#include
usingnamespacestd;
classstudent
{
private:
intnum;
charname[10];
public:
voidsetdata()
{
cin>>num;
cin>>name;
}
voiddisplay()
{
cout<cout<};
};
studentstudent1,student2;
源文件:
#include"001.h"
intmain()
{
cout<<"请输入两位学生的学号和姓名:
"<student1.setdata();
student2.setdata();
cout<<"学生的信息:
"<student1.display();
student2.display();
return0;
}
实验2:
糖果机
头文件:
#include
#include
usingnamespacestd;
classmoneycounter
{
public:
moneycounter():
input_money(0.0f){}
~moneycounter(){}
voidgetgukemoney();
floatmoney_from_buyer();
voidclear();
voidreturn_money(float);
private:
floatinput_money;
};
classgoodsinfo
{
public:
goodsinfo():
name(""),price(0.0f),total(0){}
~goodsinfo(){}
voidset_goods(string,float,int);
stringgoods_name();
floatgoods_price();
intgoods_number();
private:
stringname;
floatprice;
inttotal;
};
classcandymachine
{
public:
candymachine();
~candymachine(){}
voidshowchoices();
voidinputmoney();
boolgoodsitem(int);
voidreturn_allmoney();
private:
moneycountermoneyctr;
goodsinfov_goods[5];
};
voidmoneycounter:
:
getgukemoney()
{
floatmoney;
cout<"<cin>>money;
input_money+=money;
cout<"<return;
}
floatmoneycounter:
:
money_from_buyer()
{
returninput_money;
}
voidmoneycounter:
:
clear()
{
input_money=0.0f;
return;
}
voidmoneycounter:
:
return_money(floatchange)
{
cout<"<}
voidgoodsinfo:
:
set_goods(stringn,floatp,intnum)
{
name=n;
price=p;
total=num;
}
stringgoodsinfo:
:
goods_name()
{
returnname;
}
floatgoodsinfo:
:
goods_price()
{
returnprice;
}
intgoodsinfo:
:
goods_number()
{
returntotal;
}
candymachine:
:
candymachine()
{
v_goods[0].set_goods("薯片",3,20);
v_goods[1].set_goods("巧克力",5,0);
v_goods[2].set_goods("口香糖",1.5,20);
v_goods[3].set_goods("牛轧糖",2,30);
v_goods[4].set_goods("水果糖",2,28);
return;
}
voidcandymachine:
:
showchoices()
{
cout.precision
(2);
cout.setf(ios:
:
fixed);
cout<"<cout<for(inti=0;i<5;i++)
{
cout<
<<""<}
cout<<"5退款并且退出"<return;
}
voidcandymachine:
:
inputmoney()
{
cout<"<moneyctr.getgukemoney();
return;
}
boolcandymachine:
:
goodsitem(intselect)
{
intnumber=v_goods[select].goods_number();
if(number>0)
{
if(moneyctr.money_from_buyer()>=v_goods[select].goods_price())
{
floatchange=moneyctr.money_from_buyer()-v_goods[select].goods_price();
cout<"<if(change>0)
{
moneyctr.return_money(change);
}
returntrue;
}
else
{
cout<"<}
}
else
{
cout<"<}
returnfalse;
}
voidcandymachine:
:
return_allmoney()
{
cout<"<return;
}
源文件:
#include"标头.h"
#include
voidmain()
{
system("COLORb0");
candymachinecandy;
stringbuf;
boolgo_on(true),cash_on(true),got_it(true);
cout<cout<<"价目表如下"<cout<<"薯片3.00元"<while(go_on)
{
while(cash_on)
{
candy.inputmoney();
cout<(y/n)";
cin>>buf;
if(buf=="n"||buf=="no")
{
cash_on=false;
}
}
candy.showchoices();
cin>>buf;
intselect=atoi(buf.c_str());
if(select==5)
{
candy.return_allmoney();
go_on=false;
}
else
{
got_it=candy.goodsitem(select);
if(got_it)
{
go_on=false;
}
}
}
cout<"<}
实验3:
学生成绩报告
头文件:
#include
#include"course.h"
#include
usingnamespacestd;
classStudent
{
public:
stringname;
stringxuehao;
floataverage;
floatsum;
floatzongxuefei;
floatzong;
intchoose;
Coursea[5];
floatxuefei[5];
Student();
voidsetdata();
//voidsort();
//voidshow();
};
classCourse
{
private:
stringname;
intid;
intp;
public:
floatxuefen;
floatmoney;
floatmark;
voidset_data(string,int,float,float);
voiddisplay();
};
源文件:
#include
#include
#include"student.h"
#include
#include
usingnamespacestd;
Student:
:
Student()
{
for(inti=0;i<5;i++)
{
a[i].mark=0;
xuefei[i]=800;
}
zong=0;
zongxuefei=0;
choose=0;
sum=0;
}
voidStudent:
:
setdata()
{
cout<<"请输入学生姓名:
";cin>>name;
cout<<"请输入学生学号:
";cin>>xuehao;
}
voidCourse:
:
set_data(stringn,inti,floatx,floatm)
{
name=n;
id=i;
xuefen=x;
money=m;
}
voidCourse:
:
display()
{
cout<<"课程名称"<<'\t'<<"编号"<<'\t'<<"学分"<<'\t'<<"学费"<cout<}
intmain()
{
system("color0a");
ints;
intcount=0;
Courseb[5];
b[0].set_data("高数",1,5,400);
b[1].set_data("英语",2,2,200);
b[2].set_data("语文",3,2,300);
b[3].set_data("物理",4,3,400);
b[4].set_data("电路",5,2,100);
star:
cout<<"***********************************************************************"<cout<<"1显示课程信息"<cout<<"2录入学生信息"<cout<<"***********************************************************************"<intm;
cout<<"请选择操作1,2:
";
cin>>m;
system("cls");
switch(m)
{
case1:
for(inti=0;i<5;i++)
{
b[i].display();
}
getch();
system("cls");
gotostar;
case2:
for(inti=0;i<5;i++)
{
b[i].display();
}
cout<<"请输入录入学生的个数:
";
cin>>s;
Student*pt=newStudent[s];
for(inti=0;i
{
pt[i].setdata();
cout<intc;
do{
intn;
intk;
cout<<"请输入课程编号:
";
cin>>k;
n=k-1;
pt[i].a[n]=b[k-1];
cout<<"请输入学生该课成绩:
";
cin>>pt[i].a[n].mark;
cout<pt[i].sum+=pt[i].a[n].mark;
cout<<"请缴纳"<
cin>>pt[i].xuefei[n];
if(pt[i].xuefei[n]
pt[i].zong+=pt[i].a[n].xuefen;
pt[i].zongxuefei+=pt[i].a[n].money;
pt[i].choose++;
cout<<"继续选课请按1,退出请按0...:
";
cin>>c;
}while(c==1);
pt[i].average=pt[i].sum/pt[i].choose;
}
system("cls");
cout<<"学生分数报告如下:
"<cout<<"姓名"<<'\t'<<"学号"<<'\t'<<"高数"<<'\t'<<"英语"<<'\t'<<"语文"<<'\t'<<"物理"<<'\t'<<"电路"<<'\t'<<"总学费"<<'\t'<<"总学分"<<'\t'<<"平均成绩"<for(inti=0;i
{
cout<for(intj=0;j<5;j++)
{
if(pt[i].xuefei[j]==b[j].money){cout<elseif(pt[i].xuefei[j]
else{cout<<"未选"<<'\t';}
}
cout<cout<}
getch();
system("cls");
gotostar;
}
return0;
}