小弟自己做了程序,不过好像有问题,各位大大帮我看看哪里错了
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;
}