前辈们帮忙看一看,谢谢
下面是我写的一段代码,有点乱,有点粗糙。。请不要介意。前辈们帮我看一下,为什么每一次调用vipcheck()这一个函数时就会发生错误?还有帮我找一找代码中需要改进,没有作用的东西,谢谢。
/***********************************************************
图书馆管理系统:
功能:1.增加新书信息。
2.删除旧书信息。
3.查询书本信息。
4.借书(非注册用户不能借书).
5.还书
6.注册
**********************************************************/
#include"stdio.h"
#include"string.h"
/***************************************************
函数的声明:按顺序分别是以下函数:
1.输入新书函数
2.查询书本函数
3.删除书本函数
4.注册函数
5.借书函数
6.还书函数
7.主菜单函数
8.按姓名查询函数
9.按作者查询函数
10.按序号查询函数
11.会员验证函数
**************************************************/
void putin(void);
void checkbook(void);
void del(void);
void reg(void);
void bor(void);
void huan(void);
void menu(void);
void checkname(void);
void checkauthor(void);
void checknum();
int vipcheck(char id[],char code[]);
/***************************************************
书本结构类型与会员结构类型定义
**************************************************/
struct book
{
char bkname[20];
int num;
float price;
char author[10];
char state;
char borrower[10];
char sex;
int stunum;
};
struct book pers[10]={{"the c primer plus",1,60.0,"prata",'n',"liu",'m',1}
,{"the c programming",2,75.5,"stephen",'y',"none",'m',0}};
struct vipinformation
{
char vipname[20];
char vipcode[20];
char vipsex;
int vipnum;
}vips[10];
struct vipinformation vips[10]={{"liu","123",'m',5}};
/*******************************************
借书函数:
*******************************************/
void bor()
{ char id[10];
char code[10];
int i,vip;
char want[20];
char state='y';
char choice;
int vipcheck(char id[],char code[]);
printf("想要借书请先登录\n");
printf("请输入你的用户名和密码:\n");
printf("用户名:");
scanf("%s",id);
getchar();
printf("密码:");
scanf("%s,code");
getchar();
vip=vipcheck(id,code);
if(vip==1)
{
printf("登录成功\n");
printf("请输入想借的书的书名:");
gets(want);
for(i=0;i<=10;i++)
{
if(!strcmp(want,pers[i].bkname))
{
if(state==pers[i].state)
{
printf("此书可借\n");
pers[i].state='n';
break;
}
else
printf("此书已经外借\n");
break;
}
if(i>=10)
printf("图书馆里面没有这一本书\n");
}
printf("你想借其它书吗?请输入y or n:");
select:
scanf("%c",&choice);
getchar();
switch(choice)
{
case 'y':bor();break;
case 'n':menu(); break;
default : printf("操作错误,请重新输入\n");goto select;break;
}
}
}
/******************************************************
按作者查函数
***********************************/
void checkauthor()
{
int i;
char writer[20];
char choice;
printf("请输入你想查询的作者\n");
gets(writer);
for(i=0;i<=10;i++)
{
if(!strcmp(writer,pers[i].author))
{
printf("*******************书本已经找到****************************\n\n");
printf(" 书名 序号 单价 作者 状态 借书人 性别 学号 \n\n");
printf("%s %d %.2f %s %c %s %c %d \n\n",
pers[i].bkname,pers[i].num,pers[i].price,pers[i].author,pers[i].state,pers[i].borrower,pers[i].sex,pers[i].stunum);
break;
}
if(i>=10)
printf("图书馆里面没有这一本书。\n");
}
printf("你还想要查询其他书吗?\n\n");
select:
scanf("%c",&choice);
getchar();
switch(choice)
{
case 'y':system("cls");checkauthor();break;
case 'n':system("cls");menu();break;
default:printf("操作错误,请重新操作\n");goto select;break;
}
}
/****************************************************
查询书本信息函数
******************************************************/
void check()
{
char oper;
printf("请选择你想查询的方式:\n");
printf("按书名查询,请按1.\n");
printf("按序号查询,请按2.\n");
printf("按作者查询,请按3.\n");
printf("返回主菜单,请按0.\n");
printf("操作:");
select:
scanf("%c",&oper);
getchar();
switch(oper)
{
case '1':checkname();break;
case '2':checknum();break;
case '3':checkauthor();break;
case '0':menu();break;
default: printf("\n操作错误,请重新选择。");goto select;break;
}
}
/****************************************************
按书名查询函数
***************************************************/
void checkname()
{
int i;
char check[20];
char choice;
printf("请输入书名:");
gets(check);
for(i=0;i<=10;i++)
{
if(!strcmp(check,pers[i].bkname))
{
printf(" *****书本已经找到******\n\n");
printf(" 书名 序号 单价 作者 状态 借书人 性别 学号 \n\n");
printf("%s %d %.2f %s %c %s %c %d \n\n",
pers[i].bkname,pers[i].num,pers[i].price,pers[i].author,pers[i].state,pers[i].borrower,pers[i].sex,pers[i].stunum);
break;
}
if(i>=10)
printf("图书馆里面没有这一本书\n\n\n\n");
}
printf("你还想查询其他书吗?\n");
select:
scanf("%c",&choice);
getchar();
switch(choice)
{
case 'y':system("cls");checkname();break;
case 'n':system("cls");menu();break;
default : printf("操作错误,请重新操作,谢谢\n");goto select; break;
}
}
/****************************
按序号查函数
***************************/
void checknum()
{
int i;
int num;
char choice;
printf("请输入你想查询的序号:");
scanf("%d",&num);
getchar();
for(i=0;i<=10;i++)
{
if(num==pers[i].num)
{
printf(" *****书本已经找到******\n\n");
printf(" 书名 序号 单价 作者 状态 借书人 性别 学号 \n\n");
printf("%s %d %.2f %s %c %s %c %d \n\n",
pers[i].bkname,pers[i].num,pers[i].price,pers[i].author,pers[i].state,pers[i].borrower,pers[i].sex,pers[i].stunum);
break;
}
if(i>=10)
printf("\n\n\n\n********图书馆里面没有这一本书*********n\n\n\n");
}
printf("你还想要查询其他书吗?\n\n\n");
select:
scanf("%c",&choice);
getchar();
switch(choice)
{
case'y':system("cls");checknum();break;
case'n':system("cls");menu();break;
default:printf("操作错误,请重新操作,谢谢\n");goto select;break;
}
}
/************************************
删除书本信息函数
***********************************/
void del()
{
char choice;
int i,m;
char delbook[20];
int ifdel=0;
printf("请输入想要删除的书名:");
gets(delbook);
for(i=0;i<=10;i++)
{
if(ifdel==(strcmp(delbook,pers[i].bkname)))
{
for(m=i;m<=10;m++)
{
strcpy(pers[i+1].bkname,pers[i].bkname);
pers[i+1].num=pers[i].num;
strcpy(pers[i+1].author,pers[i].author);
pers[i+1].state=pers[i].state;
strcpy(pers[i+1].borrower,pers[i].borrower);
pers[i+1].sex=pers[i].sex;
pers[i+1].stunum=pers[i].stunum;
}
printf("\n\n******%s已经删除*******\n\n",delbook);
break;
}
if(i>=10)
printf("*******这本书已经注销了或图书馆里面没有这一本书.*******\n\n");
}
printf("\n\n*****你还想要删除其它书吗?<y/n>*********\n\n");
select:
scanf("%c",&choice);
getchar();
switch(choice)
{
case 'y':system("cls");del();break;
case 'n':system("cls");menu();break;
default:printf("\n操作错误,请重新操作,谢谢.\n");getch();system("cls");goto select;break;
}
}
/********************************
还书函数
*******************************/
void huan()
{
char choice;
int vipcheck(char id[],char code[]);
char id[10];
char code[10];
char whuan[10];
int i ;
int jud;
char borer[10]="none";
printf("还书请先登录,谢谢.\n");
printf("请输入你的ID:");
scanf("%s",id);
printf("请输入你的密码:");
scanf("%s",code);
jud=vipcheck(id,code);
if(jud==1);
{
printf("登录成功。\n\n");
printf("请输入你想要还的书名:");
scanf("%s",huan);
for(i=0;i<=10;i++)
{
if(!strcmp(whuan,pers[i].bkname))
{
pers[i].state='y';
strcpy(pers[i].borrower,borer);
pers[i].sex='n';
pers[i].stunum=0;
printf("你已经成功还书了,谢谢\n\n");
break;
}
}
}
if(jud!=1) printf("登录不成功。\n\n");
printf("你还想还其他书吗?请输入y or n\n");
select:
scanf("%c",&choice);
getchar();
switch(choice)
{
case 'y':system("cls"); huan();break;
case 'n':system("cls");menu();break;
default:printf("操作错误,请重新输入,谢谢.\n");goto select;break;
}
}
/*********************
主菜单函数
*********************/
void menu()
{
char oper;
menu:
printf(" *************************************************\n");
printf(" *************************************************\n");
printf(" *************************************************\n");
printf(" ** 欢迎使用图书馆管理系统 **\n");
printf(" ** 请根据您的需求按指示操作,谢谢 **\n");
printf(" **1.如需输入新进图书的信息: 请按1,谢谢 **\n");
printf(" **2.如需查询图书的基本信息: 请按2, 谢谢 **\n");
printf(" **3.如需对撤消图书的信息删除: 请按3,谢谢 **\n");
printf(" **4.如需办理注册手续: 请按4,谢谢 **\n");
printf(" **5.如需办理借书手续: 请按5, 谢谢 **\n");
printf(" **6.如需办理还书手续: 请按6, 谢谢 **\n");
printf(" **0.如需退出系统: 请按0, 谢谢 **\n");
printf(" *************************************************\n");
printf(" *************************************************\n");
printf(" *************************************************\n\n\n");
printf(" **请按数字提示操作,谢谢: ");
scanf("%c",&oper);
getchar();
switch(oper)
{
case '1': putin();break;
case '2': check();break;
case '3': del();break;
case '4': reg();break;
case '5': bor();break;
case '6': huan(); break;
case '0':break;
default :printf("\n操作错误,请按指示操作,请按任意键返回。谢谢。\n");getch();getchar();system("cls");goto menu;
}
}
/*****************
输入新书信息函数
******************/
void putin()
{
int i;
int want;
printf("请输入新书的数目:");
scanf("%d",&want);
printf("请依次输入新书的书名、序号、单价、作者。各项以逗号隔开:\n");
printf("书名 序号 单价 作者\n");
for(i=10;i<=10+want;i++)
scanf("%s,%d,%f,%s",pers[i].bkname,&pers[i].num,&pers[i].price,pers[i].author);
printf("图书库更新成功\n");
printf("请按任意键返回主菜单:");
getch();
system("cls");
menu();
}
/***********************
注册函数
***********************/
void reg()
{ int i=10;
char choice;
char yourname[20];
char code[10],recode[10];
printf("请输入你的ID:\n");
gets(yourname);
printf("请输入你的密码:\n");
gets(code);
printf("请输入你的性别。\n");
scanf("%c",&vips[i].vipsex);
getchar();
printf("请输入你的学号\n");
scanf("%d",&vips[i].vipnum);
getchar();
strcpy(vips[i].vipname,yourname);
strcpy(vips[i].vipcode,code);
printf("***************注册成功*************\n\n");
printf("**************你想借书吗?请输入y/n*********\n");
select:
scanf("%c",&choice);
getchar();
switch(choice)
{
case 'y':system("cls");bor();break;
case 'n':system("cls");menu();break;
default:printf("操作错误,请重新输入\n");goto select;
}
}
/*****************************
会员验证函数
******************************/
int vipcheck(char id[],char code[])
{
int i;
for(i=0;i<=10;i++)
{
if((strcmp(id,vips[i].vipname)==0)&&(strcmp(code,vips[i].vipcode)==0))
return 1;
}
return 0;
}
void main()
{
menu();
printf("\n\n\n\n\n\n");
printf("************************欢迎使用*******************************\n");
printf("**********************请按任意结束*****************************\n");
}