vs 2008的配置问题!!!

ynkmhp 2009-06-02 12:53:59
前天将vs05改成了08,
在运行下列程序的时后报错:
#include<iostream>
#include<fstream>
#include<string>
#include<stdlib>
using namespace std;
#define N 40
int rec;
int f=0;
class TS
{
private :
char num[20];
char name[10];
double gongzi;
double jintie;//津贴
int index;
int month;//月份
double gangtie;//岗贴
double butie;//补贴
double fangtie;//房帖
double jiaotong;//交通费
double yingfa;//应发数
double fangzu;//房租
double chuxu;//储蓄
double huifei;//会费
double personfee;//个人所得税
double yingkou;//应扣数
double shifa;//实发数
public:
TS ( ){ }
TS (char *hs,int yf,char *xm,double gz,double jj,double gt,double bt,double ft,double jt,double fz,
double cx, double hf)
{
strcpy (num,hs);
strcpy(name ,xm);
month=yf;
gongzi=gz;
jintie=jj;
gangtie=gt;
butie=bt;
fangtie=ft;
jiaotong=jt;
fangzu=fz;
chuxu=cx;
huifei=hf;
if(gongzi<800)
{
personfee = 0 ;
}
if( (gongzi<2000) && (gongzi>=800) )
{
personfee = (gongzi-800)*0.05 ;

}
if( (gongzi<5000) && (gongzi>=2000) )
{
personfee= (gongzi-2000)*0.1+800*0.05;

}
if(gongzi>=5000)
{
personfee = (gongzi-5000)*0.2+2000*0.1+800*0.05 ;

}
yingfa=gangtie+butie+fangtie+jiaotong;
yingkou=fangzu+chuxu+huifei+personfee;
shifa=yingfa-yingkou;
}
void display( )
{
cout<<num<<'\t'<<month<<'\t';
cout<<name<<'\t'<<gongzi<<'\t'<<jintie<<'\t'<<gangtie<<'\t'<<butie<<'\t'<<fangtie<<'\t'<<jiaotong<<'\t'<<yingfa<<'\t';
cout<<fangzu<<'\t'<<chuxu<<'\t'<<huifei<<'\t'<<" "<<personfee<<'\t'<<" "<<yingkou<<'\t'<<" "<<shifa<<endl;
}
friend void Append( );
friend void Displaypart( );
friend void Delete( );
friend void Find ( );
friend void Modify( );
friend void Load ( );
friend void Save( );
}
s[N];
void Append( );
void Displayall ( );
void Displaypart ( );
void Delete( );
void Find ( );
void Load ( );
void Newinput( );
void Modify( );
void Save ( );
//目录
void Menu( )
{
int x;
cout<<"**************欢迎使用工资管理系统**************\n";
cout<<"** 1 新建工资信息 **\n";
cout<<"** 2 添加记录 **\n";
cout<<"** 3 显示工资全表 **\n";
cout<<"** 4 显示工资简表 **\n";
cout<<"** 5 修改记录 **\n";
cout<<"** 6 删除纪录 **\n";
cout<<"** 7 查询纪录 **\n";
cout<<"** 8 保存纪录 **\n";
cout<<"** 9 读取纪录 **\n";
cout<<"** 按0退出 **\n";
cout<<"************************************************\n";
cout<<"请选择: \n";
cin>>x;
switch (x)
{
case 1: Newinput( );break;
case 2: Append ( );break;
case 3: Displayall( );break;
case 4: Displaypart( );break;
case 5: Modify ( );break;
case 7: Find ( );break;
case 6: Delete( );break;
case 8: Save( );break;
case 9: Load( );break;
case 0: cout<<"谢谢使用\n";return ;
}
}
//新建记录
void Newinput( )
{
int yf;
char hs[4],xm[10],yn;
double gz,jj,gt,bt,ft,jt,fz,hf,cx;
cout<<"请输入初始记录个数:";
cin>>rec;
for ( int i=0;i<rec;i++)
{
cout<<"请输入第:"<<i+1<<"个记录"<<endl;
cout<<"号数:";cin>>hs;
cout<<"月份:";cin>>yf;
cout<<"姓名:";cin>>xm;
cout<<"工资:";cin>>gz;
cout<<"津贴:";cin>>jj;
cout<<"岗贴:";cin>>gt;
cout<<"补贴:";cin>>bt;
cout<<"房帖:";cin>>ft;
cout<<"交通费:";cin>>jt;
cout<<"房租:";cin>>fz;
cout<<"储蓄:";cin>>cx;
cout<<"会费:";cin>>hf;
s[i]=TS(hs,yf,xm,gz,jj,gt,bt,ft,jt,fz,cx,hf);
}
if(f==0)
{
cout<<"数据未保存,保存吗(y/n)?";
cin>>yn;
}
if(yn=='Y'|| yn=='y') { Save( );f=1;}
Menu( );

}
//添加记录
void Append( )
{
int x,yf;
char hs[4],xm[10],yn;
double gz,jj,gt,bt,ft,jt,fz,hf,cx;
cout<<"请输入添加记录个数:";
cin>>x;
for ( int i=0;i<x;i++)
{
cout<<"请输入第:"<<i+1<<"个记录"<<endl;
cout<<"号数:";cin>>hs;
cout<<"月份:";cin>>yf;
cout<<"姓名:";cin>>xm;
cout<<"工资:";cin>>gz;
cout<<"津贴:";cin>>jj;
cout<<"岗贴:";cin>>gt;
cout<<"补贴:";cin>>bt;
cout<<"房帖:";cin>>ft;
cout<<"交通费:";cin>>jt;
cout<<"房租:";cin>>fz;
cout<<"储蓄:";cin>>cx;
cout<<"会费:";cin>>hf;
s[rec]=TS(hs,yf,xm,gz,jj,gt,bt,ft,jt,fz,cx,hf);

rec=rec+1;}

if(f==0)
{cout<<"数据未保存,保存吗(y/n)?";
cin>>yn;}
if(yn=='Y'||yn=='y') {Save( );f=1;}
Menu( );
}
//显示工资全表
void Displayall ( )
{
cout<<"号数\t月份\t姓名\t工资\t津贴\t岗贴\t补贴\t房贴\t交通费\t应发数\t房租\t储蓄\t会费\t个人所得税\t应扣数\t实发数\n";
for (int i=0;i<rec; i++)
s[i].display( );
Menu( );
}
//显示工资部分
void Displaypart ( )
{
cout<<"姓名\t实发\n";
for ( int i=0;i<rec;i++)
cout<<s[i].name<<'\t'<<s[i].shifa<<endl;
cin.get( );
Menu( );
}
//修改记录
void Modify( )
{
int x;
char hs[20],yn;
cout<<"你想要修改记录的号数:";cin>>hs;
for ( int i=0; i<rec; i++)
if( strcmp(s[i].num, hs)==0) break;
cout<<"号数\t月份\t姓名\t工资\t津贴\t岗贴\t补贴\t房贴\t交通费\t应发数\t房租\t储蓄\t会费\t个人所得税\t应扣数\t实发数\n";
cout<<s[i].num<<'\t'<<s[i].month<<'\t';
cout<<s[i].name<<'\t'<<s[i].gongzi<<'\t'<<s[i].jintie<<'\t'<<s[i].gangtie<<'\t'<<s[i].butie<<'\t'<<s[i].fangtie<<'\t'<<s[i].jiaotong<<'\t'<<s[i].yingfa<<'\t';
cout<<s[i].fangzu<<'\t'<<s[i].chuxu<<'\t'<<s[i].huifei<<'\t'<<" "<<s[i].personfee<<'\t'<<" "<<s[i].yingkou<<'\t'<<" "<<s[i].shifa<<endl;
cout<<"这是你要修改的记录吗(y/n)?";
cin>>yn;
if( yn='Y'||yn=='y')
while (true)
{
cout<<"1修改号数,2修改月份,3修改姓名,4修改基本工资,5修改津贴,6修改岗贴,7修改补贴,8修改房贴";
cout<<"9修改交通费,10修改房租,11修改储蓄,12修改会费";
cout<<"请选择(0退出):";
cin>>x;
if (x==0)break;
if(x>12) {cout<<"选择不对请从新输入"; continue;}
switch (x)
{
case 1: cout<<"原号数为:"<<s[i].num<<"修改为:";
cin>>s[i].num;break;
case 2: cout<<"原月份为:"<<s[i].month<<"修改为:";
cin>>s[i].month;break;
case 3: cout<<"原姓名为:"<<s[i].name<<"修改为:";
cin>>s[i].name;break;
case 4: cout<<"原基本工资为"<<s[i].gongzi<<"修改为";
cin>>s[i].gongzi;break;
case 5:cout<<"原津贴为"<<s[i].jintie<<"修改为";
cin>>s[i].jintie;break;
case 6:cout<<"原岗贴为"<<s[i].gangtie<<"修改为";
cin>>s[i].gangtie;break;
case 7: cout<<"原补贴为:"<<s[i].butie<<"修改为:";
cin>>s[i].butie;break;
case 8: cout<<"原房贴为:"<<s[i].fangtie<<"修改为:";
cin>>s[i].fangtie;break;
case 9: cout<<"原交通费为:"<<s[i].jiaotong<<"修改为:";
cin>>s[i].jiaotong;break;
case 10: cout<<"原房租为:"<<s[i].fangzu<<"修改为:";
cin>>s[i].fangzu;break;
case 11: cout<<"原储蓄为:"<<s[i].chuxu<<"修改为:";
cin>>s[i].chuxu;break;
case 12: cout<<"原会费为:"<<s[i].huifei<<"修改为:";
cin>>s[i].huifei;break;
}
}
Menu( );
}

//删除记录
void Delete( )
{ char hs[20], yn;
r: cout<<"请输入要删除的号数:";
cin>>hs;
for ( int i=0; i<rec; i++)
if( strcmp(s[i].num, hs)==0) break;
cout<<"号数\t月份\t姓名\t工资\t津贴\t岗贴\t补贴\t房贴\t交通费\t应发数\t房租\t储蓄\t会费\t个人所得税\t应扣数\t实发数\n";
s[i].display( );
cout<<"这是你要删除的记录吗(y/n)?";
cin>>yn;
if (yn=='Y'|| yn=='y')
{
for (int j=i;j<rec;j++)
s[j]=s[j+1];
rec=rec-1;
}
else goto r;
Menu( );
}
...全文
149 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ryanwen 2009-06-02
  • 打赏
  • 举报
回复
字符串用_T()宏替代 看看

cout <<_T("1按号数查询,2按姓名查询,3按总计查询");
cout <<_T("请选择(0退出):");
ynkmhp 2009-06-02
  • 打赏
  • 举报
回复
大侠们帮下忙吧!
ynkmhp 2009-06-02
  • 打赏
  • 举报
回复
不过我在别人机器上跑也是乱码,也是刚装的VS2008...
ynkmhp 2009-06-02
  • 打赏
  • 举报
