int i;
while (i!=11)
         switch(i)
{
case 1:
case 4:
case 5:
default:
          }
当用户错误操作,输入字符后,会出现滚屏现象,怎么样防止这个问题?
谢谢

解决方案 »

  1.   

    主程序的代码如下:
    #include <iostream>
    #include <string>
    #include "Record.h"
    #include "Page.h"
    #include "PageHeader.h"
    #include "HeaderPage.h"
    #include "RecordManager.h"
    #include "AppManager.h"
    using namespace std;void main()
    { AppManager AM;
    int i;
    while (i!=11)
    {
    cout<<endl<<endl<<"***************************************************"<<endl;
    cout<<"1.  Open database"<<endl;
    cout<<"2.  Get first record"<<endl;
    cout<<"3.  Get next record"<<endl;
    cout<<"4.  Get previous record"<<endl;
    cout<<"5.  Insert record"<<endl;
    cout<<"6.  Delete record"<<endl;
    cout<<"7.  Update record"<<endl;
    cout<<"8.  Show header page"<<endl;
    cout<<"9.  Get first page"<<endl;
    cout<<"10. Get next page"<<endl;
    cout<<"11. Exit"<<endl;
    cout<<"***************************************************"<<endl;
    cout<<"Please enter the number:(1-11)."<<endl<<endl;
    cin>>i; switch(i)
    {
    case 1:
    AM.OpenDatabase ();
    break;
    case 2:
    AM.GetFirstRecord();
    break;
    case 3:
    AM.GetNextRecord();
    break;
    case 4:
    AM.GetPreviousRecord();
    break;
    case 5:
    AM.InsertRecord();
    break;
    case 6:
    AM.DeleteRecord();
    break;
    case 7:
    AM.UpdateRecord();
    break;
    case 8:
    AM.ShowHeaderPage();
    break;
    case 9:
    AM.GetFirstPage();
    break;
    case 10:
    AM.GetNextPage();
    break;
    case 11:
    AM.ExitApp();
    break;
    case 12:
    AM.Test();
    break;
    default:
    cout<<"Your input is invalid! Please input it again."<<endl<<endl;
    break;
    }
    }
    }
      

  2.   

    没有 break;       ?
      

  3.   

    titi_lima(李马) ,我所想要的是,除了1-11这几个功能选项对应的数字外,按其他任何键,都会提示,“输入错误,请重新输入”。
      

  4.   

    可以设一个while循环,要不然就用goto
      

  5.   

    处理滚屏,停烦琐的.
    一个办法你可以在default中,清除屏幕,重新显示前面的选择列表
    另一个办法c++支持_asm你可以用汇编(int10h)来改变光标位置,
         具体的寄存器设置,自己找汇编书看一下.
      

  6.   

    简单啊!
    int i 该为 char i;
    然后判断的时候在转回来即可!
    1)声明:(防止用户输入二个以上字符)
    char tmpchar[20]={'1','0'};
    2)写个判断函数函数
    int myA(char *p)
    {
    int i=0;
    do
    {i = atoi(p);/*atoi函数可将字符串指针转换为数字需要
    如果无法转换返回 int 0
    如 i = atoi("a9087"); i 将等于 0
    i= atoi("9087g"); i 将等于 9087*/if(i!=0 && i<13)//如果符合要求返回 i
    {
      return i;
    }
    //i==0 继续要求输入
      cout<<">[**********警告!请输大于零的数字**********]\n>_";
      cin>>p;}while(i<=0);return i;//有没有都可以 根本到不了这!但不编会有警告;
    }
    3)取得输入并判断转换
    cin>>tmpchar;
    do{//判断是否是char '0'  if(tmpchar[0]='0')
      cin>>tmpchar;}while(tmpchar=='0');int i
    i=myA(itmpchar)
    4)继续你程序
                 switch(i)
    {
    case 1:
    AM.OpenDatabase ();
    break;
                       ........
                     }
    5)编译C++程序时最好不要直接用 cin>>i 取数字如果user输入不是数字会
    立即出错!最好该用char 或 string
    #include<iostream>//不要加.h
    #include<string>
    using namespace std;.....
    string j;
    cin>>j;
    .....6)给分吧!