第1个回答 2013-12-15
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 100 /*定义图书总容量为100*/
int Count=0; /*定义全局变量,用来表示图书的个数*/
struct book /*定义结构体类型*/
{
int num; /*序号为整型*/
char name[40]; /*书名为字符串*/
char author[20]; /*作者为字符串*/
char publish[50]; /*出版社为字符串*/
float price; /*价格为浮点型*/
};
struct book list[N]; /*定义struct book类型的变量 list N个*/
void show_bookinformation(struct book list[]); /*声明图书信息浏览函数*/
void check_bookinformation (struct book list[]); /*声明图书信息查询函数*/
void modify_bookinformation (struct book list[]); /*声明图书信息修改函数*/
void delete_bookinformation (struct book list[]); /*声明图书信息删除函数*/
void reorder_bookinformation(struct book list[]); /*声明图书信息排序函数*/
void buytotal(struct book list[]); /*声明图书购买信息函数*/
void read(); /*声明数据读入函数*/
void input(); /*声明图书信息录入函数*/
void open(); /*声明数据信息打开函数*/
/*主函数*/
void main()
{
int choice1;
printf(" *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\n");
printf(" * 欢迎进入图书销售管理系统 *\n");
printf(" *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\n");
do
{
printf("################################################################################"); /*显示菜单*/
printf(" 功能选项: \n");
printf(" 1 : 图书信息录入 \n");
printf(" 2 : 图书信息浏览 \n");
printf(" 3 : 图书信息查询 \n");
printf(" 4 : 图书信息修改 \n");
printf(" 5 : 图书信息删除 \n");
printf(" 6 : 图书信息排序 \n");
printf(" 7 : 图书的购买 \n");
printf(" 0 : 退出系统 \n");
printf("################################################################################");
printf("\t请选择操作:");
scanf("%d", &choice1);
switch (choice1) /*菜单选择*/
{
case 1 :
input();
break;
case 2 :
show_bookinformation(list);
break ;
case 3 :
check_bookinformation (list);
break ;
case 4 :
modify_bookinformation (list);
break ;
case 5 :
delete_bookinformation(list);
break ;
case 6 :
reorder_bookinformation(list);
break;
case 7 :
buytotal(list);
break;
case 0 :
break ;
}
}while (choice1!=0);
printf("谢谢! 欢迎下次使用使用!\n");
}
/*打开文件函数*/
void open()
{
int i;
FILE *fp;
if((fp=fopen("book.txt","rb"))==NULL)
{
printf("无法操作,无文件信息!!!\n");
exit(0);
}
for(i=0;i<N;i++)
{
if(fread(&list[i],sizeof(struct book),1,fp)==0)
{
printf("数据输出失败!!!\n");
exit(0);
}
}
fclose(fp);
}
/*录入文件函数*/
void read()
{
int i;
FILE *fp;
if((fp=fopen("book.txt","wr"))==NULL)
{
printf("\n不能打开文件!!!\n");
exit(0);
}
for(i=0;i<N;i++)
if(fwrite(&list[i],sizeof(struct book),1,fp)!=1)
printf("文件写入错误!!!\n");
fclose(fp);
}
/*录入函数*/
void input()
{
int i,k,j,t;
for(j=0;list[j].num!=0;j++)
t=j+1;
for(i=0;i<N;i++)
{
printf("\t请输入您的图书序号:");
scanf("\t%d",&list[i].num);
printf("\t请输入书名:");
scanf("\t%s",list[i].name);
printf("\t请输入作者:");
scanf("\t%s",list[i].author);
printf("\t请输入出版社:");
scanf("\t%s",list[i].publish);
printf("\t请输入价格:");
scanf("\t%f",&list[i].price);
fflush(stdin);
printf("\t\n是否继续录入?(1.是 2.否)");
scanf("%d",&k);
if(k==2) break;
}
Count=i+1;
read();
}
/*删除函数*/
void delete_bookinformation (struct book list[])
{
int j,k,d,i=0;
open();
printf("请输入要删除的图书的序号:\n");
scanf("%d",&d);
for(j=0;list[j].num!=0;j++)
{
if(list[j].num==d)
{
for(k=j;list[k].num!=0;k++)
list[k]=list[k+1];
i++;
}
}
if(i==0)
printf("图书销售系统没有你输入的图书序号,请重新选择输入!!!\n");
else
Count=Count-1;
read();
printf("删除成功\n");
}
/*修改函数*/
void modify_bookinformation (struct book list[])
{
int j,k=0,number;
open();
printf("\t请输入您要修改的图书的序号:");
scanf("%d",&number);
for (j=0;list[j].num!=0;j++)
if (list[j].num==number)
{
printf("\n\t请输入您修改后的图书信息!\n\n");
printf("\t请输入您要修改的图书的序号:");
scanf("%d",&list[j].num);
printf("\t请输入您修改后的书名:");
scanf("%s",list[j].name);
printf("\t请输入您修改后的作者名:");
scanf("%s",list[j].author);
printf("\t请输入您修改后的出版社:");
scanf("%s",list[j].publish);
printf("\t请输入您修改后的书的价格:");
scanf("%f",&list[j].price);
read();
printf("\n修改成功!\n");
k++;
}
if (k==0)
printf("\n\n\t找不到需要修改的图书!!");
}
/*输出函数*/
void show_bookinformation(struct book list[])
{
int i;
open();
printf("\n******************************图书信息显示*******************************\n");
printf("图书序号\t图书名\t\t作者名\t\t出版社\t\t图书价格\n");
for(i=0;list[i].num!=0;i++)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[i].num,list[i].name, list[i].author,list[i].publish,list[i].price);
}
}
/*查询函数*/
void check_bookinformation (struct book list[]) /*查询图书信息*/
{
int j,i,t,k=0;
char c[20],d[20];
printf("请输入查询方式:\n 1.按书名查询 2按作者查询:\n");
scanf("%d",&t);
if(t==1)
{
open();
printf("请输入要查询的书名号:\n");
scanf("%s",c);
printf("\n **********************你想要查询的图书信息(按作者名)********************** \n");
printf("图书序号\t图书名\t\t作者名\t\t出版社\t\t图书价格\n");
for(j=0;list[j].num!=0;j++)
if(strcmp(c,list[j].name)==0)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[j].num,list[j].name, list[j].author,list[j].publish,list[j].price);
k++;
}
if(k==0)
printf("\n不存在你要查询的图书信息!!!\n");
}
if(t==2)
{
open();
printf("请输入要查询的作者名:\n");
scanf("%s",d);
printf("图书序号\t图书名\t\t作者名\t\t出版社\t\t图书价格\n");
for(i=0;list[i].num!=0;i++)
if(strcmp(d,list[i].author)==0)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[i].num,list[i].name, list[i].author,list[i].publish,list[i].price);
k++;
}
if(k==0)
printf("\n不存在你要查询的图书信息!!!\n");
}
}
/*排序函数*/
void reorder_bookinformation(struct book list[])
{
int i,j,a,k;
struct book t;
FILE *fp;
char temp[40];
open();
printf("\n请选择排序方式\n1---书名(按字母顺序)\n2---价格(按从高到低)\n");
scanf("%d",&a);
switch(a)
{
case 1:
for(i=0;i<Count-1;i++)
{k=i;
for(j=i+1;j<Count;j++)
if(strcmp(list[k].name,list[j].name)>0) k=j;
if(k!=i)
{ strcpy(temp,list[i].name);
strcpy(list[i].name,list[k].name);
strcpy(list[k].name,temp);
}
}
if((fp=fopen("book.txt","w"))==NULL)
{
printf("can't open the file!\n");
exit(0);
}
printf("新序列为:\n");
printf("图书序号\t图书名\t\t作者名\t\t出版社\t\t图书价格\n");
for(j=0;j<Count;j++)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[j].num,list[j].name, list[j].author,list[j].publish,list[j].price);
}
read();
break;
case 2:
for(k=0;list[k].num!=0;k++)
for(j=0;list[j].num!=0;j++)
if(list[j].price<list[j+1].price)
{t=list[j];list[j]=list[j+1];list[j+1]=t;}
printf("图书序号\t图书名\t\t作者名\t\t出版社\t\t图书价格\n");
for(j=0;list[j].num!=0;j++)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[j].num,list[j].name, list[j].author,list[j].publish,list[j].price);
k++;
}
read();
break;
}
}
/*购书清单*/
void buytotal(struct book list[])
{
int k,m,n,q,r,t=0;
float sum=0;
char e[50],f[50],l[50],o[50],p[50];
printf("\n ***************************************************\n");
printf("\n 人民邮电出版社样书清单 \n");
printf("\n ***************************************************\n");
printf(" 请输入所购各图书的序号(输入0 结束):\n");
scanf("%d",&q);
do
{
for(r=0;r<N;r++)
{
if(q==list[r].num)
{
sum=sum+list[r].price;
t++;
}
}
scanf("%d",&q);
} while(q!=0);
printf(" 合计发书:%d\n",t);
printf(" 收书单位:");
scanf("%s",e);
printf(" 发书依据:");
scanf("%s",f);
printf(" 价格:%.2f\n",sum);
printf(" 邮政编码:");
scanf("%d",&k);
printf(" 收货地址:");
scanf("%s",l);
printf(" 联系电话:");
scanf("%d",&m);
printf(" 制单日期:");
scanf("%d",&n);
printf(" 货运公司:");
scanf("%s",o);
printf(" 验书人:");
scanf("%s",p);
}
这个给你参考,不知行不行,行的话,分给我吧