c++ 编程遇到的一个让我百思不得其解的小问题

liu_jie_1 2008-12-15 06:15:30
朋友传过来的问题 ,我没有弄好 ,有点怀疑是不是他用c++写c造成了这样的错误 或者是不是我的编译器不行,
源代码是这个:
#include<iostream>
#include<string.h>
using namespace std;
const M=12;
const N=12;
const R=12;
const SIZE=3;
struct data
{
char No[M];/*工号*/
char name[N];/*姓名*/
char condition[R];/*情况*/
};
struct data pem[SIZE];
int n;
void input()
{
int i;
for(i=0;i<=SIZE;i++)
{
cout<<"工号:"<<endl;
cin>>pem[i].No;
cout<<"姓名:"<<endl;
cin>>pem[i].name;
cout<<"情况:"<<endl;
cout<<pem[i].condition<<endl;
}
}
void display()
{
int i;
for(i=0;i<SIZE;i++)
cout<<pem[i].No<<" "<<pem[i].name<<" "<<pem[i].condition<<endl;
}
void quarry()
{
int choice;
int k,f=0;
do
{
cout<<("\n*****************<<考勤管理系统>>****************\n");
cout<<"**********1: ******************工号"<<endl;
cout<<"**********2: ****************姓名\n"<<endl;
cout<<"**********3: **************情况"<<endl;
cout<<"make a selective chioce 1 or 2\n "<<endl;
//cout<<"press anykey to qiut"<<endl;
cin>>choice;
switch(choice)
{
case 1:
{
char name[20];
cout<<"the No:"<<endl;
cin>>name;
for(k=0;k<SIZE;k++)

if(strcmp(name,pem[k].name)==0)
{
cout<<pem[k].No<<""<<pem[k].name<<""<<pem[k].condition<<endl;
f=1;
}

if(f=0)
{
cout<<"no exit~~~TOT"<<endl;
break;
}
break; //*
case 2:
{
char name[20];
cout<<"the name:"<<endl;
cin>>name;
for(k=0;k<SIZE;k++)
if(strcmp(name,pem[k].name)==0)
{
cout<<pem[k].No<<""<<pem[k].name<<""<<pem[k].condition<<endl;
f=1;
}
if(f=0)
{
cout<<"no exit~~~TOT"<<endl;
break;
}
break;
case 3:
{
char con[20];
cout<<"thecondition:"<<endl;
cin>>con;
for(k=0;k<SIZE;k++)
if(strcmp(name,pem[k].name)==0)
{
cout<<pem[k].No<<""<<pem[k].name<<""<<pem[k].condition<<endl;
f=1;
}
if(f=0)
{
cout<<"no exit~~~TOT"<<endl;
break;
}
break;
default:
cout<<"error!"<<endl;
break;
}while(1);
}
void deletekey(){
int k;
char newname[20];
cout<<"请输入该员工的名字!"<<endl;
cin>>newname;
cout<<"所有员工记录为: "<<endl;
display();
for(k=0;k<2;k++)
if(strcmp(newname,pem[k].name)==0)
{
cout<<"你选择的员工为:"<<endl;
cout<<pem[k].No<<""<<pem[k].name<<""<<pem[k].condition<<endl;
strcpy(pem[k].No,pem[k+1].No);
strcpy(pem[k].name,pem[k+1].name);
strcpy(pem[k].condition,pem[k+1].condition);
}
cout<<"员工记录删除完毕!"<<enbdl;
}

int main(){
void display();
void quarry();
void deletekey();
void input();
cout<<"*********************************************"<<endl;
cout<<"*************员工管理程序****************"<<endl;
cout<<"*********************************************"<<endl;
cout<<"******************欢迎使用*******************"<<endl;
cout<<"1..............................添加"<<endl;
cout<<"2..............................显示"<<endl;
cout<<"3..............................查询"<<endl;
cout<<"4..............................删除"<<endl;

cout<<"请输入您要进行的操作:"<<endl;
int choose;
cin>>choose;
while(choose!=1&&choose!=2&&choose!=3&&choose!=4)
{ cout<<"数字多也表按错吖~~~~再按遍吧 ~ 看清楚咯 ^_^"<<endl;
cin>>choose;
if(choose==1||choose==2||choose==3||choose==4)
break;
}
while(choose==1||choose==2||choose==3||choose==4)
{
switch(choose)
{
case 1: input(); break;
case 2: display(); break;
case 3: quarry(); break;
case 4: deletekey(); break;
default:
break;
}
// cout<<"请输入您要进行的操作:"<<endl;
// cin>>choose;
}
return 0;
}


哪位高手知道请告诉我一下 ,不甚感激!!!!


...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
knate 2008-12-15
  • 打赏
  • 举报
回复
void quarry();
这个似乎不能退出。(不知道程序开始怎么没有运行,不懂)

另外看题目的意思应该在
case语句后加break;
最好是
case后语句写成调用程序模式,那样要紧凑一点。

cin>>choose;
while(choose!=1&&choose!=2&&choose!=3&&choose!=4)
{ cout <<"数字多也表按错吖~~~~再按遍吧 ~ 看清楚咯 ^_^" <<endl;
cin>>choose;
if(choose==1||choose==2||choose==3||choose==4)
break;
}
while(choose==1||choose==2||choose==3||choose==4)
{
switch(choose)
{
case 1: input(); break;
case 2: display(); break;
case 3: quarry(); break;
case 4: deletekey(); break;
default:
break;
}
// cout < <"请输入您要进行的操作:" < <endl;
// cin>>choose;
}
这个功能肯定不是你所想要的,
choose没给用户再次选择的地方。
liu_jie_1 2008-12-15
  • 打赏
  • 举报
回复
不好意思没有说清楚 困扰我的是这样的一个问题 :就是我发的那段代码 最后报错有这样的一点:unexpected end of file found !!!我想了半天 ,然后在网上也没有找到相关的解释 。
谢谢大家的回答 ,我以后提问题会注意一点这个细节的 ,呵呵。
hui94781674 2008-12-15
  • 打赏
  • 举报
回复
是啊,C++不是java有时时查错的,一定要细心啊。。
sagegz 2008-12-15
  • 打赏
  • 举报
回复
编译的时候看错误在哪就行.
如果编译没错误,再调试看看.
moolf 2008-12-15
  • 打赏
  • 举报
回复
估计错误就是编码的粗心造成的,这样的程序如果细心点不会有问题的。
tangshuiling 2008-12-15
  • 打赏
  • 举报
回复
什么百思不得其解的问题,粗心而已~~!
bfhtian 2008-12-15
  • 打赏
  • 举报
回复

#include <iostream>
#include <cstring>
using namespace std;
const int M=12;
const int N=12;
const int R=12;
const int SIZE=3;
struct data
{
char No[M];/*工号*/
char name[N];/*姓名*/
char condition[R];/*情况*/
};
struct data pem[SIZE];
int n;
void input()
{
int i;
for(i=0;i <=SIZE;i++)
{
cout <<"工号:" <<endl;
cin>>pem[i].No;
cout <<"姓名:" <<endl;
cin>>pem[i].name;
cout <<"情况:" <<endl;
cout <<pem[i].condition <<endl;
}
}

void display()
{
int i;
for(i=0;i <SIZE;i++)
cout <<pem[i].No <<" " <<pem[i].name <<" " <<pem[i].condition <<endl;
}

void quarry()
{
int choice;
int k,f=0;
do
{
cout <<("\n***************** < <考勤管理系统>>****************\n");
cout <<"**********1: ******************工号" <<endl;
cout <<"**********2: ****************姓名\n" <<endl;
cout <<"**********3: **************情况" <<endl;
cout <<"make a selective chioce 1 or 2\n " <<endl;
//cout < <"press anykey to qiut" < <endl;
cin>>choice;
switch(choice)
{
case 1:
{
char name[20];
cout <<"the No:" <<endl;
cin>>name;
for(k=0;k <SIZE;k++){

if(strcmp(name,pem[k].name)==0)
{
cout <<pem[k].No <<"" <<pem[k].name <<"" <<pem[k].condition <<endl;
f=1;
}

if(f=0)
{
cout <<"no exit~~~TOT" <<endl;
break;
}
break; //*
}//少个括号
}
case 2:
{
char name[20];
cout <<"the name:" <<endl;
cin>>name;
for(k=0;k <SIZE;k++){
if(strcmp(name,pem[k].name)==0)
{
cout <<pem[k].No <<"" <<pem[k].name <<"" <<pem[k].condition <<endl;
f=1;
}
if(f=0)
{
cout <<"no exit~~~TOT" <<endl;
break;
}
break;
}
}
case 3:
{
char name[20]; //应该name
cout <<"thecondition:" <<endl;
cin>>name;
for(k=0;k <SIZE;k++){
if(strcmp(name,pem[k].name)==0)
{
cout <<pem[k].No <<"" <<pem[k].name <<"" <<pem[k].condition <<endl;
f=1;
}
if(f=0)
{
cout <<"no exit~~~TOT" <<endl;
break;
}
break;
}
}
default:
cout <<"error!" <<endl;
break;
}
}while(1);
}
void deletekey(){
int k;
char newname[20];
cout <<"请输入该员工的名字!" <<endl;
cin>>newname;
cout <<"所有员工记录为: " <<endl;
display();
for(k=0;k <2;k++)
if(strcmp(newname,pem[k].name)==0)
{
cout <<"你选择的员工为:" <<endl;
cout <<pem[k].No <<"" <<pem[k].name <<"" <<pem[k].condition <<endl;
strcpy(pem[k].No,pem[k+1].No);
strcpy(pem[k].name,pem[k+1].name);
strcpy(pem[k].condition,pem[k+1].condition);
}
cout <<"员工记录删除完毕!" <<endl;
}

int main(){
void display();
void quarry();
void deletekey();
void input();
cout <<"*********************************************" <<endl;
cout <<"*************员工管理程序****************" <<endl;
cout <<"*********************************************" <<endl;
cout <<"******************欢迎使用*******************" <<endl;
cout <<"1..............................添加" <<endl;
cout <<"2..............................显示" <<endl;
cout <<"3..............................查询" <<endl;
cout <<"4..............................删除" <<endl;

cout <<"请输入您要进行的操作:" <<endl;
int choose;
cin>>choose;
while(choose!=1&&choose!=2&&choose!=3&&choose!=4)
{ cout <<"数字多也表按错吖~~~~再按遍吧 ~ 看清楚咯 ^_^" <<endl;
cin>>choose;
if(choose==1||choose==2||choose==3||choose==4)
break;
}
while(choose==1||choose==2||choose==3||choose==4)
{
switch(choose)
{
case 1: input(); break;
case 2: display(); break;
case 3: quarry(); break;
case 4: deletekey(); break;
default:
break;
}
// cout < <"请输入您要进行的操作:" < <endl;
// cin>>choose;
}
return 0;
}


改了下,小错误很多,没有一一指明。希望lz下次贴出代码形式
keven1868 2008-12-15
  • 打赏
  • 举报
回复
建议楼主发代码的时候编辑一下格式,代码这么长最好说一下遇到什么问题,问题的位置
wap21 2008-12-15
  • 打赏
  • 举报
回复
up

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