| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 775 人关注过本帖
标题:小弟自己做了程序,不过好像有问题,各位大大帮我看看哪里错了
只看楼主 加入收藏
sileik
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-12-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
小弟自己做了程序,不过好像有问题,各位大大帮我看看哪里错了
1.机房信息管理系统
要求:
1 采用面向对象设计思想
2 机房由多个计算机构成;计算机由软件和硬件组成;硬件包含主机信息和外设信息等;软件包括操作系统与应用软件
3 机房新建中的计算机信息输入
4 计算机信息的文件读写
5 计算机信息的检索、增删、修改
6 采用工程文件方式组织程序

#include<iostream>
#include<string>
#include<fstream>
#include<stdlib.h>
#include<iomanip>

using namespace std;


class computer//computer类
{ private:
     char number[20]; //计算机编号
     char mainframe,outset,system,application;//硬软件
      
  public:
    computer(){}
   computer(char n[20],char m,char o,char s,char a)
     {strcpy(number,n);
    strcpy(mainframe,m);
    strcpy(outset,o);
    strcpy(system,s);
    strcpy(application,a);
     }

 friend void menu();//友元函数
};


void menu()
{cout<<"      ******************************************"<<endl;
 cout<<"                   机房信息管理系统             "<<endl;
 cout<<"      ******************************************"<<endl;
 cout<<"              **************************"<<endl;
 cout<<"              *   主菜单命令如下所示: *"<<endl;
 cout<<"              *     1、输入计算机信息        *"<<endl;
 cout<<"              *     2、增加计算机信息        *"<<endl;
 cout<<"              *     3、修改计算机信息       *"<<endl;
 cout<<"              *     4、检索计算机信息        *"<<endl;
 cout<<"              *     5、浏览计算机信息        *"<<endl;
 cout<<"              *     6、信息删除        *"<<endl;
 cout<<"              *     7、退出系统        *"<<endl;
 cout<<"              **************************"<<endl;
 
 cout<<"               请输入您的指令数字(1~6)"<<endl<<"  ";
 char p;char w;
 computer comp[50];
 computer *c[50];
 ifstream in;
 ofstream out;
 fstream f;  //输入输出对象
 int i=0;
 int j=0;
 int flag=0;
 

 do                     //flag判断输入是否有效
 {
  cin>>p;
  if(p>='0'&&p<='6')
   flag=1;
  else
   cout<<"  指令错误!请重新输入:"<<endl;
 }while(flag==0);



 do{//最外层循环


switch(p) //接收功能选项
{

case '1':  //输入计算机信息

    {char number[20];char mainframe,outset,system,application;char c;
     out.open("E:\\a.dat",ios::out);
     do{
     cout<<"  请输入计算机编号:";
     cin>>number;
     cout<<endl<<"  请输入计算机硬件主机信息:";
     cin>>mainframe;
     cout<<endl<<"  请输入计算机硬件外设信息:";
     cin>>outset;
     cout<<endl<<"  请输入计算机软件操作系统:";
     cin>>system;
     cout<<endl<<"  请输入计算机应用软件:";
     cin>>application;
     cout<<endl;

     out<<setw(2)<<number<<setw(7)<<mainframe<<setw(6)<<outset<<setw(6)<<system<<setw(6)<<application;   //文件输入

     cout<<"  信息输入成功,想继续输入吗?   y / n  : "<<endl<<" ";
     cin>>c;
     cout<<endl;
     do
     {
      if(c!='y'&&c!='n')
      {cout<<"  指令错误!请重新输入!"<<endl<<"     ";
       char c;
       cin>>c;}
      else flag=1;
     }while(flag==0);
     }while(c=='y');
     out.close();
    break;
    }


  
case '2':         //增加计算机信息
    {char number[20]; char mainframe,outset,system,application ;char c;

    out.open("E:\\a.dat",ios::app);
    do
    {
     cout<<"请输入您要增加的计算机编号:";
     cin>>number;
     cout<<endl<<"            请输入计算机硬件主机信息:";
     cin>>mainframe;
     cout<<endl<<"            请输入计算机硬件外设信息:";
     cin>>outset;
     cout<<endl<<"            请输入计算机软件操作系统:";
     cin>>system;  
     cout<<endl<<"            请输入计算机应用软件:";
     cin>>application;
     cout<<endl;

     out<<setw(2)<<number<<setw(7)<<mainframe<<setw(6)<<outset<<setw(6)<<system<<setw(6)<<application;//文件录入

     cout<<"  信息添加成功,想继续添加吗?  y / n  :"<<endl;
     cin>>c;
     cout<<endl;
     if(c=='n')break;
     if(c!='y'&&c!='n')
     {cout<<"  指令错误!请重新输入!"<<endl<<"     ";
      cin>>c;}
     

    }while(c=='y');
    out.close();
    break;
   }


 
case '3':                    //修改计算机信息
    {char number[20]; char mainframe,outset,system,application;
     char nu[20];char m,o,s,a;char c;
   
    do
    {int flag=0;
     cout<<"  请输入您要修改的计算机编号:"<<endl;
     cin>>nu;
     cout<<endl;

     f.open("E:\\a.dat",ios::in|ios::out);
     f.seekg(0,ios::beg);
     f.clear();

      while(!f.eof())
      {f>>number;
       if(strcmp(number,nu)==0)
       {flag=1;
       cout<<"  请输入新的硬件主机信息:";
       cin>>m;
       cout<<endl<<"  请输入新的硬件外设信息:";
       cin>>o;
       cout<<endl<<"  请输入新的软件操作系统:";
       cin>>s;
       cout<<endl<<"  请输入新的应用软件:";
       cin>>a;
       cout<<endl;

       mainframer=m;   //修改过程
       outset=o;
       system=s;
       application=a;

       f.seekp(0,ios::cur);
       f<<setw(7)<<m<<setw(6)<<o<<setw(6)<<s<<setw(6)<<a;
       cout<<"  修改成功!  "<<endl<<endl;break;}
      }
      f.close();
   
     if(flag==0)
     cout<<"  您要修改的计算机不存在!"<<endl<<endl;
   
     cout<<"  您想继续修改吗? y / n   :"<<endl;
     cin>>c;
     cout<<endl;
     if(c=='n')break;
     if(c!='y'&&c!='n')
     {cout<<"  指令错误!请重新输入!"<<endl<<"     ";
     cin>>c;}

    }while(c=='y');

    break;
    }

 
  
case '4':                  //计算机信息查询
     {char number[20]; char mainframe,outset,system,application;

cout<<"本系统可按计算机编号查询。"<<endl
     {int n;
     
     do{
        int flag=0;
        cout<<"  请输入你要查询计算机编号:"<<endl;
        cin>>n;
        cout<<endl;

        in.open("E:\\a.dat",ios::in);
        in.seekg(0,ios::beg);
        in.clear();

        while(!in.eof())
        {in>>number>>mainframe>>outset>>system>>application;
        if(number==n)
        {flag=1;
        cout<<"您要查询的计算机:"<<number<<"的信息是: "<<endl<<endl;
        cout<<"编号   主机  外设  系统  应用软件    "<<endl;
        cout<<setw(2)<<number<<setw(7)<<mainframe<<setw(6)<<outset<<setw(6)<<system<<setw(6)<<application<<endl;}
        }

        in.close();
        if(flag==0)
        cout<<"  对不起!您要查询的计算机不存在!"<<endl;
        cout<<"  您想继续查询吗?  y / n  :";
        char c;
        cin>>c;
        cout<<endl;
        if(c=='n')break;
        if(c!='y'&&c!='n')
        {cout<<"  指令错误!请重新输入!"<<endl;
        cin>>c;}

    }while(c=='y');
    break;
   
   default:cout<<"对不起,您输入的指令有误:";}break;
   }break;



case '5':           //信息浏览
    {char number[20]; char mainframe,outset,system,application;
     
     in.open("E:\\a.dat",ios::in);
     in.seekg(0,ios::beg);
     in.clear();
     if(in.get()==EOF){cout<<"  文件中已无数据"<<endl<<endl;in.close();break;}
     cout<<"  本系统所有计算机信息如下:"<<endl<<endl;
     cout<<"编号   主机  外设  系统  应用软件    "<<endl;
     while(!in.eof())
     {in>>number>>mainframe>>outset>>system>>application;
     cout<<setw(2)<<number<<setw(7)<<mainframe<<setw(6)<<outset<<setw(6)<<system<<setw(6)<<application<<endl;
     }
     in.close();
     
     break;
   }


case'6':            //信息删除
    {char number[20],nu[20]; char mainframe,outset,system,application;char c;
     int k;
    do
    {int n=0;int flag=0;
    cout<<"  请输入您要删除的计算机编号:"<<endl;
     cin>>nu;
     cout<<endl;

     in.clear();
     in.open("E:\\a.dat",ios::in);
     in.seekg(0,ios::beg);
     

      while(!in.eof())
      {in>>number>>mainframe>>outset>>system>>application;
       c[n]=new student(number,mainframe,outset,system,application);
       comp[n]=*c[n];
       delete c[n];
       n++;}
       in.close();

       for(i=0;i<n;i++)
       {if(strcmp(comp[i].number,nu)==0)
       {flag=1;k=i;}
       }

     if(flag==1)
     {out.open("E:\\a.dat",ios::out);
      out.seekp(0,ios::beg);
      if(n>1)
      {
      for(i=0;i<k;i++)
      {out<<setw(2)<<comp[i].number<<setw(7)<<comp[i].mainframe<<setw(6)<<comp[i].outset<<setw(6)<<comp[i].system<<setw(6)<<comp[i].application;}
      for(i=k+1;i<n;i++)
      {out<<setw(2)<<comp[i].number<<setw(7)<<comp[i].mainframe<<setw(6)<<comp[i].outset<<setw(6)<<comp[i].system<<setw(6)<<comp[i].application;}
      cout<<"   信息删除成功"<<endl<<endl;
      }
      if(n=1){}
      out.close();
    }

     else
     cout<<"  您要删除的计算机不存在!"<<endl<<endl;
   
     cout<<"  您想继续删除吗? y / n   :"<<endl;
     cin>>c;
     cout<<endl;
     if(c=='n')break;
     if(c!='y'&&c!='n')
     {cout<<"  指令错误!请重新输入!"<<endl<<"     ";
     cin>>c;}

    }while(c=='y');

    break;
    }




case'7':           //退出
       {cout<<"欢迎使用本系统,再见!"<<endl<<endl;
      exit(0); }break; }

}//以上为menu菜单中switch控制语句

  

cout<<"  您想继续进行其他操作吗?  y / n  :"<<endl<<" ";//以下控制循环语句
int flag=0;

do{cin>>w;
 cout<<endl;
 if(w=='n')exit(0);
 if(w!='y'&&w!='n')
   cout<<"  指令错误!请重新输入!"<<endl;
 else
   flag=1;
}while(flag==0);


if(w=='y')
{cout<<"  请输入操作代码: 1 输入计算机信息"<<endl;
cout<<"                  2 增加计算机信息"<<endl;
cout<<"                  3 修改计算机信息"<<endl;
cout<<"                  4 检索计算机信息"<<endl;
cout<<"                  5 浏览计算机信息"<<endl;
cout<<"                  6 信息删除"<<endl;
cout<<"                  7 退出系统"<<endl;}

cin>>p;


}while(w=='y');//最外层的do-while循环

}//menu函数结束



int main()
{menu();
return 0;
}
搜索更多相关主题的帖子: 计算机 信息 private include 管理系统 
2011-12-14 20:39
单行道1129
Rank: 3Rank: 3
来 自:山东潍坊
等 级:论坛游侠
帖 子:38
专家分:118
注 册:2011-10-26
收藏
得分:4 
哥、、太多了吧??我给你调试一下???
2011-12-15 18:49
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:4 
编译出来100多个错误

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-12-15 19:58
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
错误太多,也不知道程序要干什么,改不了。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-12-15 20:06
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:4 
楼主自己先把所有char 和char* 混用的地方纠正过来,然后把分号补齐再来吧。这种简单的问题先自己解决。
2011-12-15 22:51
wangmin78927
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2011-12-10
收藏
得分:4 
看明白了,可是, 大哥,太长了吧
2011-12-16 18:37
我是菜鸟C
Rank: 4
等 级:业余侠客
帖 子:74
专家分:200
注 册:2011-3-27
收藏
得分:4 
主函数还做了友元函数 这是要干嘛  。。。你可以直接把类定义成共有的还要好一些。
2011-12-18 08:06
快速回复:小弟自己做了程序,不过好像有问题,各位大大帮我看看哪里错了
数据加载中...
 
   



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

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