JDRZS 2016-06-01 06:06 采纳率: 0%
浏览 996

急需询问一个问题C++ 希望能够得到帮助

#include //输入输出流
#include //类的运算
#include //用来支持对磁盘文件的输出
#include
class stu //构造一个类,类名为stu
{
char name[20]; //名字
int number;
char bornplace[50];
public:
stu()
{
}
stu(char n[20],int num,char born[50])
{
strcpy(name,n);
number=num;
strcpy(bornplace,born);
}
friend void main();
};
void main()
{
cout<<"**************欢迎进入学生籍贯信息记录簿**************"< cout cout cout cout cout cout cout cout cout char p;
/*char w;*/
stu *s[50];//定义指针变量
ofstream *file[50];//定义指针变量
int i=0;
int j=0;
bool flag2=0;//布尔运算 使输入的数字在0-7范围之内
cin>>p;
/*do
{
cin>>p;
if(p>='0'&&p<='7')
flag2=1;
else
cout<<"错误!!请重新输入:"< }
while(flag2==0);//构造while-do函数,使序号与内容之间实现对应关系*/
switch(p)
{
case '0':
{
char c;
char name[20],bornplace[50];
int number;
do
{
cout cin>>name;
cout<<"请输入学号:"< cin>>number;
cout<<"请输入籍贯:"< cin>>bornplace;
file[j]=new ofstream("D:\student.txt",ios::ate);//将输入的内容存入磁盘
*file[j]<<"姓名"< j++;
s[i]=new stu(name,number,bornplace);
i++;
cout cin>>c;
flag2=0;
do//控制输入内容为y或n
{
if(c!='y'&&c!='n')
{
cout<<"错误!请重新输入!"< cin>>c;
}
else
flag2=1;
}
while(flag2==0);
}
while(c=='y');
break;
}
case '1'://浏览学生信息
{
cout<<"学生信息如下:"< if(i==0)
cout for(int k=0;k {
coutname<<" "<<"学号:"<<" "<number<<" "<<"籍贯:"<<" "<bornplace< }
break;
}
case '2'://按学号查找
{
int n;
int j=0;
char c;
{
int flag=0;
cout cout cin>>n;
for(int j=0;j {
int no=((*s[j]).number);
if(no==n)
{
flag=1;
cout }
}
if(flag==0)
cout cin>>c;
if(c!='y'&&c!='n')

{
cout<<"指令错误!重新输入!"< cin>>c;
}
}
while(c=='y');
break;
}
case '3'://按姓名查找
{
char t[20];
char c;
do
{
int flag1=0;
cout<<"请输入查询学生的姓名:"< cout cin>>t;
for(int q=0;q {
if(strcmp((*s[q]).name,t)==0)
{
flag1=1;
cout }
}
if(flag1==0)
cout cin>>c;
if(c!='y'&&c!='n')
{
cout<<"错误!请重新输入"< cin>>c;
}
}
while(c=='y');
break;
}
case '4'://按籍贯查询
{
char m[20];
int j=0;
char c;
do
{
int flag=0;
cout<<"请输入所查询籍贯:"< cout cin>>m;
for(int w=0;w {
if(strcmp((*s[w]).bornplace,m)==0)
{
flag=1;
cout }
}
if(flag==0)
cout cin>>c;
if(c!='y'&&c!='n')
{
cout<<"错误!请重新输入"< cin>>c;
}
}
while(c=='y');
break;
}
case '5':
{
char name[20],bornplace[50];
int number;
char c;
do
{
cout<<"请输入增加的学生姓名:"< cin>>name;
cout<<"请输入学号:"< cin>>number;
cout<<"请输入籍贯:"< cin>>bornplace;
file[j]=new ofstream("D:\student.txt",ios::ate);//将输入的内容存入磁盘空间
*file[j]<<"姓名"< j++;
s[i]=new stu(name,number,bornplace);
i++;
cout cin>>c;
if(c!='y'&&c!='n')
{
cout<<"错误!请重新输入"< cin>>c;
}
}
while(c=='y');
break;
}
case '6'://修改
{
char name[20],born[50];
int num;
flag2=0;
char c;
do
{
cout<<"请输入要修改的学生的姓名:"< cin>>name;
for(int h=0;h {
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新的学号:"< cin>>num;
cout<<"请输入新的籍贯:"< cin>>born;
s[h]->number=num;
strcpy(s[h]->bornplace,born);
cout<<"数据修改成功!"< }
}
if(flag2==0)
{
cout }
cout cin>>c;
if(c!='y'&&c!='n')
{
cout<<"错误!请重新输入"< cin>>c;
}
}
while(c=='y');
break;
}
case '7'://删除
{
char name[20];
bool flag3=0;
char c;
do
{
cout<<"请输入删除的学生姓名:"< cin>>name;
for(int h=0;h {
if(strcmp(name,s[h]->name)==0)
flag3=1;//命题若为真 学生总人数减1,并使指针跳过需要删除的人员
i--;
do
{
s[h]=s[h+1];//指针跳过需要删除的人员
h++;
}
while(h<=i);
}
if(flag3==0)//若输入的学生不存在则执行下列内容
{
cout<<"错误!"< }
cout cin>>c;
if(c!='y'&&c!='n')
{
cout<<"错误!请重新输入"< cin>>c;
}
}
while(c=='y');
break;
}
}
}
这是我从网上copy的一段代码 改了一小部分 其实也没怎么改
但是现在就是想用fstream读取文件
因为我看原作者好像是利用数据库
能帮我再看下是否有逻辑错误吗
谢谢啦!!!!

  • 写回答

1条回答 默认 最新

  • 小灸舞 2016-06-01 07:00
    关注

    加上using namespace std;就没有编译错误了。
    你这个代码略长,最好自己调试查看功能有没有问题,有问题了再发上来比较好
    代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
    提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
    单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

    评论

报告相同问题?

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