| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 436 人关注过本帖
标题:那位高手帮帮忙 将C语言改为vc ++
只看楼主 加入收藏
wardy
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-12-18
收藏
 问题点数:0 回复次数:0 
那位高手帮帮忙 将C语言改为vc ++
请各路高手帮帮忙
可以把以下c语言的程序改为vc++ 的几个类 的程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int shoudsave=0;
struct person
{
  char num[10];        /*  诗歌号  */
  char name[12];       /* 诗歌名  */
  char trad1[16];         /* 第一句 */
  char trad2[16];         /* 第二句 */
  char trad3[16];        //第三句
  char trad4[16];       //第四句
  char neartime[10];   /* 最近更新时间  */
};

typedef struct node
{
  struct person data;
  struct node *next;
}Node,*Link;

void menu()
{
  printf("********************************************************************************");
  printf("\t1输入新诗歌\t\t\t\t\t2删除诗歌\n");
  printf("\t3查阅诗歌\t\t\t\t\t4修改诗歌\n");
  printf("\t5显示全部诗歌\t\t\t\t\t6保存诗歌\n");
  printf("\t0退出系统\n");
  printf("********************************************************************************\n");
}

void printstart()
{
  printf("-----------------------------------------------------------------------\n");
}

void Wrong()
{
  printf("\n=====>提示:输入错误!\n");
}

void Nofind()
{
  printf("\n=====>提示:没有找到该诗歌!\n");
}

void printc() /*  本函数用于输出中文  */
{
  printf(" 诗歌号\t  诗歌名\n  诗歌内容\n");
}

void printe(Node *p)/* 本函数用于输出英文  */
{
  printf("%-12s%s\t%s\t%s\t%s\t %s\n",p->data.num,p->data.name,p->data.trad1\n,p->data.trad2\n,p->data.trad3\n,p->data.trad4\n);
}


Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位链表中符合要求的接点,并返回该指针  */
{
  Node *r;
  if(strcmp(nameornum,"num")==0) /* 按诗歌号查询  */
  {
    r=l->next;
   while(r!=NULL)
   {
     if(strcmp(r->data.num,findmess)==0)
     return r;
     r=r->next;
   }
  }
  else if(strcmp(nameornum,"name")==0) /* 按诗歌名查询  */
  {
    r=l->next;
    while(r!=NULL)
    {
      if(strcmp(r->data.name,findmess)==0)
      return r;
      r=r->next;
    }
  }
  return 0;
}


/* ----------------------------------增加新诗歌------------------------------------- */
void Add(Link l)  
{
  Node *p,*r,*s;
  char num[10];
  r=l;
  s=l->next;
  while(r->next!=NULL)
        r=r->next; /* 将指针置于最末尾  */
  while(1)
  {
     printf("请你输入诗歌号(以'0'返回上一级菜单:)");
     scanf("%s",num);
     if(strcmp(num,"0")==0)
     break;
     while(s)
     {
         if(strcmp(s->data.num,num)==0)
         {
           printf("=====>提示:诗歌号为'%s'的诗歌已经存在,若要修改请你选择'4 修改'!\n",num);
           printstart();
           printc();
           printe(s);
           printstart();
           printf("\n");
           return;
         }
         s=s->next;
     }
  p=(Node *)malloc(sizeof(Node));
  
  strcpy(p->data.num,num);
  printf("请你输入诗歌名:");
  scanf("%s",p->data.name);
  getchar();
  printf("请你输入第一句:");
  scanf("%s",p->data.trad1);
  getchar();
  printf("请你输入第二句:");
  scanf("%d",&p->data.trad2);
  getchar();
  printf("请你输入第三句:");
  scanf("%d",&p->data.trad3);
  getchar();
  printf("请你输入第四句:");
  scanf("%d",&p->data.trad4);
  getchar();
  /* 信息输入已经完成  */
  p->next=NULL;
  r->next=p;
  r=p;
  shoudsave=1;
  }
}


/* ---------------------------------查询诗歌-------------------------------- */
void Qur(Link l)
{

  int sel; /* 选择  */
  char findmess[20];
  Node *p;

  if(!l->next)
  {
    printf("\n=====>提示:没有资料可以查询!\n");
    return;
  }
  printf("\n=====>1按诗歌号查找\n=====>2按诗歌名查找\n");
  scanf("%d",&sel);
  if(sel==1)/* 诗歌号  */
  {
    printf("请你输入要查找的诗歌号:");
    scanf("%s",findmess);
    p=Locate(l,findmess,"num");
    if(p)
    {
      printf("\t\t\t\t查找结果\n");
      printstart();
      printc();
      printe(p);
      printstart();
    }
    else
      Nofind();
  }
  else if(sel==2) /* 诗歌名  */
  {
    printf("请你输入要查找的诗歌名:");
    scanf("%s",findmess);
    p=Locate(l,findmess,"name");
    if(p)
    {
     printf("\t\t\t\t查找结果\n");
     printstart();
     printc();
     printe(p);
     printstart();
    }
    else
     Nofind();
  }
else
  Wrong();
}


