24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3074  |  回复: 6

小小一颗鑫

[交流] 【求助】求将c语言改写为C++,求教高人啊!

#include
#include
#include
#include

#define N 3
struct  student
{
char name[10];
char no[10];
char sex;
int  age;
char bnote[100];
};
void print(bool menu)//打印基本信息
{
if (!menu)
{
  printf("学生基本信息录入 ,press 1\n");     
}
else
{
  printf("学生基本信息显示 ,press 2\n");  
  printf("学生基本信息保存 ,press 3\n");  
  printf("学生基本信息删除 ,press 4\n");
  printf("学生基本信息修改 ,press 5\n");
  printf("学生基本信息查询 ,press 6\n");  
}
  printf("退出学生信息系统 ,press 7\n");
}

bool Check(char pas[6])//密码验证
{
FILE *fp;
char ch;
char a[7]={" "};
int i = 0;
if ((fp=fopen("c:\\1.txt","r"))==NULL)
{
  printf("打开文件失败!\n");
  exit(0);
}
    ch=fgetc(fp);
while (ch!=EOF&&i<6)
{
  a = ch;
        ch=fgetc(fp);
  i++;
}
a[6] = '\0';
if (!strcmp(pas,a))
{
  return true;
}
else
{
  printf("密码错误\n");
  return false;
}
fclose(fp);
}

