本科毕业设计论文c++课程设计报告程序设计方法.docx

上传人:b****5 文档编号:6008269 上传时间:2023-01-02 格式:DOCX 页数:41 大小:524.28KB
下载 相关 举报
本科毕业设计论文c++课程设计报告程序设计方法.docx_第1页
第1页 / 共41页
本科毕业设计论文c++课程设计报告程序设计方法.docx_第2页
第2页 / 共41页
本科毕业设计论文c++课程设计报告程序设计方法.docx_第3页
第3页 / 共41页
本科毕业设计论文c++课程设计报告程序设计方法.docx_第4页
第4页 / 共41页
本科毕业设计论文c++课程设计报告程序设计方法.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

本科毕业设计论文c++课程设计报告程序设计方法.docx

《本科毕业设计论文c++课程设计报告程序设计方法.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文c++课程设计报告程序设计方法.docx(41页珍藏版)》请在冰豆网上搜索。

本科毕业设计论文c++课程设计报告程序设计方法.docx

本科毕业设计论文c++课程设计报告程序设计方法

 

河南科技大学

C++课程设计报告

 

课程名称程序设计方法

院系管理学院

班级信管141班

学号141406070115

学生姓名刘国伟

指导教师曾波

日期2016-12-26

一、总体要求

C++课程设计是教学实践环节,通过此课程设计旨在:

(1)提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡;

(2)培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势;

(3)学习和掌握C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。

本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,独立做出课程设计报告。

二、设计题目

2.1基础设计题目

1.定义一个公司类(学号尾数为奇数的同学完成)

(1)私有成员为,公司名称,总经理,公司成员(姓名、工作),采用指针动态数组方式存储公司成员。

(2)重载“+”操作,表示两个公司合并,公司名称由两个公司名称连接到一起,第一操作数变为合并公司的总经理,第二操作数变为副总经理。

(3)重载[]操作以获得第i个公司人员信息。

(4)设计该类的对象不能拷贝构造及赋值

源代码:

#include

#include

voidchoice(int);

voidmenu1();

voidmenu2();

classCompaney;

CompaneyMsgSet(Companey);

CompaneyMsgSet2(Companey);

voidMsgPrint();

voidSumShow();

usingnamespacestd;

classEmployee

{

public:

Employee(){}

Employee(stringa,stringb)

{

Name=a;

Work=b;

}

stringgetName()

{

returnName;

}

stringgetWork(){

returnWork;

}

private:

stringName;

stringWork;

};

classCompaney

