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

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

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

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

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

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

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

(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.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<

<

"

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

endl;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

输入用户名:

"

;

cin.getline(customer_name,30);

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

inti=0;

cout.flush();

ch=getch();

开始

while(ch!

=13)

{password[i++]=ch;

'

*'

欢迎界面

}

password[i]=0;

}输入用户名

输入您的资金:

cin>

>

zzch;

shzh=0;

money=zzch;

是否设为管理员?

(yn)"

输入密码

ch;

if(ch=='

y'

||ch=='

Y'

{gly=1;

已设置..."

是否设为管理员

}

elseif(ch=='

n'

N'

)gly=0;

elsecout<

默认为非管理员..."

getch();

system("

cout<

endl<

注册成功..."

注册成功按任意键返回

按任意键返回..."

}

此部分主要使用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'

{进入股票交易市场

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

\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

for(intx=0;

x<

5;

++x)

{

share[x].Stock_Exchange_Market();

temp.Interface();

break;

2.2.5退出系统

0'

{退出

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

\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

第2章详细设计说明

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

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)系统以菜单方式工作:

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

“删除”“退出”功能;

(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)删除一个指定的节点,返回该节点的指针

LookUp(CData&

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

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

ShowList()打印整个链表数据

DeleteList()删除整个链表结点

intCTelRecord:

Compare(CData&

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

voidCTelRecord:

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

2.2.2添加电话簿记录

voidAddRecord(CList&

TelList)将记录添加到链表中

CNode*pNode;

CTelRecord*pTel;

charszName[20],szNumber[20];

输入姓名(输入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);

结点加入链表

cin.getline(szName,20);

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

2.2.3显示电话簿内容

voidDisplayRecord(CList&

TelList)显示全部链表数据

setw(15)<

姓名"

电话号码"

TelList.ShowList();

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

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

voidLookUpRecord(CList&

TelList)按照姓名查找电话簿数据

CNode*pLook;

charszName[20];

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

CTelRecordtele(szName,"

生成结点

pLook=TelList.LookUp(tele);

查找指定节点的数据

if(pLook)

{

cout<

在电话簿中找到"

szName<

内容是:

pLook->

ShowNode();

}

else

在电话簿中查找不到"

."

pause"

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

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

voidDeleteRecord(CList&

TelList)在链表中删除指定结点的数据

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

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

,内容是:

TelList.DeleteNode(pLook);

的资料已删除"

deletepLook;

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

2.2.6退出系统

voidStoreFile(CList&

TelList)将链表中的数据保存在文件中

ofstreamoutfile("

TELEPHONE.DAT"

ios:

binary);

if(!

outfile)

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

\n"

return;

CNode*pnode;

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