95分C++毕业课程设计报告Word格式文档下载.docx
《95分C++毕业课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《95分C++毕业课程设计报告Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
打开.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.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++学习的重要知识点,课程设计题目不仅要求对课本知识有较为深刻的理解,而且还具有实际性。
把散的知识紧凑的运用到一起,把调试的过程一点一点