c++高手救命啊..我课程设计检查了半天不知道哪些地方出问题了..我快崩溃了..

oooooa1 2006-01-08 02:11:19
#include<iostream>
#include<cstring>
using namespace std;
class tv
{
protected:
float price;
char classic[20];
public:
tv();
tv(tv&p0);
~tv(){}

virtual void setprice();
float getprice();
void setclassic();
char* getclassic();
friend class company;
};


class dvd:public tv
{

public:
dvd();

~dvd(){}
friend class company;
};


class tvdvd:public dvd
{
public:
tvdvd();
~tvdvd(){}
void setprice();
friend class company;
};


class company
{
public:
company();
void search(tv [],dvd [],tvdvd []);

void add(tv [],dvd [],tvdvd []);
void change(tv [],dvd [],tvdvd []);

};
tv::tv()
{
price=0.0;
}
tv::tv(tv&p0)
{price=p0.price;
classic[20]=p0.classic[20];
}
void tv::setclassic()
{char classics[20];
cin>>classics;
strcpy(classic,classics);
}

void tv::setprice()
{
float pri;
cin>>pri;
price=pri;
}

float tv::getprice()
{
return price;
}

char* tv::getclassic()
{
return classic;
}

dvd::dvd()
{}


tvdvd::tvdvd()
{}


void tvdvd::setprice()
{
price=(tv::price+dvd::price)*0.8;
}

company::company()
{}
void company::add(tv a0[3],dvd a1[3],tvdvd a2[3])
{

int s;
int a;
int i=3;
loop:
cout<<"请输入要添加的产品:"<<endl<<"1.电视机"<<endl<<"2.DVD"<<endl
<<"3.带DVD的电视机"<<endl;
cin>>a;
if(a==1)
{
cout<<"请输入要添加的电视品牌名:"<<endl;
i++;
a0[i].setclassic();
cout<<"添加成功!"<<endl;
}
else
if(a==2)
{cout<<"请输入要添加的DVD品牌名:"<<endl;
i++;
a1[i].setclassic();
cout<<"添加成功!"<<endl;
}
else
if(a==3)
{cout<<"请输入要添加的带DVD的电视品牌名:"<<endl;
i++;
a2[i].setclassic();
cout<<"添加成功!"<<endl;
}
else
cout<<"errors!"<<endl;
cout<<"保存信息?"<<endl<<"1.yes"<<endl<<"2.no"<<endl;
cin>>s;
if(s==2)
goto loop;

}





void company::change(tv a0[3],dvd a1[3],tvdvd a2[3])
{

int cha;
int s;
int i;
cout<<"请选择要修改的产品:"<<endl<<"1.电视机"<<endl<<"2.DVD"<<endl
<<"3.带DVD的电视机"<<endl;
cin>>cha;
loop:
if(cha==1)
{
cout<<"请选择要修改的电视品牌名:"<<endl;
for(i=0;i<3;i++)
{
cout<<i<<"."<<a0[i].getclassic()<<endl;
}

cin>>i;

a0[i].setclassic();


cout<<"修改成功!"<<endl;
}
else
if(cha==2)
{
cout<<"请选择要修改的DVD品牌名:"<<endl;
for(i=0;i<3;i++)
{
cout<<i<<"."<<a1[i].getclassic()<<endl;
}

cin>>i;
a1[i].setclassic();
cout<<"修改成功!"<<endl;
}
else
if(cha==3)
{cout<<"请输入要修改的带DVD的电视品牌名:"<<endl;
for(i=0;i<3;i++)
{
cout<<i<<"."<<a2[i].getclassic()<<endl;
}

cin>>i;
a2[i].setclassic();
cout<<"修改成功!"<<endl;
}
else
cout<<"errors!"<<endl;
cout<<"保存信息?"<<endl<<"1.yes"<<endl<<"2.no"<<endl;
cin>>s;
if(s==2)
goto loop;




}


