急需询问一个问题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个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问