void GetInfo(struct student *arr,int n)//学生基本信息录入
{

for (int i = 0;i {
  printf("输入学生的基本信息:name   no    sex  age   bnote\n");
  scanf("%s %s %c %d %s",arr.name,arr.no,&arr.sex,&arr.age,arr.bnote);
}
}
void Display(struct student* arr,int n)//学生基本信息显示
{
printf("学生信息: Name     NO    Sex   age  Note\n");
for (int i = 0;i {
  printf("%15s%15s%15c%15d%15s\n",arr.name,arr.no,arr.sex,arr.age,arr.bnote);
}
}

void Save(struct student* arr,int n)//学生基本信息保存,保存在c:\\student.txt
{
FILE * fp;
    fp= fopen("c:\\student.txt","w+");
if (fp == NULL)
{
  printf("文件不存在!\n");
  exit(0);
}

    fwrite(arr,sizeof(struct student)*n,n,fp);
fclose(fp);
}

void Modfiy(struct student* arr,int n)//学生基本信息修改
{
char number[10];
bool flag=false;
char pass[6];
printf("请输入密码:\n");
scanf("%s",pass);
if (Check(pass))
{
  printf("修改学生信息:\n");
  printf("请输入学号:\n");
  scanf("%s",number);
  for (int i =0;i   {
   if (!strcmp(number,arr.no))
   {
    printf("infor:   name   no   sex  age note\n");
    printf("%12s%12s%12c%12d%12s\n",arr.name,arr.no,
     arr.sex,arr.age,arr.bnote);
    printf("please input information:\n");
    scanf("%s%s%c%d%s",arr.name,arr.no,&arr.sex,&arr.age,arr.bnote);
    Save(arr,n);
    flag = true;
   }
  }
  if (flag == false)
  {
   printf("该学生不存在!:\n");
  }
}

}

void Delete(struct student* arr,int n)//学生基本信息删除
{
char number[10];
bool flag=false;
printf("Delete information:\n");
printf("please input the no:\n");
scanf("%s",number);
for (int i =0;i {
  if (!strcmp(number,arr.no))
  {
   strcpy(arr.name," ");
   strcpy(arr.no," ");
   strcpy(arr.bnote," ");

   arr.sex = ' ';
   arr.age = 0;
   Save(arr,n);
   flag = true;
  }
}
if (flag == true)
{
  printf("该学生不存在!:\n");
}
}

void Search(struct student* arr,int n)//学生基本信息查询
{
int temp,i;
bool flag=false;
   printf("---------------通过学号查询,press 1-------------\n");  
   printf("---------------通过姓名查询,press 2-----------\n");  
   printf("---------------通过性别查询,press 3------------\n");  
   printf("---------------通过年龄查询,press 4------------\n");  
   printf("---------------退出,press 5      ------------\n");  
   scanf("%d",&temp);
   switch (temp)
   {
   case 1://按照学号查询
    {
     char num[10];
     printf("请输入学号:\n");
     scanf("%s",num);
     for ( i =0;i      {
      if (!strcmp(num,arr.no))
      {
       printf("%12s%12s%12c%12d%12s\n",arr.name,arr.no,
       arr.sex,arr.age,arr.bnote);
       flag = true;
      }
     }
     if (!flag)
     {
            printf("该学生不存在.\n");
     }
    }
    break;
   case 2://按照名字查询
    {
     char num[10];
     printf("please input name:\n");
     scanf("%s",num);
     for ( i =0;i      {
      if (!strcmp(num,arr.name))
      {
       printf("%12s%12s%12c%12d%12s",arr.name,arr.no,
        arr.sex,arr.age,arr.bnote);
       flag = true;
      }
     }
     if (!flag)
     {
      printf("该学生不存在.\n");
     }
    }
    break;
   case 3://按照性别查询
    {
     char ch;
     printf("请输入性别:\n");
     //scanf("%c",&ch);
     ch = getch();
     for ( i =0;i      {
      if (ch == arr.sex)
      {
       printf("%12s%12s%12c%12d%12s\n",arr.name,arr.no,
        arr.sex,arr.age,arr.bnote);
       flag = true;
      }
     }
     if (!flag)
     {
      printf("t该学生不存在.\n");
     }
    }
    break;
   case 4://按照年龄查询
    {
     char num_age;
     printf("请输入年龄:\n");
     scanf("%d",&num_age);
     for ( i =0;i      {
      if (num_age == arr.age)
      {
       printf("%12s%12s%12c%12d%12s\n",arr.name,arr.no,
        arr.sex,arr.age,arr.bnote);
       flag = true;
      }
     }
     if (!flag)
     {
      printf("该学生不存在.\n");
     }
    }
    break;
   default:
    break;
   }
}

void main()
{
struct student arr[N];
char ps[6];
bool flag =false;
printf("请输入密码:\n");
    scanf("%s",ps);
    flag = Check(ps);
if (flag)
{
  int select;
  print(false);
  scanf("%d",&select);
while (0
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lillian67890

至尊木虫 (文坛精英)


余泽成(金币+1):谢谢参与应助! 2010-09-23 18:36:03
C++兼容C,你的程序可以直接运行,不用改。
2楼2010-09-23 11:01:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小小一颗鑫

不是啊,写了这个,我想学C++啊!大哥能帮忙写写不。和同学在约定今天的做出来的啊。
3楼2010-09-23 11:04:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

stephenliu89

银虫 (小有名气)


余泽成(金币+1):谢谢参与应助! 2010-09-23 18:36:59
加上 #include
  #include
using namespace std;
scanf函数改为输入流cin >>
printf函数改为输出流cout <<
读入文件改为 ifstream fin ("XX.txt";
fin >>
输入文件改为 ofstream fout ("XXX.txt";
fout <<
这样就是C++的写法啦,哈哈哈
Email:stephenliu1989@163.com
4楼2010-09-23 11:48:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


余泽成(金币+1):讲的透彻! 2010-09-23 18:38:25
改成真正的C++程序不是那么简单的,你要重新设计你的程序架构,而不是简单的使用cin,cout,<<,>>这些东西,这样的话充其量只是一个披着C++皮的C程序而已。

改成C++程序,你要要考虑把原来的哪些变量和函数封装成类,还要考虑这样封装是否合理,封装以后类与类之间的调用关系,以及是否方便扩展等。

记住C++和C的本质区别不在于语法,而是编程思想。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
5楼2010-09-23 11:59:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

stephenliu89

银虫 (小有名气)

引用回帖:
Originally posted by magic7004 at 2010-09-23 11:59:55:
改成真正的C++程序不是那么简单的,你要重新设计你的程序架构,而不是简单的使用cin,cout,<<,>>这些东西,这样的话充其量只是一个披着C++皮的C程序而已。

改成C++程序,你要要考虑把原来的哪些 ...

正确,哈哈
Email:stephenliu1989@163.com
6楼2010-09-23 12:03:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


余泽成(金币+1):辛苦了!中秋愉快! 2010-09-23 18:38:58
简单点,楼主做2个类吧
一个是student类,这个类保存每个student的信息,负责显示和修改信息。
另一个是manager类,这个类维护一个student的数组或者链表,负责存盘和读文件,以及和用户交互。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
7楼2010-09-23 12:12:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 小小一颗鑫 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见