最佳回答
廊坊腾境装饰
回答数:26被采纳数:12
发布时间:
2017-04-09 23:51:41
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>typedef int BOOL;typedef struct bookinfo{
char number[15];/*产品编号*/
char name[30];/*产品名称*/
float price;/*单价*/
char auther[20];/*作者*/
BOOL isExit;/*存状态*/
char lendername[20];/*借书姓名*/
char lendersex[2];/*借书性别*/
char lendernum[15];/*借书号*/}BOOKINFO;void menu(){
printf("\n\n\n\n\n\n\n");
printf("\t\t\t图书管理系统\n");
printf("\t\t\t1:新进图书基本信息输入\n");
printf("\t\t\t2:显示全部记录\n");
printf("\t\t\t3:根据图书名称查询图书基本信息\n");
printf("\t\t\t4:根据图书名称撤销图书信息进行删除\n");
printf("\t\t\t5:按照图书名称排序\n");
printf("\t\t\t6:统计某价格图书数量\n");
printf("\t\t\t7:列所未借图书信息\n");
printf("\t\t\t8:退\n");
}void choice_1_input_new()/*输入新进图书信息*/{
char choice;
FILE *p;
BOOKINFO newbook;
system("cls");
while(1)
{
printf("输入图书编号:");
gets(newbook.number);
printf("输入图书名称:");
gets(newbook.name);
printf("输入图书单价:");
scanf("%f",&newbook.price;);
while(getchar()!='\n');
printf("输入图书作者:");
gets(newbook.auther);
printf("输入借书姓名:");
gets(newbook.lendername);
printf("输入借书性别:");
gets(newbook.lendersex);
printf("输入借书号:");
gets(newbook.lendernum);
printf("否保存该条书目?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice;!='y'&&choice;!='N'&&choice;!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
newbook.isExit=1;/*图书状态设置1表示没借*/
p=fopen("c:\\bookinfo.data","ab");
fwrite(&newbook;,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n该条书目已添加c:\\bookinfo.data文件!\n");
}
else
{
printf("\n本条书目未保存!\n");
}
printf("\n否继续添加书目?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice;!='y'&&choice;!='N'&&choice;!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}void choice_2_display_all()/*显示全部图书信息*/{
FILE *p;
int n;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo;[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
/*booknumber--;使用feof()函数读行需要booknumber自减使书目数量确*/
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("没任何图书信息!\n\n");
}
else
{
n=0;
printf("
图书信息\n");
printf("
图书信息
|
借书信息 \n");
printf("编号 名称
单价
作者
图书状态 | 姓名
性别
号\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
n++;
}
}
printf("\n\n按任意键主菜单!\n");
getch();
}void choice_3_search_according_name()/*根据图书名称显示图书信息*/{
char search[20]="";/*search用存放要查询书名*/
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo;[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数读行需要booknumber自减使书目数量确*/
fclose(p);
while(1)
{
printf("输入要查询书本名称:");
gets(search);
if(booknumber==0)
{
printf("书库没任何信息!\n\n");
printf("按任意键主菜单!\n\n");
getch();
break;
}/*if结束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
printf("该书详细信息:\n");
printf("
图书信息
|
借书信息 \n");
printf("编号 名称
单价
作者
图书状态 | 姓名
性别
号\n");
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
break;
}
if(n>=booknumber)
printf("没查找该书任何信息!\n");
printf("\n\n否继续查询?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice;!='y'&&choice;!='N'&&choice;!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else结束*/
}/*while(1)结束*/
}void choice_4_delete_according_name()/*根据图书名称图书信息进行删除*/{
char search[20]="";/*search用存放要删除书名*/
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
while(1)
{
printf("输入要删除书本名称:");
gets(search);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo;[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数读行需要booknumber自减使书目数量确*/
fclose(p);
if(booknumber==0)
{
printf("书库没任何信息!\n\n");
printf("按任意键主菜单!\n\n");
getch();
break;
}/*if结束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("没查找该书任何信息!\n");
else
{
printf("否确认需要删除该条书目?(Y/N)");
choice=getch();
while(choice!='Y'&&choice;!='y'&&choice;!='N'&&choice;!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
for(i=n;i<booknumber-1;i++)
bookinfo[i]=bookinfo[i+1];
booknumber--;
p=fopen("c:\\bookinfo.data","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo;[n],sizeof(BOOKINFO),1,p);
fclose(p);
printf("删除功!\n");
}
else
printf("\n\n该条书目没删除!");
}
printf("\n\n否继续进行删除操作?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice;!='y'&&choice;!='N'&&choice;!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else结束*/
}/*while(1)结束*/
}void choice_5_sort_according_name()/*根据图书名称排序*/{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[100];
int booknumber;
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(&bookinfo;[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数读行需要booknumber自减使书目数量确*/
fclose(p);
if(booknumber==0)
{
printf("没任何图书信息!\n\n");
}
else
{
for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(strcmp(bookinfo[m].name,bookinfo[n].name)>0)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("c:\\bookinfo.data","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo;[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完排序!\n\n");
}
printf("按任意键主菜单!\n");
getch(); }void choice_6_display_high_price()/*根据价格列图书信息*/{
float price;
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
printf("请输入价格:");
scanf("%f",&price;);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo;[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数读行需要booknumber自减使书目数量确*/
fclose(p);
if(booknumber==0)
{
printf("没任何图书信息!\n\n");
}
else
{
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
count++;
}
if(count==0)
printf("书库没比%.1f$价格高图书!",price);
else
{
printf("
价格高于%.1f$图书信息\n",price);
printf("
图书信息
|
借书信息 \n");
printf("编号 名称
单价
作者
图书状态 | 姓名
性别
号\n");
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n\n按任意键主菜单!\n");
getch();
}void choice_7_display_according_exitflag()/*根据存状态列图书信息*/{
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
booknumber=0;
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo;[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("书库没任何书目存!\n");
}
else
{
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
count++;
if(count==0)
printf("书库书籍全部借!\n");
else
{
printf("书库未借图书信息:\n\n");
printf("
图书信息
|
借书信息 \n");
printf("编号 名称
单价
作者
图书状态 | 姓名
性别
号\n");
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n按任意键返主菜单!\n");
getch(); }void main(){
char choice;
clock_t tm;
FILE *p;
if((p=fopen("c:\\bookinfo.data","rb"))==NULL)
{
p=fopen("c:\\bookinfo.data","wb");
fclose(p);
}
while(1)
{
system("cls");
menu();
choice=getch();
switch(choice)
{
case '1':choice_1_input_new();break;/*输入新进图书信息*/
case '2':choice_2_display_all();break;/*显示全部图书信息*/
case '3':choice_3_search_according_name();break;/*根据图书名称显示图书信息*/
case '4':choice_4_delete_according_name();break;/*根据图书名称图书信息进行删除*/
case '5':choice_5_sort_according_name();break;/*根据图书名称排序*/
case '6':choice_6_display_high_price();break;/*根据价格列图书信息*/
case '7':choice_7_display_according_exitflag();break;/*根据存状态列图书信息*/
case '8':printf("\n\n\t\t\t谢谢使用,再见!\n\t\t\t按任意键退!\n");getch();return;
default:
printf("\n\n\t\t\t请输入菜单数字!(1~8)");
tm=clock();
while(clock()<tm+1800);
break;
}
}}写赶,知道行行 程序没复杂东西要写楼主吧