DEV-C 源码转VC 问题

MAOO 2007-07-16 01:14:04
DEV-C 编的 能否改动一下使能在VC下运行 谢谢~
#include <stdio.h>
#include <stdlib.h>

#include "b_tree.h"

#define BOOK_NO_MAX 100
#define BOOK_NO_MIN 1

//对图书的操作。B-Tree对于图书来说基本上是透明的。
int get_book_no()
{
int book_no;
inp:printf("书号:");scanf("%d",&book_no);
if((book_no>BOOK_NO_MAX)||(book_no<BOOK_NO_MIN)){printf("无效的书号。\n");goto inp;}

return book_no;
}

int info_head()
{
printf("书号\t现存\t总量\t详细信息(书名、作者)\n");
return 0;
}

int info(NODE *node,int j)
{
int *p;

//printf("%d ",node->key[j]);
printf("%d\t%d\t%d\t%s %s\n",node->book[j]->key,
node->book[j]->current,
node->book[j]->total,
node->book[j]->author,
node->book[j]->name);

return 0;
}

int info_book()
{
int id,j,flag;
NODE *tmp;

id=get_book_no();

tmp=search(id,root,tmp,&j,&flag);

if(flag==0){printf("没有这种书。\n");return 1;}
info_head();
info(tmp,j);

return 0;
}

int find_by_name()
{
char name[40];
int id,i,j,flag;
NODE *tmp;

printf("书名:");scanf("%s",name);
info_head();
for(i=BOOK_NO_MIN;i<BOOK_NO_MAX;i++)
{
flag=0;
tmp=search(i,root,tmp,&j,&flag);
if(flag==0)continue;
if(!strcmp(tmp->book[j]->name,name)){info(tmp,j);}
}

return 0;
}

int find_by_author()
{
char author[20];
int id,i,j,flag;
NODE *tmp;

printf("著者:");scanf("%s",author);
info_head();
for(i=BOOK_NO_MIN;i<BOOK_NO_MAX;i++)
{
flag=0;
tmp=search(i,root,tmp,&j,&flag);
if(flag==0)continue;
if(!strcmp(tmp->book[j]->author,author)){info(tmp,j);}
}

return 0;
}

int find_book()
{
int c;
printf("1-按书号;2-按书名;3-按作者;其他-返回\n");
scanf("%d",&c);
switch(c)
{
case 1:info_book();break;
case 2:find_by_name();break;
case 3:find_by_author();break;
default:break;
}
return 0;
}

int add_book()
//可能会添加/删除节点。
{
int flag=0;
BOOK *tmp;
NODE *ptr;
int key,i;

key=get_book_no();

ptr=search(key,root,ptr,&i,&flag);

if(flag!=1)
//需要新增节点
{
if((tmp=malloc(sizeof(BOOK)))==NULL)exit(1);
tmp->key=key;
printf("书名:");scanf("%s",tmp->name);
printf("著者:");scanf("%s",tmp->author);
printf("数量:");scanf("%d",&tmp->total);
tmp->current=tmp->total;
add_node(tmp);
}else{//无须新增节点
printf("数量:");scanf("%d",&key);
ptr->book[i]->total+=key;
ptr->book[i]->current+=key;
}

return 0;
}

int del_book()
//只搜索,不会添加/删除节点。
{
int id,n,j,flag;
NODE *tmp;

id=get_book_no();

tmp=search(id,root,tmp,&j,&flag);
if(flag==0){printf("没有这种书。\n");return 1;}
info_head();
info(tmp,j);
printf("要出库多少本? ");scanf("%d",&n);
if(n>tmp->book[j]->current){printf("没有库存了。\n");return 1;}
tmp->book[j]->current-=n;

return 0;
}

int lent_book()
//只搜索,不会添加/删除节点。
{
int id,n,j,flag;
NODE *tmp;

id=get_book_no();

tmp=search(id,root,tmp,&j,&flag);
if(flag==0){printf("没有这种书。\n");return 1;}
info_head();
info(tmp,j);
printf("要借多少本? ");scanf("%d",&n);
if(n>tmp->book[j]->current){printf("没有库存了。\n");return 1;}
tmp->book[j]->current-=n;

return 0;
}

int give_book()
//只搜索,不会添加/删除节点。
{
int id,n,j,flag;
NODE *tmp;

id=get_book_no();

tmp=search(id,root,tmp,&j,&flag);
if(flag==0){printf("没有这种书。\n");return 1;}
info_head();
info(tmp,j);
printf("要还多少本? ");scanf("%d",&n);

if((n+tmp->book[j]->current)>tmp->book[j]->total){printf("数据错误。\n");return 1;}
tmp->book[j]->current+=n;

return 0;
}

int load_from_file()
{
FILE *fp;
int i,key,flag;
BOOK *tmp;
NODE *ptr;

if((fp=fopen("data.txt","r"))==NULL)
{
printf("cannot open file\n");
return 1;
}

init();
while(!feof(fp))
{
fscanf(fp,"%d",&key);
ptr=search(key,root,ptr,&i,&flag);

//需要新增节点
if((tmp=malloc(sizeof(BOOK)))==NULL)exit(1);
tmp->key=key;
fscanf(fp,"%d",&tmp->current);
fscanf(fp,"%d",&tmp->total);
fscanf(fp,"%s",tmp->author);
fscanf(fp,"%s",tmp->name);

add_node(tmp);
}

fclose(fp);
}

int save_to_file()
{
FILE *fp;
int i,j,flag=0;
NODE *tmp;

if((fp=fopen("data.txt","w"))==NULL)
{
printf("cannot open file\n");
return 1;
}

for(i=BOOK_NO_MIN;i<BOOK_NO_MAX;i++)
{
tmp=search(i,root,tmp,&j,&flag);
if(flag==1)fprintf(fp,"%d %d %d %s %s\n",tmp->book[j]->key,
tmp->book[j]->current,
tmp->book[j]->total,
tmp->book[j]->author,
tmp->book[j]->name);
}

fclose(fp);

return 0;
}


int load_n_save()
{
int c;
printf("1-加载;2-存盘;其他-返回\n");
scanf("%d",&c);
switch(c)
{
case 1:load_from_file();break;
case 2:save_to_file();break;
default:break;
}
return 0;
}

int shell()
{
int cmd=-1;

do{
printf("1-添加 2-删除 3-借书登记 4-还书登记 5-查找 9-加载&存盘 0-退出。\n> ");
scanf("%d",&cmd);

switch(cmd)
{
case 1:add_book();break;
case 2:del_book();break;
case 3:lent_book();break;
case 4:give_book();break;
case 5:find_book();break;
case 9:load_n_save();break;
default:break;
}

}while(cmd!=0);
return 0;
}

int main(int argc, char *argv[])
{
init();
shell();

system("PAUSE");
return 0;
}
...全文
126 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2007-07-16
  • 打赏
  • 举报
回复
为什么不自己先编译了试一下再来问?
我啃 2007-07-16
  • 打赏
  • 举报
回复
一般直接可以在VC下运行,尤其是VC6以上版本~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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