/* ---------------------------------删除诗歌----------------------------------- */
void Del(Link l)
{
  int sel; /* 选择 */
  Node *p,*r;
  char findmess[20];
  if(!l->next)
  {
   printf("\n=====>提示:没有资料可以删除!\n");
   return;
  }
  printf("\n=====>1按诗歌号删除\n=====>2按诗歌名删除\n");
  scanf("%d",&sel);
  if(sel==1) /* 诗歌号 */
  {
   printf("请你输入要删除的诗歌号:");
   scanf("%s",findmess);
   p=Locate(l,findmess,"num");
   if(p)
   {
    r=l;
    while(r->next!=p)
    {r=r->next;}
    r->next=p->next;
    free(p);
    printf("\n=====>提示:该诗歌已经成功删除!\n");
    shoudsave=1;
   }
  else
    Nofind();
  }
  else if(sel==2)
  {
    printf("请你输入要删除的诗歌名:");
    scanf("%s",findmess);
    p=Locate(l,findmess,"name");
    if(p)
    {
      r=l;
      while(r->next!=p)   r=r->next;
      r->next=p->next;
      free(p);   /* 删除并释放结点 */
      printf("\n=====>提示:该诗歌已经成功删除!\n");
      shoudsave=1;
    }
    else
       Nofind();
  }
else
   Wrong();
}


/* -----------------------------------修改诗歌-------------------------------------- */
void Modify(Link l)
{
  Node *p;
  char findmess[20];
  if(!l->next)
  {
    printf("\n=====>提示:没有资料可以修改!\n");
    return;
  }
  printf("请你输入要修改的诗歌:");
  scanf("%s",findmess);
  p=Locate(l,findmess,"num");
  if(p)
  {
    printf("请你输入新诗歌号(原来是%s):",p->data.num);
    scanf("%s",p->data.num);
    printf("请你输入新诗歌名(原来是%s):",p->data.name);
    scanf("%s",p->data.name);
    getchar();
    printf("请你输入第一句(原来是%s):",p->data.trad1);
    scanf("%s",p->data.trad1);
    printf("请你输入第二句(原来是%s):",p->data.trad2);
    scanf("%s",&p->data.trad2);
    getchar();
    printf("请你输入第三句(原来是%s):",p->data.trad3);
    scanf("%s",&p->data.trad3);
    getchar();
    printf("请你输入第四句(原来是%s):",p->data.trad4);
    scanf("%s",&p->data.trad4);
    getchar();
    printf("\n=====>提示:资料修改成功!\n");
    shoudsave=1;
  }
else
    Nofind();
}


/* -----------------------------------显示诗歌----------------------------------------- */
void Disp(Link l)
{
  int count=0;
  Node *p;
  p=l->next;
  if(!p)
  {
    printf("\n=====>提示:没有资料可以显示!\n");
    return;
  }
  printf("\t\t\t\t显示结果\n");
  printstart();
  printc();
  printf("\n");
  while(p)
  {
   printe(p);
   p=p->next;
  }
  printstart();
  printf("\n");
}



/* -----------------------------------保存诗歌------------------------------------- */
void Save(Link l)
{
   FILE* fp;
   Node *p;
   int flag=1,count=0;
   fp=fopen("c:\\person","wb");
   if(fp==NULL)
   {
      printf("\n=====>提示:重新打开文件时发生错误!\n");
      exit(1);
   }
   p=l->next;
  while(p)
  {
    if(fwrite(p,sizeof(Node),1,fp)==1)
    {  
      p=p->next;
      count++;
    }
    else
    {
      flag=0;
      break;
    }
  }
  if(flag)
  {
    printf("\n=====>提示:文件保存成功.(有%d首诗歌已经保存.)\n",count);
    shoudsave=0;
  }  
  fclose(fp);
}


/* ------------------------------------主函数---------------------------------------- */
void main()
{
   Link l;    /* 连表  */
   FILE *fp;  /* 文件指针  */
   int sel;
   char ch;
   char jian;
   int count=0;
   Node *p,*r;
   l=(Node*)malloc(sizeof(Node));
   l->next=NULL;
   r=l;
   fp=fopen("C:\\person","rb");
   if(fp==NULL)
   {
      printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n");
      scanf("%c",&jian);
      if(jian=='y'||jian=='Y')
           fp=fopen("C:\\person","wb");
      else
          exit(0);
   }
   printf("\n=====>提示:文件已经打开,正在导入记录......\n");
   while(!feof(fp))
   {
      p=(Node*)malloc(sizeof(Node));
      if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中  */
      {
         p->next=NULL;
         r->next=p;
         r=p; /* 将该接点挂入连中  */
         count++;
      }
   }  
   fclose(fp); /* 关闭文件  */
   printf("\n=====>提示:记录导入完毕,共导入%d首诗歌.\n",count);
   while(1)
   {
      menu();
      printf("请你选择操作:");
      scanf("%d",&sel);
      if(sel==0)
      {
          if(shoudsave==1)
          {  getchar();
             printf("\n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?\n");
             scanf("%c",&ch);
             if(ch=='y'||ch=='Y')
             Save(l);
          }
   printf("\n=====>提示:你已经退出系统,再见!\n");
   break;
      }
      switch(sel)
      {
        case 1:Add(l);break;     /* 增加诗歌  */
        case 2:Del(l);break;     /* 删除诗歌  */
        case 3:Qur(l);break;     /* 查询诗歌  */
        case 4:Modify(l);break;  /* 修改诗歌 */
        case 5:Disp(l);break;    /* 显示诗歌  */
        case 6:Save(l);break;    /* 保存诗歌  */
        default: Wrong();getchar();break;
      }
   }
}

[[italic] 本帖最后由 wardy 于 2007-12-29 18:35 编辑 [/italic]]
搜索更多相关主题的帖子: C语言 
2007-12-29 09:56
快速回复:那位高手帮帮忙 将C语言改为vc ++
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025812 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved