95分C++毕业课程设计报告.docx

上传人:b****5 文档编号:6399649 上传时间:2023-01-06 格式:DOCX 页数:26 大小:522.38KB
下载 相关 举报
95分C++毕业课程设计报告.docx_第1页
第1页 / 共26页
95分C++毕业课程设计报告.docx_第2页
第2页 / 共26页
95分C++毕业课程设计报告.docx_第3页
第3页 / 共26页
95分C++毕业课程设计报告.docx_第4页
第4页 / 共26页
95分C++毕业课程设计报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

95分C++毕业课程设计报告.docx

《95分C++毕业课程设计报告.docx》由会员分享,可在线阅读,更多相关《95分C++毕业课程设计报告.docx(26页珍藏版)》请在冰豆网上搜索。

95分C++毕业课程设计报告.docx

95分C++毕业课程设计报告

(此文档为word格式,下载后您可任意编辑修改!

 

《C++程序设计》课程设计报告

 

题目:

个人必备三大件

 

院(系)理学院

专业数学与信息类

学生姓名

学号

班级序号

任课教师

提交日期

三大件之一

股票交易管理系统

第一章课程设计目的和实现功能………………………………4

1.1课程设计的目的

1.2课程设计实现功能简介

第二章详细设计说明

2.1新增函数…………………………………………………5

2.2分模块函数说明与流程图

2.2.1类的使用………………………………………6

2.2.2新用户注册……………………………………7

2.2.3用户登录

添加删除股票………………………………8

挂起挂出股票……………………………8

买卖股票…………………………………8

2.2.4查看股票情况……………………………………9

2.2.5退出系统………………………………………10

第三章演示示例………………………………………………10

第4章调试错误与改正反思……………………………………14

第六章心得体会……………………………………………………14

第一章课程设计目的和实现功能

1.1课程设计的目的

进一步巩固《C++程序设计》所学的知识,加强对数组、指针、结构体、文件数据类型的应用,熟悉面向过程的结构化和面向对象的可视化程序设计方法,加深对高级语言C++的理解,锻炼程序设计、程序调试、以及用C++语言解决实际问题的能力,为后续课程打好基础,进行此次课程设计。

在调试、编译过程中,遇到error和warming,自主寻找错误根源,改正后再继续调试的过程,无疑是巩固C++基础的最好途径。

1.2课程设计实现功能简介

设计一个小型的股票交易管理系统,实现:

(1)系统以菜单方式工作:

打开.exe可执行文件后,进入选择页面,用户

输入相应数字进入“股票交易市场”“用户登录”

“新用户注册”“退出”功能;

(2)股票交易市场:

从系统菜单进入,显示5个股票的代码、流通、发行、

挂出情况;

(3)用户登录:

从系统菜单进入,输入用户名和密码以登录,登录后再进

入选择菜单,进行如下选择:

买入和卖出:

用户输入股票代码和交易股数;

添加新股票:

输入股票名、代码、流通数和发行价;

挂出新股票:

显示所有股票,提示用户输入要挂出的股票代码;

删除已有股:

显示所有股票,提示用户输入要删除的股票代码;

挂起股票:

显示所有股票,提示用户输入要挂起的股票代码;

修改代码和名称:

输入原代码进行修改;

查看:

显示股市信息和用户资金信息;

退出:

回到原菜单;

(4)新用户注册:

显示欢迎界面,请用户输入姓名和密码(小于8位数),

设置“是否成为管理员”(对股票的挂起和删除有作用)

显示开户成功。

(5)系统退出功能:

在菜单中选择0直接退出。

第二章详细设计说明

2.1新增函数

根据课程设计要求,新增以下函数:

新增加的函数

完成的情况

Input_For_New_Stock()——添加新股票

先对股票数据进行读取,显示股票信息,提示输入股票代码,考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我对程序加入了一些代码,从而解决这些异常。

然后调用Input_For_New_Stock(),提示输入股票的名称、代码、流通股数量、发行价,同时随机生成股票上市价。

最后,在Stock_File.dat的空位置插入存储新股票信息。

Delete_Stock()——删除旧股票

先对股票数据进行读取,显示股票信息。

然后调用Delete_Stock(),提示输入要删除的股票代码,同样考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我加入了一些代码,从而解决这些异常。

最后,存储修改后的信息。

Hang_Up_Stock()——挂起股票,停止交易

先对股票数据进行读取,显示股票信息。

然后调用Hang_Up_Stock(),提示输入要挂起的股票代码,同样考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我加入了一些代码,从而解决这些异常。

最后,存储修改后的信息。

Modify_Stock()——修改股票的名称、代码

先对股票数据进行读取,显示股票信息。

然后调用Modify_Stock(),提示输入要修改的股票代码,同样考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我加入了一些代码,从而解决这些异常。

最后,存储修改后的信息。

2.2分模块函数说明与流程图

2.2.1类的使用

此程序中共定义了两个类,类内声明类外定义。

Stock类

(存放股票数据,类中方

法对股票进行各项操作)

Customer类

(存放用户信息,类中方

法对用户进行各项操作)

原程序缺陷:

程序反复声明了Stock和Customer类的同一对象,浪费了系统资源;在一些函数调用中也存在缺陷,比如存在Input_For_New_Stock()方法,但是只有在第一次使用是才会调用,Customer类中原有Switch_function()也没有调用。

在用户选择登录时,无法辨别用户名,只根据密码进行登录,当遇到密码相同的用户时,就分不清楚用户。

密码是显示输入的不能有效的受到保护。

2.2.2新用户注册

voidCustomer:

:

Register(Customer*cust)

{charch;

system("cls");执行系统命令:

清屏=cls

cin.get();

cout<<"欢迎进入*************股票交易系统***********"<

cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<

cout<<"输入用户名:

";

cin.getline(customer_name,30);

cout<<"输入您的密码(少于8字):

"<

{charch;inti=0;cout.flush();ch=getch();开始

while(ch!

=13)

{password[i++]=ch;cout<<'*';

cout.flush();ch=getch();欢迎界面

}

password[i]=0;

}输入用户名

cout<

";

cin>>zzch;shzh=0;money=zzch;

cout<<"是否设为管理员?

(yn)"<

cin>>ch;

if(ch=='y'||ch=='Y')

{gly=1;cout<<"已设置...";是否设为管理员

}

elseif(ch=='n'||ch=='N')gly=0;

elsecout<<"默认为非管理员...";

getch();

system("cls");

cout<

cout<<"注册成功..."<

cout<<"按任意键返回..."<

getch();

}

此部分主要使用if~else条件判断句对“是否设为管理员”进行选择。

2.2.3用户登录

1、登录:

输入用户名和密码,使用if(strcmp(pass_word,password)==0)语句进行核对。

进入选择页面:

Switch

2、添加删除股票(以删除为例)

否您无权删除股票!

case'5是否为管理员

是voidStock:

:

Delete_Stock()

3、挂出挂起股票(以挂起为例)

代码错误

代码正确不能挂起

4、买卖股票(以买入为例)

2.2.4查看股票情况

在最初的选择菜单中选择“1”进入股票交易市场,显示代码、流通数、发行价、是否挂起的信息。

case'1':

{进入股票交易市场

system("cls");

cout<<"\n\n\t\t********************股票交易市场********************"<

cout<<"\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<

cout<<"公司\t\t代码\t流通股\t可动股\t发行价上市价状态"<

cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<

for(intx=0;x<5;++x)

{

share[x].Stock_Exchange_Market();

}

getch();

temp.Interface();

break;

}

2.2.5退出系统

case'0':

{退出

system("cls");

cout<<"感谢您使用********************股票交易市场******************"<

cout<<"\t再见!

"<

exit(0);

第三章演示示例

第四章调试错误与改正反思

1、c:

\users\dell\desktop\c++课程设计\c++源程序\3_4_4股票交易管理.cpp(8):

error

C2008:

'=':

unexpectedinmacrodefinition

错误原因及改正:

#defineMAX=5#defineMAX5

将等于号去掉

2、在连接中出现错误:

3_4_4股票交易管理.obj:

errorLNK2001:

unresolvedexternal

symbol"public:

void__thiscallStock:

:

Save(classStock*

const)"(?

@@QAEXQAV1@@Z)

经查找,错误原因为voidStock:

:

Save(Stockt[])仅声明未定义。

3、多层括号混乱问题。

4、个别词汇拼写错误出现“undeclare”的错误

5、在其他错误中,还出现了“;”的疏漏

第五章心得体会

经过他人的帮助,终于完成了此次课程设计,收获颇丰。

通过请教、编辑、调试,毋庸置疑使我在理论、操作方面都有所提高,学会了如何将所学知识应用到实际,体会到C语言的强大。

但由于所学知识有限、编程经验不足,课程设计进行中遭遇错误、卡壳、无从下手等困难,但正由此可见,实践对于学习C语言的重要性。

因此,为了在今后必要时能熟练使用C++语言,还需时常的学习和长久的应用训练,使之成为自己的一项本领。

参考文献:

C++程序设计实践指导谭浩强主编清华大学出版社2005年

三大件之二

电话簿管理系统

第一章课程设计目的和实现功能………………………………17

1.1课程设计的目的

1.2课程设计实现功能简介

第2章详细设计说明

2.1主函数…………………………………………………18

2.2分模块函数说明与流程图

2.2.1类的使用………………………………………19

2.2.2添加电话簿记录………………………………20

2.2.3显示电话簿内容………………………………20

2.2.4根据姓名查询电话簿数据……………………21

2.2.5根据姓名删除电话簿数据……………………22

2.2.6退出系统………………………………………23

第三章演示示例………………………………………………24

第5章调试错误与改正反思…………………………………26

第五章心得体会………………………………………………26

第一章课程设计目的和实现功能

1.1课程设计的目的

进一步巩固《C++程序设计》所学的知识,加强对数组、指针、结构体、文件数据类型的应用,熟悉面向过程的结构化和面向对象的可视化程序设计方法,加深对高级语言C++的理解,锻炼程序设计、程序调试、以及用C++语言解决实际问题的能力,为后续课程打好基础,进行此次课程设计。

在调试、编译过程中,遇到error和warming,自主寻找错误根源,改正后再继续调试的过程,无疑是巩固C++基础的最好途径。

1.2课程设计实现功能简介

设计一个小型的电话薄程序,实现:

(1)系统以菜单方式工作:

打开.exe可执行文件后,进入选择页面,用户

输入相应数字进入“添加”“显示”“查询”

“删除”“退出”功能;

(2)信息录入功能:

系统提示输入姓名(最多20位,以0结束);回车后系

统提示输入电话号码(最多20位,回车结束);

(3)信息浏览功能:

同一联系人姓名与号码同行以15个字节隔开;

(4)信息查询功能:

输入需要查找的姓名(以0结束),若找到,输出相应

信息,若未找到,显示错误信息并提示重新输入;

(5)信息删除功能:

输入需要查找的姓名(以0结束),若找到,先输出此

联系人信息,再进行删除,并提示“***的资料已删除”

(6)系统退出功能:

将链表中的数据保存,屏幕输出“欢迎再次使用”。

程序中综合、大量运用了类(类内定义类外生命)、数组、指针、引用if~else条件语句,while和do~while循环语句。

第二章详细设计说明

2.1主函数

2.2分模块函数说明与流程图

2.2.1类的使用

在此电话簿程序中,共定义了四个类,其中一个为派生类,如下:

classCData定义数据基类

classCNode定义节点基类

classCList

classCTelRecord:

publicCData电话薄记录,为数据基类的共有派生类

在类内定义后,类外声明如下:

CNode*CList:

:

GetListNextNode(CNode*pnode)返回链表指定节点的下一个结点

voidCList:

:

AddNode(CNode*pnode)在首部添加节点

CNode*CList:

:

DeleteNode(CNode*pnode)删除一个指定的节点,返回该节点的指针

CNode*CList:

:

LookUp(CData&data)查找一个指定的数据,返回该数据所在节点在链表

中的指针,若未找到返回0

voidCList:

:

ShowList()打印整个链表数据

voidCList:

:

DeleteList()删除整个链表结点

intCTelRecord:

:

Compare(CData&data)比较姓名,供查找用,比较结果为1、0、-1

voidCTelRecord:

:

Show()打印一个结点的数据

2.2.2添加电话簿记录

voidAddRecord(CList&TelList)将记录添加到链表中

{

CNode*pNode;

CTelRecord*pTel;

charszName[20],szNumber[20];

cout<<"输入姓名(输入0结束):

";

cin.ignore();

cin.getline(szName,20);

while(strcmp(szName,"0"))

{

cout<<"输入电话号码:

";

cin.getline(szNumber,20);

pTel=newCTelRecord;生成新的数据类对象

pTel->SetRecord(szName,szNumber);数据类对象赋值

pNode=newCNode;生成新的节点

pNode->InputData(pTel);结点赋值

TelList.AddNode(pNode);结点加入链表

cout<<"输入姓名(输入0结束):

";

cin.getline(szName,20);

}

cout<

}

在此模块中调用了SetRecordInputDataTelList.AddNode函数,使用了if条件判断句。

2.2.3显示电话簿内容

voidDisplayRecord(CList&TelList)显示全部链表数据

{

cout<

TelList.ShowList();

cout<

}

先输出文字“姓名”、“电话号码”换行调用TelList.ShowList函数

2.2.4根据姓名查询电话簿数据

voidLookUpRecord(CList&TelList)按照姓名查找电话簿数据

{

CNode*pLook;

charszName[20];

cout<<"输入您需要查找的姓名(输入0结束)";

cin.getline(szName,20);

while(strcmp(szName,"0"))

{

CTelRecordtele(szName,"0");生成结点

pLook=TelList.LookUp(tele);查找指定节点的数据

if(pLook)

{

cout<<"在电话簿中找到"<

"<

pLook->ShowNode();

}

else

cout<<"在电话簿中查找不到"<

cout<<"输入您需要查找的姓名(输入0结束)";

cin.getline(szName,20);

}

cout<

system("pause");

}

在此模块中调用了CTelRecordtelTelList.LookUpShowNode函数,使用了if条件判断句和while循环句。

2.2.5根据姓名删除电话簿数据

voidDeleteRecord(CList&TelList)在链表中删除指定结点的数据

{

CNode*pLook;

charszName[20];

cout<<"输入您需要删除的姓名(输入0结束)";

cin.getline(szName,20);

while(strcmp(szName,"0"))

{

CTelRecordtele(szName,"0");

pLook=TelList.LookUp(tele);

if(pLook)删除时应先查找出结点

{

cout<<"在电话簿中找到"<

"<

pLook->ShowNode();

TelList.DeleteNode(pLook);

cout<

deletepLook;

}

else

cout<<"在电话簿中查找不到"<

cout<<"输入您需要删除的姓名(输入0结束)";

cin.getline(szName,20);

}

cout<

}

在此模块中调用了CTelRecordteleShowNodeTelList.DeleteNode函数,使用了if条件判断句和while循环句,使用了指针和delete指针功能

2.2.6退出系统

voidStoreFile(CList&TelList)将链表中的数据保存在文件中

{

ofstreamoutfile("TELEPHONE.DAT",ios:

:

binary);

if(!

outfile)

{

cout<<"数据文件打开错误,没有将数据讯如文件!

\n";

return;

}

CNode*pnode;

CTelRecord*pTel;

stringstrName,strNumber;

pnode=TelList.GetListHead();取出链表首节点的指针

while(pnode)

{

pTel=(CTelRecord*)pnode->GetData();返回节点指向的数据域指针

outfile.write((char*)pTel,sizeof(CTelRecord));将数据域写入文件

pnode=TelList.GetListNextNode(pnode);取下一结点的指针

}

outfile.close();

}

使用了指针、if条件判断句,while循环句,调用了GetData函数,TelList.GetListNextNode函数。

第三章演示示例

1.添加电话簿内容

2.输入0结束,再进入选择菜单

3.显示电话簿内容,显示后自动回到选择菜单

4.根据姓名查询电话簿数据,输入“李四”

5.根据姓名删除电话簿数据,输入“李四”

6.退出系统

第四章调试错误与改正反思

1、C:

\Users\DELL\Desktop\C++课程设计\C++源程序\3_4_1电话簿.cpp(239):

errorC2059:

syntaxerror:

'sizeof'

错误出现在“outfile.write((char*)pTel,sizeof(CTelRecord));将数据域写入文件”语句中,错误原因为把“,”误打成“.”。

(char*)pTel和sizeof(CTelRecord)为两个实参,应用逗号分开。

2.C:

\Users\DELL\Desktop\C++课程设计\C++源程序\3_4_1电话簿.cpp(255):

errorC2065:

'StoreFlie':

undeclaredidentifier

出现undeclared错误,即知为“未定义”,出现了漏打或误打的问题,经检查,原因为file拼写错误。

3.在其他错误中,还出现了“;”的疏漏,多重括号的疏漏的问题。

通过调试,基本看到错误提示可以自行认识到错误根源,认知并一条一条改正错误的过程使得对错误的识别能力得到提高

第五章心得体会

本次课程设计涵盖了大一C++学习的重要知识点,课程设计题目不仅要求对课本知识有较为深刻的理解,而且还具有实际性。

把散的知识紧凑的运用到一起,把调试的过程一点一点落实改正,对学习掌握

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

当前位置:首页 > 考试认证 > 公务员考试

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

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