| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 732 人关注过本帖
标题:这代码可以测试,为什么不能运行,提示:exe应用程序有错。
只看楼主 加入收藏
lt2201004068
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-2-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
这代码可以测试,为什么不能运行,提示:exe应用程序有错。
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
typedef struct log             //存储记录
{
    char datatime[25];         //存储时间
    char w_d;                  //存储标志
    float amount;              //存储金额
}log;

typedef struct node_log        //存储记录节点
{
    log data;                  //存储记录            
    struct node_log *next;     //下一存储记录节点指针
}node_log,*p_node_log;

typedef struct account         //账户记录
{
    char id[10];               //账号
    char name[10];             //姓名
    float balance;             //帐户余额
}account;

typedef struct node_account    //账户记录节点
{
    account data;              //帐户记录
    struct node_log *nlog;     //存储帐户节点指针
    struct node_account *next; //下一帐户记录节点指针
}node_account,*p_node_account;
  
class money
{
public:
     void inputaccount();       //输入初始的帐户数据
     void outputaccount();      //显示改变和排序后的所有帐户数据
     void deleteaccount();      //销户
     void insertaccount();      //开户
     void saveaccount();        //存钱
     void drawaccount();        //取钱
   //  void traveraccount();      //查询帐号交易记录
    // void sortdata();            //排序所有账号
private:
     node_account *head1;
     node_log *head2;
};

//ifstream infile("input.txt",ios::in);
void money::inputaccount()     //输入初始数据
{
      node_log *p3,*p4;
      node_account *p1,*p2,*head;
      int i=1;
      int n=10;
      head=NULL;
      while(i<n)
      {
      p1=new node_account;
      p3=new node_log;
      cout<<"请输入ID号,姓名,账户余额:"<<endl;
      cin>>p1->data.id>>p1->data.name>>p1->data.balance;
      cout<<"请输入交易日期:"<<endl;
      cin>>p3->data.datatime;
      p2->next=p1;
      p4->next=p3;
      p4=p3;
      p2=p1;
      i++;
      }
      p2->next=NULL;
      p4->next=NULL;
}

void money::outputaccount()  //显示所有数据
{
      node_account *p0;
      node_log *p1;
      p0=head1;
      p1=head2;
      while(p0!=NULL&&p1!=NULL)
      {
      cout<<p0->data.id<<" "<<p0->data.name<<" "<<p0->data.balance<<endl;
      cout<<p1->data.datatime<<endl;
      p0=p0->next;
      p1=p1->next;
      }
}

void money::deleteaccount()   //销户
{
      node_account *p0,*p1;
      p0=head1;
      while(p0->data.id!=p0->data.id&&p0->next!=NULL)
      {
      p1=p0;
      p1=p1->next;
      }
      if(p0->data.id==p0->data.id)
      {
      if(head1==p0)
      head1=p0->next;
      else
      p1->next=p0->next;
      delete p0;
      }
      else
          cout<<"对不起,没有这用户"<<endl;
}

void money::insertaccount()  //开户
{
      node_account *p0,*p1,*p2;
      p1=head1;
      p0=new node_account;
      cout<<"请输入开户的ID号,你的姓名:"<<endl;
      cin>>p0->data.id>>p0->data.name;
      if(head1=NULL)
      {
      head1=p0;
      p0->next=NULL;
      }
      else
      while(p1->next!=NULL)
      {
      p2=p1;
      p1=p1->next;
      }
     
}

void money::saveaccount()  //存钱
{
      float amount;
      node_account *p0;
      p0=head1;
      cout<<"请输入你的帐号:"<<endl;
      cin>>p0->data.id;
      if(p0->data.id!=NULL)
      {
      cout<<"你的帐户余额为:"<<p0->data.balance<<endl;
      cout<<"请输入你要存款的金额:"<<endl;
      cin>>amount;
      p0->data.balance=p0->data.balance+amount;
      cout<<"存入成功!"<<"你的余额为:"<<p0->data.balance<<endl;
      }
      else
          cout<<"所找账户不存在,请重新输入:";
}

void money::drawaccount()  //取钱
{
      float amount;
      node_account *p0;
      p0=head1;
      cout<<"请输入你的帐号:";
      cin>>p0->data.id;
      if(p0->data.id!=NULL)
      {
      cout<<"请选择取金额的数目:"<<endl;
      cin>>amount;
      if(amount>p0->data.balance)
      {
          cout<<"对不起,你的余额不足,请及时充值!"<<endl;
      }
      else
          p0->data.balance=p0->data.balance-amount;
          cout<<"你的账户余额为"<<p0->data.balance<<endl;
      }
      else
          cout<<"对不起,你所找的帐户不存在,请重新输入!"<<endl;
}