void company::search(tv a0[3],dvd a1[3],tvdvd a2[3])
{
int a;
char se;
char classics1[20];
int i=3;
int s;

loop:
cout<<"请输入要查找的产品:"<<endl;


for(i=0;i<3;i++)
{
cin>>classics1;

if(classics1==a0[i].getclassic())
cout<<a0[i].getprice();
else
cout<<"errors!"<<endl;
}
for(i=0;i<3;i++)
{
cin>>classics1;

if(classics1==a1[i].getclassic())
cout<<a1[i].getprice();
else
cout<<"errors!"<<endl;
}
for(i=0;i<3;i++)
{
cin>>classics1;

if(classics1==a2[i].getclassic())
cout<<a2[i].getprice();
else
cout<<"errors!"<<endl;
cout<<"保存信息?"<<endl<<"1.yes"<<endl<<"2.no"<<endl;
cin>>s;
if(s==2)
goto loop;
}



int main()
{
tv *ptr1=new t[3];
dvd *ptr2=new d[3];
tvdvd *ptr3=new td[3];
company com;
int i,j,k;


char c;

for(j=0;j<3;j++)
{
cout<<"设置电视机"<<j<<"价格"<<endl;
t[j].setprice();
cout<<"设置电视机"<<j<<"品牌"<<endl;
t[j].setclassic();
}
for(j=0;j<3;j++)
{
cout<<"设置DVD"<<j<<"价格"<<endl;
d[j].setprice();
cout<<"设置DVD"<<j<<"品牌"<<endl;
d[j].setclassic();
}

for(j=0;j<3;j++)
{
cout<<"设置带DVD的电视机"<<j<<"价格"<<endl;
td[j].setprice();
cout<<"设置带DVD的电视机"<<j<<"品牌"<<endl;
td[j].setclassic();
}
cout<<"请选择您所需要的服务"<<endl<<" 1.添加单个品牌信息"<<endl<<" 2.删除信息"<<endl<<" 3.查找各品牌价格信息"<<endl<<" 4.显示所有信息"<<endl;
cin>>k;
if(k==1)
com.add(tv t[3],dvd d[3],tvdvd td[3]);




else if(k==2)
{
loop:
cout<<"1.删除电视机信息"<<endl<<"2.删除DVD信息"<<endl<<"3.删除TVDVD信息"<<endl;
cin>>i;
if(i==1)
delete[ ] ptr1;
if(i==2)
delete[ ] ptr2;
if(i==3)
delete[ ] ptr3;
cout<<"保存信息?"<<endl<<"1.yes"<<endl<<"2.no"<<endl;
cin>>s;
if(s==1)
goto loop;
}
else if(k==3)
com.search(tv t[3],dvd d[3],tvdvd td[3]);
else if(k==4)
{
cout>>"显示所有产品信息">>endl;
for(i=0;i<3;i++)
{
cout>>a1[i].getclassic()>>"牌电视机价格为:">>a1[i].getprice()>>endl;
cout>>a2[i].getclassic()>>"牌DVD价格为:">>a2[i].getprice()>>endl;
cout>>a1[i].getclassic()>>"牌带DVD的电视机价格为:">>a1[i].getprice()>>endl;
}
}

}

...全文
279 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
powerbamboo 2006-01-11
  • 打赏
  • 举报
回复
还有,出什么问题了??
guanlicome 2006-01-08
  • 打赏
  • 举报
回复
天啊,不加注释别人怎么看.
quickreport 2006-01-08
  • 打赏
  • 举报
回复
/*
帮你整理了代码对齐,有的地方漏了花括号,修改了部分代码,现在可以编译通过,但tvdvd类的setprice函数算法有错误,不是这样算的,自己修改吧,可能还有其他错误,你自己测试,做编程怎么能这样马虎了事?!
*/

#include<iostream>
#include<cstring>
#include <cstdlib>

using namespace std;

class tv
{
protected:
float price;
char classic[20];
public:
tv();
tv(tv&p0);
~tv(){}

virtual void setprice();
float getprice();
void setclassic();
char* getclassic();
friend class company;
};


class dvd:public tv
{

public:
dvd();
~dvd(){}
friend class company;
};


class tvdvd:public dvd
{
public:
tvdvd();
~tvdvd(){}
void setprice();
friend class company;
};


class company
{
public:
company();
void search(tv [],dvd [],tvdvd []);

void add(tv [],dvd [],tvdvd []);
void change(tv [],dvd [],tvdvd []);

};
tv::tv()
{
price=0.0;
}
tv::tv(tv&p0)
{
price=p0.price;
classic[20]=p0.classic[20];
}
void tv::setclassic()
{
char classics[20];
cin>>classics;
strcpy(classic,classics);
}

void tv::setprice()
{
float pri;
cin>>pri;
price=pri;
}

float tv::getprice()
{
return price;
}

char* tv::getclassic()
{
return classic;
}

dvd::dvd()
{
}


tvdvd::tvdvd()
{
}


void tvdvd::setprice()
{
price=(tv::price+dvd::price)*0.8;
}

company::company()
{
}

void company::add(tv a0[3],dvd a1[3],tvdvd a2[3])
{

int s;
int a;
int i=3;
loop:
cout<<"请输入要添加的产品:"<<endl<<"1.电视机"<<endl<<"2.DVD"<<endl
<<"3.带DVD的电视机"<<endl;
cin>>a;
if(a==1)
{
cout<<"请输入要添加的电视品牌名:"<<endl;
i++;
a0[i].setclassic();
cout<<"添加成功!"<<endl;
}
else
{
if(a==2)
{
cout<<"请输入要添加的DVD品牌名:"<<endl;
i++;
a1[i].setclassic();
cout<<"添加成功!"<<endl;
}
else
{
if(a==3)
{
cout<<"请输入要添加的带DVD的电视品牌名:"<<endl;
i++;
a2[i].setclassic();
cout<<"添加成功!"<<endl;
}
else
cout<<"errors!"<<endl;
}
cout<<"保存信息?"<<endl<<"1.yes"<<endl<<"2.no"<<endl;
cin>>s;
if(s==2)
goto loop;

}
}

void company::change(tv a0[3], dvd a1[3], tvdvd a2[3])
{

int cha;
int s;
int i;
cout<<"请选择要修改的产品:"<<endl<<"1.电视机"<<endl<<"2.DVD"<<endl;
cout<<"3.带DVD的电视机"<<endl;
cin>>cha;
loop:
if(cha==1)
{
cout<<"请选择要修改的电视品牌名:"<<endl;
for(i=0;i<3;i++)
{
cout<<i<<"."<<a0[i].getclassic()<<endl;
}

cin>>i;

a0[i].setclassic();


cout<<"修改成功!"<<endl;
}
else
{
if(cha==2)
{
cout<<"请选择要修改的DVD品牌名:"<<endl;
for(i=0;i<3;i++)
{
cout<<i<<"."<<a1[i].getclassic()<<endl;
}

cin>>i;
a1[i].setclassic();
cout<<"修改成功!"<<endl;
}
else
{
if(cha==3)
{
cout<<"请输入要修改的带DVD的电视品牌名:"<<endl;
for(i=0;i<3;i++)
{
cout<<i<<"."<<a2[i].getclassic()<<endl;
}

cin>>i;
a2[i].setclassic();
cout<<"修改成功!"<<endl;
}
else
cout<<"errors!"<<endl;
cout<<"保存信息?"<<endl<<"1.yes"<<endl<<"2.no"<<endl;
cin>>s;
if(s==2)
goto loop;
}
}
}


void company::search(tv a0[3],dvd a1[3],tvdvd a2[3])
{
int a;
char se;
char classics1[20];
int i=3;
int s;

loop:
cout<<"请输入要查找的产品:"<<endl;


for(i=0;i<3;i++)
{
cin>>classics1;

if(classics1==a0[i].getclassic())
cout<<a0[i].getprice();
else
cout<<"errors!"<<endl;
}
for(i=0;i<3;i++)
{
cin>>classics1;

if(classics1==a1[i].getclassic())
cout<<a1[i].getprice();
else
cout<<"errors!"<<endl;
}
for(i=0;i<3;i++)
{
cin>>classics1;

if(classics1==a2[i].getclassic())
cout<<a2[i].getprice();
else
cout<<"errors!"<<endl;
cout<<"保存信息?"<<endl<<"1.yes"<<endl<<"2.no"<<endl;
cin>>s;
if(s==2)
goto loop;
}
}


int main()
{
tv *t=new tv[3];
dvd *d=new dvd[3];
tvdvd *td=new tvdvd[3];
company com;
int i,j,k;


char c;

for(j=0;j<3;j++)
{
cout<<"设置电视机"<<j<<"价格"<<endl;
t[j].setprice();
cout<<"设置电视机"<<j<<"品牌"<<endl;
t[j].setclassic();
}
for(j=0;j<3;j++)
{
cout<<"设置DVD"<<j<<"价格"<<endl;
d[j].setprice();
cout<<"设置DVD"<<j<<"品牌"<<endl;
d[j].setclassic();
}

for(j=0;j<3;j++)
{
cout<<"设置带DVD的电视机"<<j<<"价格"<<endl;
td[j].setprice();
cout<<"设置带DVD的电视机"<<j<<"品牌"<<endl;
td[j].setclassic();
}
cout<<"请选择您所需要的服务"<<endl<<" 1.添加单个品牌信息"<<endl<<" 2.删除信息"<<endl<<" 3.查找各品牌价格信息"<<endl<<" 4.显示所有信息"<<endl;
cin>>k;
if(k==1)
com.add(t,d,td);
else if(k==2)
{
loop:
cout<<"1.删除电视机信息"<<endl<<"2.删除DVD信息"<<endl<<"3.删除TVDVD信息"<<endl;
cin>>i;
if(i==1)
delete[ ] t;
if(i==2)
delete[ ] d;
if(i==3)
delete[ ] td;
cout<<"保存信息?"<<endl<<"1.yes"<<endl<<"2.no"<<endl;
int s;
cin>>s;
if(s==1)
goto loop;
}
else if(k==3)
com.search(t,d,td);
else if(k==4)
{
cout<<"显示所有产品信息"<<endl;
for(i=0;i<3;i++)
{
cout<<t[i].getclassic()<<"牌电视机价格为:"<<t[i].getprice()<<endl;
cout<<d[i].getclassic()<<"牌DVD价格为:"<<d[i].getprice()<<endl;
cout<<td[i].getclassic()<<"牌带DVD的电视机价格为:"<<td[i].getprice()<<endl;
}
}
system("pause");
return 0;
}
besthyq 2006-01-08
  • 打赏
  • 举报
回复
老兄,函数注释一下吧。。

JoyerHuang_悦 2006-01-08
  • 打赏
  • 举报
回复
您也太内行了,这么长的代码连一行注释也没有。。
这样的代码别人(包括在下)是不太乐意去看的。。

你应当整理一下,在某些地方写明自己的意图。再请别人帮你看代码。。
说不定,在你写注释的过程中,你就自己解决了问题了。。
写程序不写注释,结果就像现在这样,出了错误不好排查。。
1. C 语言中的指针和内存泄漏 5 2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. C编程拾粹 42 10. C语言中实现数组的动态增长 44 11. C语言中的位运算 46 12. 浮点数的存储格式: 50 13. 位域 58 14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇 107 21. C语言编程常见问题分析 108 22. C语言编程易犯毛病集合 112 23. C语言缺陷与陷阱(笔记) 119 24. C语言防止缓冲区溢方法 126 25. C语言高效编程秘籍 128 26. C运算符优先级口诀 133 27. do/while(0)的妙用 134 28. exit()和return()的区别 140 29. exit子程序终止函数与return的差别 141 30. extern与static存储空间矛盾 145 31. PC-Lint与C\C++代码质量 147 32. spirntf函数使用大全 158 33. 二叉树的数据结构 167 34. 位运算应用口诀和实例 170 35. 内存对齐与ANSI C中struct内存布局 173 36. 冒泡和选择排序实现 180 37. 函数指针数组与返回数组指针的函数 186 38. 右左法则- 复杂指针解析 189 39. 回车和换行的区别 192 40. 堆和堆栈的区别 194 41. 堆和堆栈的区别 198 42. 如何写专业的C头文件 202 43. 打造最快的Hash表 207 44. 指针与数组学习笔记 222 45. 数组不是指针 224 46. 标准C中字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解C语言指针的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会陷入死循环 258 52. 空指针究竟指向了内存的哪个地方 260 53. 算术表达式的计算 265 54. 结构体对齐的具体含义 269 55. 连连看AI算法 274 56. 连连看寻路算法的思路 283 57. 重新认识:指向函数的指针 288 58. 链表的源码 291 59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66. 关于指向指针的指针 368 67. C/C++ 误区一:void main() 373 68. C/C++ 误区二:fflush(stdin) 376 69. C/C++ 误区三:强制转换 malloc() 的返回值 380 70. C/C++ 误区四:char c = getchar(); 381 71. C/C++ 误区五:检查 new 的返回值 383 72. C 是 C++ 的子集吗? 384 73. C和C++的区别是什么? 387 74. 无条件循环 388 75. 产生随机数的方法 389 76. 顺序表及其操作 390 77. 单链表的实现及其操作 391 78. 双向链表 395 79. 程序员数据结构笔记 399 80. Hashtable和HashMap的区别 408 81. hash 表学习笔记 410 82. C程序设计常用算法源代码 412 83. C语言有头结点链表的经典实现 419 84. C语言惠通面试题 428 85. C语言常用宏定义 450
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V3.3版分为标准版、增强版以及在线修复版。其中的标准版以及增强版都包含完整的DirectX组件。除此之外,增强版中还额外包含了c++ Redistributable Package,因此增强版不但能解决DirectX组件的问题,而且还能解决c++组件异常产生的问题。增强版适合无法自行解决c++相关问题的用户使用。在线修复版的功能与标准版相同,只是其所需的文件将通过Internet下载,因此大大减小了程序的体积。本程序的各个版本之间,主程序完全相同,只是配套使用的数据包不同。因此,当您使用标准版数据包时,程序将进行标准修复;当您使用增强版的数据包时,程序将进行增强修复;当数据包不全或没有数据包(即只有DirectX Repair.exe程序)时,程序将进行在线修复。在线修复、离线修复可自由灵活组合,充分满足不同用户的需要。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有自动更新c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了4项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“DirectX版本”选项卡可以自行修改系统中DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统中DirectX加速的开启与关闭。 新版程序集成了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在问题时通过反馈程序和软件作者进行交流,共同查找问题。反馈是完全自愿和匿名(如果不填写E-mail地址)的。 本程序的通用版基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XP、Windows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7及后续用户,可以直接运行本程序。 同时鉴于Windows 8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中默认未包含.NET Framework 2.0,因此新版的程序文件夹内将包含一个DirectX_Repair_win8的特别版程序,该程序功能与通用版相同,基于.NET Framework 4.0开发,可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。 本程序的官方博客地址为:http://blog.csdn.net/vbcom/article/details/6962388 所有的更新以及技术支持都可以到该博客上找到。

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