回复
但是没有解决的办法啊...
oyljerry 2009-06-02
  • 打赏
  • 举报
回复
http://social.microsoft.com/Forums/zh-CN/1761/thread/bb503ab2-2ecf-4781-a795-45121eec389d
ynkmhp 2009-06-02
  • 打赏
  • 举报
回复
我改成了多字节支持还是不行啊!还是乱码~
**************╗╢╙¡╩╣╙├╣ñ╫╩╣▄└φ╧╡═│**************
** 1 ╨┬╜¿╣ñ╫╩╨┼╧ó **
** 2 ╠φ╝╙╝╟┬╝ **
** 3 ╧╘╩╛╣ñ╫╩╚½▒φ **
** 4 ╧╘╩╛╣ñ╫╩╝≥▒φ **
** 5 ╨▐╕─╝╟┬╝ **
** 6 ╔╛│²╝═┬╝ **
** 7 ▓Θ╤»╝═┬╝ **
** 8 ▒ú┤µ╝═┬╝ **
** 9 ╢┴╚í╝═┬╝ **
** ░┤0═╦│÷ **
************************************************
╟δ╤í╘±ú║


还是这样....
songhc1986 2009-06-02
  • 打赏
  • 举报
回复
VS2008的默认编码是Unicode你把里面的字符类型都换成Unicode类型就不会出现问题了
或者把编译环境换成多字节类型的
项目属性->配置属性->常规->字符集(改成多字节支持)
majun01 2009-06-02
  • 打赏
  • 举报
回复
将编码方式改为unicade试试。
ynkmhp 2009-06-02
  • 打赏
  • 举报
回复
现在问题搞好了,不过在控制台下显示中文是乱码...
ynkmhp 2009-06-02
  • 打赏
  • 举报
回复
现在这个问题好了,但是运行时中文显示为乱码
**************╗╢╙¡╩╣╙├╣ñ╫╩╣▄└φ╧╡═│**************
** 1 ╨┬╜¿╣ñ╫╩╨┼╧ó **
** 2 ╠φ╝╙╝╟┬╝ **
** 3 ╧╘╩╛╣ñ╫╩╚½▒φ **
** 4 ╧╘╩╛╣ñ╫╩╝≥▒φ **
** 5 ╨▐╕─╝╟┬╝ **
** 6 ╔╛│²╝═┬╝ **
** 7 ▓Θ╤»╝═┬╝ **
** 8 ▒ú┤µ╝═┬╝ **
** 9 ╢┴╚í╝═┬╝ **
** ░┤0═╦│÷ **
************************************************
╟δ╤í╘±ú║

还有一段程序接上面的:
//查询记录
void Find ( )
{ int x;
double shifa;
char hs[4],xm[10];
while (1)
{
cout<<"1按号数查询,2按姓名查询,3按总计查询";
cout<<"请选择(0退出):";
cin>>x;
if (x>3) {cout<<"选择不对请从新输入"; continue;}
if (x==0) break;
if (x==1)
{cout<<"请输入号数:"; cin>>hs;
for(int i=0; i<rec;i++)
if(strcmp(s[i].num,hs)==0)s[i].display( );
}
if(x==2)
{cout<<"请输入姓名:"; cin>>xm;
for(int i=0;i<rec;i++)
if( strcmp(s[i].name,xm)==0)s[i].display( );
}
if (x==3)
{cout<<"请输入总计高于等于:";
cin>>shifa;
for(int i=0;i<rec;i++)
if(s[i].shifa>=shifa) s[i].display( );
}
}
Menu( );
}
//保存记录
void Save ( )
{ fstream wf;
wf.open( "score.bin", ios::out|ios::binary);
if(!wf) { cout<<"score.bin can't open\n";abort( );}
wf.write( (char*)s , sizeof(TS)*rec);
wf.close( );
}
//读取记录
void Load ( )
{ fstream rf;
rf.open( "score.bin", ios::in|ios::binary);
if(!rf) { cout<<"score.bin can't open\n";abort( );}
int i=0;
while (!rf.eof() ) {rf.read ((char*)&s[i], sizeof (s[i])); i++;}
rec=i-1;
Displayall( );
rf.close( );
}
void main( )
{ Menu( );
}
fatal error C1083: 无法打开包括文件:“stdlib”: No such file or

directory
各位大侠帮下忙,不尽感激!!!
majun01 2009-06-02
  • 打赏
  • 举报
回复
up
没装VS2008
smaltdd 2009-06-02
  • 打赏
  • 举报
回复
具体出现了什么错误?
mo229mo 2009-06-02
  • 打赏
  • 举报
回复
运行简单的程序,看看是不是vs2008装得有问题。
是什么错误也应该说说,好给别人运行时有个参照

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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