/*void money::traveraccount()   //查询帐户交易记录
{
       node_account *p0;
       p0=head1;
       cout<<"请输入你的账号:";
       cin>>p0->data.id;
       if(p0->data.id!=NULL)
       {
       cout<<"你的帐号交易记录如下:"<<endl;
      
       }
       else
           cout<<"所查找的用户不存在!"<<endl;
}

void money::sortdata()   //排序所有帐户
{
       node_account *p0,*p1,*p2;
       p1=head1;

}
*/
int main()
{   
     money mon;
     int ch=0;
     while(1)
     {
     cout<<"                     "<<"*******欢迎使用银行自助服务系统******"<<endl;
     cout<<"                     "<<"**************请选择操作*************"<<endl;
     cout<<"                     *"<<"            1.开户                 *"<<endl;
     cout<<"                     *"<<"            2.销户                 *"<<endl;
     cout<<"                     *"<<"            3.存钱                 *"<<endl;
     cout<<"                     *"<<"            4.取钱                 *"<<endl;
     cout<<"                     *"<<"            5.查看账户信息         *"<<endl;
     cout<<"                     *"<<"            6.退出系统             *"<<endl;
     cout<<"                     *"<<"************************************"<<endl;
     cin>>ch;
     switch(ch)
     {
     case 1:
         mon.insertaccount();
         break;
     case 2:
         mon.deleteaccount();
         break;
     case 3:
         mon.saveaccount();
         break;
     case 4:
         mon.drawaccount();
         break;
     //case 5:
   //      mon.traveraccount();
    //     break;
     case 6:
         return 0;
         break;
     default:
         cout<<"输入有误,请重新输入"<<endl;
     }
     }
}
搜索更多相关主题的帖子: account 应用程序 测试 记录 include 
2012-03-03 19:35
mayuebo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:257
专家分:1282
注 册:2005-9-8
收藏
得分:0 
能给点错误号码什么的吗?还有在什么情况下会出错什么的.一大段的代码,看完了也要花不少时间的噢

成功贵在坚持
2012-03-04 12:06
榴紫丫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:33
专家分:135
注 册:2011-11-3
收藏
得分:0 
你这个错误在哪 啊,是不是不同的源文件重复定义变量。比如project1有2个.c或.cpp文件  有了相同的的名字变量或者有了相同的头文件
你再重建一个工程试试
2012-03-04 12:46
lt2201004068
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-2-23
收藏
得分:0 
回复 2楼 mayuebo
出现主菜单时,在选择操作就会出错啊,
2012-03-04 13:10
lt2201004068
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-2-23
收藏
得分:0 
回复 2楼 mayuebo
本人基础差,但对编程很有心的啊,
2012-03-04 13:12
榴紫丫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:33
专家分:135
注 册:2011-11-3
收藏
得分:0 
这个要自己单步调试啊,看看哪里出错了
2012-03-04 23:06
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
收藏
得分:10 
感觉上和指针没有初始化有关。因为mony类没有提供构造函数,因此C++会为你的这个mony类自动生成一个,在这个案例中,自动生成的成员不会对里面的两个成员进行初始化,你先加上缺省的构造函数试一试,这里把两个指针初始化为NULL。
再就是下面这个函数
void money::insertaccount()  //开户
{
      node_account *p0,*p1,*p2;
      p1=head1;
      p0=new node_account;
      cout<<"请输入开户的ID号,你的姓名:"<<endl;
      cin>>p0->data.id>>p0->data.name;
      if(head1=NULL)    //这里应该是head1==NULL,你把=当成了==,建议以后使用NULL==head1这种写法
      {
      head1=p0;
      p0->next=NULL;
      }
      else
      while(p1->next!=NULL)
      {
      p2=p1;
      p1=p1->next;
      }
     
}

在提一个建议:
把复制构造函数和赋值操作符定义为私有的。


2012-03-05 11:16
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
收藏
得分:0 
还忘了一点,记得要加上析构函数,把动态分配的内存释放掉。

2012-03-05 11:29
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:10 
这个楼主确实应该自己手动调试的,我们跟问题也是要调试的。多动手,加油

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-05 12:43
快速回复:这代码可以测试,为什么不能运行,提示:exe应用程序有错。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016686 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved