C语言scanf输入时缓冲区问题 ,运行直接弹出程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
FILE *fp;
int m;
struct info
{
int bh;//编号
char sm[30];//书名
int jg;//价格
char cbs[30];//出版社
char cbrq[30];//出版日期
int kc;//库存
}
em[100];
int vis[100]={0};
void load();
void in()//导入
{
int i ;
if((fp=fopen("in.txt","r"))==NULL)
return;
for(i=1;i<=10;i++)
{
fscanf(fp,"%d%s%d%s%s%d",&em[i].bh, em[i].sm,&em[i].jg,em[i].cbrq,em[i].cbs,&em[i].kc);
vis[i]=1;
}
m=10;
fclose(fp);
}
void out()
{
int i;
if((fp=fopen("out.txt","w"))==NULL)
return;
for(i=1;i<=m;i++)
{
if(vis[i])
{
fprintf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[i].bh,em[i].sm,em[i].jg,em[i].cbrq,em[i].cbs,em[i].kc);
}
}
fclose(fp);
}
void memu1()//样式1
{
system("cls");
printf("\n");
printf("\n");
printf(" )))))))))))))))))进入图书管理系统((((((((((((((((\n");
printf(" ) 1.图书信息录入 5.浏览图书信息 (\n");
printf(" ) 2.图书信息修改 6. 借阅图书 (\n");
printf(" ) 3.图书信息删除 7. 归还图书 (\n");
printf(" ) 4.图书信息查询 8. 清屏 (\n");
printf(" ) 0. 退出 (\n");
printf(" )))))))))))))))))))))))))))))))((((((((((((((((((((((\n");
}
void memu2()//样式2
{
system("cls");
printf("\n");
printf("\n");
printf("*一一一一一一一一一一一一一一-一一一一一一一一一一一一一*\n");
printf("丨 丨\n");
printf("丨 *一一一一一一一一一一一* 丨\n");
printf("丨 丨进入图书管理系统丨 丨\n");
printf("丨 *一一一一一一一一一一一* 丨\n");
printf("丨 丨\n");
printf("丨 *一一一一一一一一* *一一一一一一一一* 丨\n");
printf("丨 丨1.图书信息录入丨 丨2.图书信息修改丨 丨\n");
printf("丨 *一一一一一一一一* *一一一一一一一一* 丨\n");
printf("丨 丨\n");
printf("丨 *一一一一一一一一* *一一一一一一一一* 丨\n");
printf("丨 丨3.图书信息删除丨 丨4.图书信息查询丨 丨\n");
printf("丨 *一一一一一一一一* *一一一一一一一一* 丨\n");
printf("丨 丨\n");
printf("丨 *一一一一一一一一* *一一一一一一一一* 丨\n");
printf("丨 丨5.浏览图书信息丨 丨6. 借阅图书 丨 丨\n");
printf("丨 *一一一一一一一一* *一一一一一一一一* 丨\n");
printf("丨 丨\n");
printf("丨 *一一一一一一一一* *一一一一一一一一* 丨\n");
printf("丨 丨7. 归还图书 丨 丨 8.清屏 丨 丨\n");
printf("丨 *一一一一一一一一* *一一一一一一一一* 丨\n");
printf("丨 丨\n");
printf("丨 *一一一一一一一一* 丨\n");
printf("丨 丨 0.退出 丨 丨\n");
printf("丨 *一一一一一一一一* 丨\n");
printf("丨 丨\n");
printf("*一一一一一一一一一一一一一-一一一一一一一一一一一一一一*\n");
}
void add() //录入
{
int n,i;
for(i=1;i<100;i++)
if(vis[i]!=1)
{
n=i;
break;
}
printf("新图书编号为:%d\n",n);
em[n].bh=n;
printf("请输入新图书书名:");
scanf(" %8s",em[n].sm);
printf("请输入新图书价格:");
scanf(" %8d",&em[n].jg);
printf("请输入新图书出版社:");
scanf(" %8s",em[n].cbs);
printf("请输入新图书出版日期:");
scanf(" %8s",em[n].cbrq);
printf("请输入新图书库存:");
scanf(" %8d",em[n].kc);
vis[n]=1;
m++;
out();
}
void modify()//修改
{
int n;
printf("请输入的待修改的图书编号:");
scanf("%d",&n);
if(vis[n])
{
em[n].bh=n;
printf("请输入修改后的图书书名:");
scanf("%s",em[n].sm);
printf("请输入修改后的图书价格:");
scanf("%d",&em[n].jg);
printf("请输入修改后的图书出版社:");
scanf("%s",em[n].cbs);
printf("请输入修改后的图书出版日期:");
scanf("%s",em[n].cbrq);
printf("请输入修改后的图书库存:");
scanf("%s",em[n].kc);
out();
}
else
printf("未找到符合要求的记录\n");
}
void del()//删除
{
int n;
printf("请输入的待删除的图书编号:");
scanf("%d",&n);
if(vis[n])
{
vis[n]=0;
printf("记录删除成功!!\n");
system("pause");
}
else
printf("未找到符合要求的记录\n");
out();
}
void bybh() //按编号查询
{
int n;
printf("请输入所需查询的图书编号:");
scanf("%d",&n);
if(vis[n])
{
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[n].bh,em[n].sm,em[n].jg,em[n].cbrq,em[n].cbs,em[n].kc);
}
else
printf("未找到符合要求的记录\n");
}
void bysm() //按书名查询
{
char ch[10];
int s=0;
int i;
printf("请输入所需查询的图书书名:");
scanf("%s",ch);
for( i=1;i<=m;i++)
{
if(strcmp(ch,em[i].sm)==0)
{
s=1;
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[i].bh,em[i].sm,em[i].jg,em[i].cbrq,em[i].cbs,em[i].kc);
}
}
if(s==0)
printf("未找到符合要求的记录\n");
}
void byjg() //按价格查询
{
char c;
int n,i;
int s=0;
printf("请输入查询的价格段:");
scanf("%c%d",&c,&n);
if(c=='>')
{
for(i=1;i<=m;i++)
{
if(em[i].jg>n)
{
s=1;
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[i].bh,em[i].sm,em[i].jg,em[i].cbrq,em[i].cbs,em[i].kc);
}
}
if(s==0)
printf("未找到符合您的要求的记录\n");
}
else if(c=='<')
{
for(i=1;i<=m;i++)
{
if(em[i].jg<n)
{
s=1;
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[i].bh,em[i].sm,em[i].jg,em[i].cbrq,em[i].cbs,em[i].kc);
}
}
if(s==0)
printf("未找到符合您的要求的记录\n");
}
else if(c=='=')
{
for(i=1;i<=m;i++)
{
if(em[i].jg==n)
{
s=1;
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[i].bh,em[i].sm,em[i].jg,em[i].cbrq,em[i].cbs,em[i].kc);
}
}
if(s==0)
printf("未找到符合您的要求的记录\n");
}
}
void bycbs()//按出版社查询
{
char ch[10];
int s=0;
int i;
// if((fp=fopen("out,text","r"))==NULL)
// return;
printf("请输入所需查询的图书出版社:");
scanf("%s",ch);
for( i=1;i<=m;i++)
{
if(strcmp(ch,em[i].cbs)==0)
{
s=1;
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[i].bh,em[i].sm,em[i].jg,em[i].cbrq,em[i].cbs,em[i].kc);
}
}
if(s==0)
printf("未找到符合要求的记录\n");
//fclose(fp);
}
void bycbrq()//按出版日期查询
{
char ch[10];
int s=0;
int i;
//if((fp=fopen("out,text","r"))==NULL)
// return;
printf("请输入所需查询的图书出版日期:");
scanf("%s",ch);
for(i=1;i<=m;i++)
{
if(strcmp(ch,em[i].cbrq)==0)
{
s=1;
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[i].bh,em[i].sm,em[i].jg,em[i].cbrq,em[i].cbs,em[i].kc);
}
}
if(s==0)
printf("未找到符合要求的记录\n");
// fclose(fp);
}
void bykc() //按库存查询
{
int i;
int k;
int s=0;
printf("请输入所需查询的库存数量:");
scanf("%d",&k);
for(i=1;i<=m;i++)
{
if(k==em[i].kc)
{
s=1;
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[i].bh,em[i].sm,em[i].jg,em[i].cbrq,em[i].cbs,em[i].kc);
}
}
if(s==0)
printf("未找到符合您的要求的记录\n");
}
void serch()//查询
{int t;
system("cls");
printf(" ###########请选择查询方式##########\n");
printf(" 1.通过编号 5.通过出版日期\n");
printf(" 2.通过书名 6.通过库存\n");
printf(" 3.通过价格 7.清屏\n");
printf(" 4.通过出版社 0.返回上一级\n");
printf(" ##############################################\n");
while(1)
{
printf("请输入您的选择:");
scanf("%d",&t);
if (t==1)
bybh();
else if (t==2)
bysm();
else if (t==3)
byjg();
else if (t==4)
bycbs();
else if (t==5)
bycbrq();
else if (t==6)
bykc();
else if (t==7)
{ system("cls");
printf(" ###########请选择查询方式##########\n");
printf(" 1.通过编号 5.通过出版日期\n");
printf(" 2.通过书名 6.通过库存\n");
printf(" 3.通过价格 7.清屏\n");
printf(" 4.通过出版社 0.返回上一级\n");
printf(" ##############################################\n");
}
else if (t==0)
break;
else
printf("指令错误!!\n");
}
}
void list()//浏览
{
int n;
int i;
int t;
printf("请输入每页显示记录数量:");
scanf("%d",&n);
t=0;
for(i=1;i<=m;i++)
{
if(t==0)
{
system("cls");
printf("编号 书名 价格 出版日期 出版社 库存\n");
}
if(vis[i]==1)
if(t<n)
{
t++;
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[i].bh,em[i].sm,em[i].jg,em[i].cbrq,em[i].cbs,em[i].kc);
if(t==n)
{
t=0;
system("pause");
}
}
}
}
void jieyue()//借阅图书
{
int n;
int i;
printf("请选择你的图书编号:");
scanf("%d",&n);
if(vis[n])
{
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[n].bh,em[n].sm,em[n].jg,em[n].cbrq,em[n].cbs,em[n].kc);
printf("请输入借阅的数量:");
scanf("%d",&i);
em[n].kc=em[n].kc-i;
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[n].bh,em[n].sm,em[n].jg,em[n].cbrq,em[n].cbs,em[n].kc);
system("pause");
}
else printf("未找到符合您的要求的记录\n");
out();
}
void guihuan()//归还图书
{
int n;
int i;
printf("请选择你的图书编号:");
scanf("%d",&n);
if(vis[n])
{
printf("编号 书名 价格 出版日期 出版社 库存\n");
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[n].bh,em[n].sm,em[n].jg,em[n].cbrq,em[n].cbs,em[n].kc);
printf("请输入归还的数量:");
scanf("%d",&i);
em[n].kc=em[n].kc+i;
printf("%-3d %-6s %-7d %-8s %-8s %-8d\n",em[n].bh,em[n].sm,em[n].jg,em[n].cbrq,em[n].cbs,em[n].kc);
system("pause");
}
else
printf("未找到符合您的要求的记录\n");
out();
}
int main()
{int t,x;
in();//初始化
out();
printf("请选择菜单样式:1.简约 2.经典\n");
scanf("%d",&x);
while(1)
{
if(x==1)
memu1();
else
memu2();
printf("请输入您的选择:");
scanf("%d",&t);
if(t==1)
add();
if(t==2)
modify();
if(t==3)
del();
if(t==4)
serch();
if(t==5)
list();
if(t==6)//清屏
system("cls");
if(t==0)//退出
{
printf("您已退出图书馆信息管理系统!!\n");
break;
}
}
return 0;
}