{

public:

Companey(){};

Companey(stringa,stringb,intc){

CompaneyName=a;

Manager=b;

num=c;

ep=newEmployee[num];

}

Companey(stringa,stringb,stringc,intd,Employee*e){

CompaneyName=a;

Manager=b;

Manager2=c;

num=d;

ep=e;

}

voidaddEmployee()

{

for(inti=0;i

{

stringEname;

stringEwork;

cout<<"输入第"<

"<

cin>>Ename;

cout<<"输入"<

"<

cin>>Ework;

ep[i]=Employee(Ename,Ework);

}

}

stringgetName(){

returnCompaneyName;

}

stringgetManager(){

returnManager;

}

intgetNum(){

returnnum;

}

Employee*getElp()

{

returnep;

}

voidtoPrint()

{

cout<<"公司名称:

"<

cout<<"总经理名字:

"<

cout<<"--------------工作人员------------------"<

cout<<"姓名"<<""<<"工作"<

for(intm=0;m

{

cout<

}

}

friendCompaneyoperator+(Companey&C1,Companey&C2)

{

stringname=C1.getName()+C2.getName();

stringone=C1.getManager();

stringtwo=C2.getManager();

intnum=C1.getNum()+C2.getNum();

Employee*n=newEmployee[num];

Employee*m;

m=C1.getElp();

Employee*k=C2.getElp();

ints=C1.getNum();

for(inta=0;a

{

n[a]=m[a];

}

for(intb=0;b

{

n[s]=k[b];

s=s+1;

}

Companeytemp(name,one,two,num,n);

returntemp;

}

voidaddShow()

{

cout<<"公司名称为:

"<

cout<<"总经理为:

"<

"<

cout<<"工作人员"<<"\t"<<"工作"<

for(intx=0;x

{

cout<

}

}

private:

stringCompaneyName;

stringManager;

stringManager2;

intnum;

Employee*ep;

 

};

CompaneyC1;

CompaneyC2;

intmain()

{

inti;

menu1();

cin>>i;

choice(i);

}

voidchoice(intn)

{

switch(n)

{

case1:

C1=MsgSet(C1);

main();

case2:

C2=MsgSet2(C2);

main();

case3:

C1.toPrint();

C2.toPrint();main();

case4:

SumShow();

main();

case5:

exit(0);

default:

cout<<"输入错误请重新输入"<

main();

}

}

CompaneyMsgSet(CompaneyC1)

{

stringname;

stringMname;

intnum;

cout<<"公司信息录入"<

cout<<"输入公司名称:

"<

cin>>name;

cout<<"输入总经理名称:

"<

cin>>Mname;

cout<<"输入公司人员数目:

"<

cin>>num;

C1=Companey(name,Mname,num);

C1.addEmployee();

cout<<"公司信息录入成功。

"<

returnC1;

//C1.toPrint();

}

CompaneyMsgSet2(CompaneyC2)

{

stringname;

stringMname;

intnum;

cout<<"公司信息录入"<

cout<<"输入公司名称:

"<

cin>>name;

cout<<"输入总经理名称:

"<

cin>>Mname;

cout<<"输入公司人员数目:

"<

cin>>num;

C2=Companey(name,Mname,num);

C2.addEmployee();

cout<<"公司信息录入成功。

"<

returnC2;

//C1.toPrint();

}

voidSumShow()

{

Companeytemp=C1+C2;

inti;

menu2();

cout<<"请输入选项:

"<

cin>>i;

switch(i)

{

case1:

temp.addShow();SumShow();

case2:

{

intz;

cout<<"查找第几位员工"<

cin>>z;

while(z>temp.getNum())

{

cout<<"对不起您输入的数字超过了工作人员数,请重新输入"<

cin>>z;

}

Employee*e=temp.getElp();

cout<<"该工作人员姓名是:

"<

cout<<"该工作人员工作是:

"<

}

SumShow();

case3:

main();

default:

cout<<"输入不正确请重新输入"<

}

}

voidmenu1()

{

cout<<"题目1"<

cout<<"1.输入第一个公司的相关信息:

"<

cout<<"2.输入第二个公司的相关信息:

"<

cout<<"3.输出两个公司的信息:

"<

cout<<"4.两个公司合并后的信息:

"<

cout<<"5.退出系统"<

}

voidmenu2()

{

cout<<"公司合并"<

cout<<"1.查看合并后的公司信息"<

cout<<"2.查找工作人员"<

cout<<"3.返回"<

}

3、必做题目(所有同学完成):

(1)设计抽象类:

交通工具类。

(2)派生类:

汽车类、火车类、飞机类。

(3)设计函数:

获得交通类型名称函数,函数可以根据不同交通工具类型输出不同的运输方式获得交通类型名称。

(4)设计运输函数,参数为运输人数,在不同派生类实现该函数,要求:

汽车<40;飞机<200;火车<2000;在不同类中如果参数超出范围则应输出错误信息或抛出字符串异常。

源代码:

#include

usingnamespacestd;

classVehicle

{

public:

virtualvoidprint()

{

cout<<"交通工具类"<

}

virtualvoidways()=0;

virtualvoidcheck(intx)=0;

};

classcar:

publicVehicle

{

public:

voidprint()

{

cout<<"汽车"<

}

voidways()

{

cout<<"汽车的运输方式是公路运输"<

}

voidcheck(intx)

{

try

{

if(x<40)

{

cout<<"乘坐人员没有超载"<

}

else

throw"抛出异常!

";

}

catch(char*str)

{

cout<<"异常信息是:

"<

}

}

};

classtrain:

publicVehicle

{

public:

voidprint()

{

cout<<"火车"<

}

voidways()

{

cout<<"火车的运输方式是铁路运输"<

}

voidcheck(intx)

{

try

{

if(x<2000)

{

cout<<"乘坐人员没有超载"<

}

else

throw"抛出异常!

";

}

catch(char*str)

{

cout<<"异常信息是:

"<

}

}

};

classplane:

publicVehicle

{

public:

voidprint()

{

cout<<"飞机"<

}

voidways()

{

cout<<"飞机的运输方式是航空运输"<

}

voidcheck(intx)

{

try

{

if(x<200)

{

cout<<"乘坐人员没有超载"<

}

else

throw"抛出异常!

";

}

catch(char*str)

{

cout<<"异常信息是:

"<

}

}

};

intmain()

{

carc;traint;planep;

intn;

Vehicle*vehicle;

vehicle=&c;

vehicle->print();

vehicle->ways();

cout<<"输入乘坐的人数:

";

cin>>n;

vehicle->check(n);

cout<

vehicle=&t;

vehicle->print();

vehicle->ways();

cout<<"输入乘坐的人数:

";

cin>>n;

vehicle->check(n);

cout<

vehicle=&p;

vehicle->print();

vehicle->ways();

cout<<"输入乘坐的人数:

";

cin>>n;

vehicle->check(n);

cout<

system("pause");

return0;

}

题目4.车辆管理系统设计

1、问题描述

车辆管理系统主要负责各种车辆的常规信息管理工作。

系统中的车辆主要有大客车、小轿车和卡车。

每种车辆有车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息。

大客车还有载客量(最大载客数)信息,小轿车还有箱数(两厢或三厢)信息,卡车还有载重量等信息。

每台车辆当月总费用=油价*耗油量/公里+基本维护费用。

基本维护费用:

客车:

2000元/月,小轿车:

1000元/月,卡车:

1500元/月

2、功能要求

(1)添加车辆:

主要完成车辆信息的添加,要求编号唯一。

当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再添加新的数据。

(2)查询车辆:

可按照三种方式来查询物品,分别为:

按车辆制造公司查询:

输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!

”;

按编号查询:

输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!

”;按类别查询:

输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!

”;

(3)显示车辆信息库:

输出当前车辆信息库中所有车辆信息,每条记录占据一行。

(4)编辑功能:

可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除车辆:

主要完成车辆信息的删除。

如果当前车辆信息库为空,则提示“车辆信息库为空!

”,并返回操作;否则,输入要删除的编号,根据编号删除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。

(6)统计信息

输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。

(7)车辆信息存盘:

将当前程序中的车辆信息存入文件中。

(8)读出车辆信息:

从文件中将车辆信息读入程序。

(9)可自行添加新功能(加分项)

1.需求分析

随着社会的进步和人们生活水平的提高,车辆作为交通工具,已经成为人们日常生活中不可缺少的一部分.大大增加了交通压力,同时,也对车辆里的管理有了一个更高的要求.因此,需要一个车辆管理系统来对各种车辆的各种信息进行统一管理.

 

2.系统功能模块图

3.测试

 

 

 

 

 

 

 

 

 

 

 

4、结论

程序总共设计了三个类,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C++的编程思想来完成系统的设计,做到了用文件存储车辆信息、从文件中读取车辆信息、修改信息、查询信息、删除信息显示文件中存储的信息等要求。

而且界面简洁,容易操作。

但是程序不太条理,不够简练,导致出现错误很难发现和修改。

同时,发现一个难点,那就是类的封装。

一个可以运行的程序要把它成功的封装起来也很困难。

系统的错误提示难以识别,错误点不易找到,导致程序的耗时量大大增加。

5、心得体会

这次课程设计历经两个星期,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,也有很多闻所未闻的东西,从而更加明白知识扎实的重要性,理解实践能力的重要性!

因为基础知识的不扎实让我在这次课程设计中走了许多弯路,不过我认为是值得的,它大大的补充了我知识不足的那一面,我始终相信付出必有收获。

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

通过这次车辆管理系统的设计,我在多方面都有所提高。

首先,整体与局部的把握,在系统设计前,需要整体思考车辆管理系统所包含的信息及其实现的功能,在设计过程中,再思考局部功能实现的完整性与整个程序的结合。

其次,在实现用户权限设置这个功能时,通过查阅课本、资料,实践,对字符串的使用(strcmp(mm,"1234");)更加熟悉、了解,能够熟练运用字符串,而且加强了对类中参数传值的使用,巩固了类定义,函数成员使用等知识,并通过条件语句实现不同的人设置不同的操作,在实现查找功能时,更熟练了指针对象的使用。

最后,在整个程序运行时,考虑到屏幕出现的效果,查阅资料及其前人的登录系统代码,了解了库函数中的屏幕清零函数(system("cls");),并能正确使用。

课程设计使我对c++课程又进行了系统的复习,独立思考的能力也有了提高。

同时感谢老师和同学的帮助,在他们的帮助下,我才能顺利完成设计。

6、参考书目

1.《C++语言基础教程》清华大学出版社吕凤翥

2.《C++程序设计教程》(第二版)清华大学出版社钱能

3.谭浩强.C++程序设计教程清华大学出版社

4.谭浩强.C++面向对象程序设计清华大学出版社

5.VisualC++从入门到精通

源代码:

#include

#include

#include

#include

usingnamespacestd;

classBase

{

public:

virtualvoidread()=0;

virtualvoidadd()=0;

virtualvoidmodify(int)=0;

virtualvoiddel(int)=0;

virtualvoidsave()=0;

virtualvoidsearch()=0;

};

classCar:

publicBase

{

public:

doublecarFee;

charcarID[20];

charcarName[20];

voidread();

voidadd();

voidmodify(int);

voiddel(int);

voidsave();

voidsearch();

};

constintMAXcar=10;

externCarcar[MAXcar];

externintcount_car;

voidCar:

:

read()

{

ifstreamcarfile;

carfile.open("轿车信息.txt");

carfile>>car[count_car].carID>>car[count_car].carName>>car[count_car].carFee;

while(!

carfile.eof())

{

count_car++;

carfile>>car[count_car].carID>>car[count_car].carName>>car[count_car].carFee;

}

carfile.close();

}

voidCar:

:

add()

{

strcpy(car[count_car].carID,carID);

strcpy(car[count_car].carName,carName);

car[count_car].carFee=carFee;

count_car++;

}

voidCar:

:

modify(intindex)

{

strcpy(car[index-1].carID,carID);

strcpy(car[index-1].carName,carName);

car[index-1].carFee=carFee;

}

voidCar:

:

del(intindex)

{

//前移其后记录

for(inti=index;i<=count_car-1;i++)

{

strcpy(car[i-1].carID,car[i].carID);

str

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

当前位置:首页 > 求职职场 > 简历

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

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