标题:
C语言图书信息管理系统的程序源码
[打印本页]
作者:
1643438318
时间:
2018-11-6 11:19
标题:
C语言图书信息管理系统的程序源码
源码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define M 1000
void choice_1_input_new(); /*输入新进的图书信息*/
void choice_2_display_all(); /*显示全部图书信息*/
void choice_3_search_according_name(); /*根据图书名称显示图书的信息*/
void choice_4_delete_according_name(); /*根据图书名称对图书信息进行删除*/
void choice_9_sort_according_list(); /*根据图书库存排序*/
void choice_5_sort_according_name(); /*根据图书价格排序*/
void choice_6_display_high_price(); /*根据价格范围列出图书信息*/
void choice_7_display_according_exitflag(); /*根据存在状态列出图书信息*/
void choice_8_change_book(); /*修改图书信息*/
typedef struct bookinfo
{
char number[15]; /*产品编号*/
char name[30]; /*产品名称*/
char auther[30]; /*作者*/
char list[20]; /*类别*/
float price; /*单价*/
char boss[15]; /*出版社信息*/
char time[10]; /*出版时间*/
int isExit; /*库存存在状态*/
}BOOKINFO;
void choice_1_input_new() /*输入新进的图书信息*/
{
char choice;
FILE *p;
BOOKINFO newbook;
system("cls") ;
while(1)
{
printf("输入图书编号:");
scanf("%s",&newbook.number);
printf("输入图书名称:");
scanf("%s",&newbook.name);
printf("输入图书类别:");
scanf("%s",&newbook.list);
printf("输入图书单价:");
scanf("%f",&newbook.price);
printf("输入其出版社:");
scanf("%s",&newbook.boss);
printf("输入图书作者:");
scanf("%s",&newbook.auther);
printf("输入出版时间:");
scanf("%s",&newbook.time);
printf("输入需要添加的图书数目:");
scanf("%d",&newbook.isExit);
printf("是否保存该条数目?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
{
p=fopen("e:\\bookinfo.txt","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n该条书目已添加到e:\\bookinfo.txt 文件中!\n");
}
else
{
printf("\n该条书目未保存!\n");
}
printf("\n是否继续添加书目?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
void choice_2_display_all() /*显示全部图书信息*/
{
FILE *p;
int n;
BOOKINFO bookinfo[M];
int booknumber=0;
system("cls");
p=fopen("e:\\bookinfo.txt","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
n=0;
printf("图书信息如下:\n\n\n");
printf("\t\t\t\t 图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
n++;
}
}
printf("\n\n\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_3_search_according_name() /*根据图书名称显示图书的信息*/
{
char search[20];
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[M];
int booknumber=0;
system("cls");
p=fopen("e:\\bookinfo.txt","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
while(1)
{
printf("输入要查询的书本名称:");
scanf("%s",&search);
if(booknumber==0)
{
printf("\t\t\t 书库中没有任何信息!\n\n\n");
printf("\t\t\t 按任意键返回主菜单!");
getch();
break;
}
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
printf("\n\n\t\t\t该书的详细信息如下:\n\n\n");
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
break;
}
if(n>=booknumber)
printf("\n\n\t\t\t没有查到该书的任何信息!\n");
printf("\n\n是否继续查询?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
}
void choice_4_delete_according_name() /*根据图书名称对图书信息进行删除*/
{
char search[20];
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[M];
int booknumber;
system("cls");
while(1)
{
printf("输入要删除的书本名称:");
scanf("%s",&search);
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\t\t\t 书库中没有任何信息!\n\n\n");
printf("\t\t\t 按任意键返回主菜单!");
getch();
break;
}
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("\t\t\t 没有查到该书的任何信息!\n\n");
else
{
printf("是否确认需要删除该条书目?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
{
for(i=n;i<booknumber-1;i++)
bookinfo[i]=bookinfo[i+1];
booknumber--;
p=fopen("e:\\bookinfo.txt","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n\n\t\t\t\t 删除成功!\n");
}
else
printf("\n\n该条书目没有被删除!");
}
printf("\n\n是否继续进行删除操作?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
}
void choice_9_sort_according_list() /*根据图书库存排序*/
{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[M];
int booknumber;
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(bookinfo[m].isExit<bookinfo[n].isExit)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("e:\\bookinfo.txt","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
n=0;
printf("图书信息如下:\n\n");
printf("\t\t\t\t 图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
n++;
}
}
}
fclose(p);
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_5_sort_according_name() /*根据图书价格排序*/
{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[M];
int booknumber;
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(bookinfo[m].price>bookinfo[n].price)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("e:\\bookinfo.txt","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
n=0;
printf("图书信息如下:\n\n");
printf("\t\t\t\t 图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
n++;
}
}
}
fclose(p);
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_6_display_high_price() /*根据价格范围列出图书信息*/
{
float price;
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[M];
int booknumber;
system("cls");
printf("请输入价格:");
scanf("%f",&price);
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\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\n",price);
printf("\t\t\t\t图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
}
}
}
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_7_display_according_exitflag() /*根据存在状态列出图书信息*/
{
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[M];
int booknumber;
system("cls");
booknumber=0;
p=fopen("e:\\bookinfo.txt","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\n\n\n\t\t\t 书库中没有任何书目存在!\n\n");
}
else
{
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit!=0)
count++;
if(count==0)
printf("\n\n\n\t\t\t 书库中的书籍全部借出!\n\n");
else
{
printf("书库中的图书信息如下:\n\n");
printf("\t\t\t\t 图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit!=0)
{
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
}
}
}
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_8_change_book() /*修改图书信息*/
{
char search[20];
int n,i;
FILE *p;
char choice;
BOOKINFO newbook;
BOOKINFO bookinfo[M];
int booknumber;
system("cls");
while(1)
{
printf("注意!请谨慎修改,未完成修改的图书将被视为不合法操作!\a\n\n");
printf("输入要修改的书本名称:");
scanf("%s",&search);
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\t\t\t 书库中没有任何信息!\n\n");
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
break;
}
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("\n\n\n\t\t\t 没有查到该书的任何信息!\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("e:\\bookinfo.txt","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
{
printf("\n");
printf("输入图书编号:");
scanf("%s",newbook.number);
printf("输入图书名称:");
scanf("%s",newbook.name);
printf("输入图书类别:");
scanf("%s",newbook.list);
printf("输入图书单价:");
scanf("%f",newbook.price);
printf("输入其出版社:");
scanf("%s",newbook.boss);
printf("输入图书作者:");
scanf("%s",newbook.auther);
printf("输入出版时间:");
scanf("%s",newbook.time);
printf("\n\n是否保存该条书目信息?(Y/N): ");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
{
p=fopen("e:\\bookinfo.txt","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n该条书目已添加到 e:\\bookinfo.txt 文件中!\n\n");
}
else
{
printf("\n该条书目未保存!\n");
}
printf("\n\n是否继续修改书目?(Y/N): ");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
else
printf("\n\n该条书目没有被修改!");
}
printf("\n\n是否继续进行修改操作?(Y/N): ");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
}
void choice_() /*排序*/
{
int choice;
system("cls");
printf("1: 按价格排序 2:按图书库存排序\n");
printf("请输入您的选择:");
scanf("%d",&choice);
if(choice==1)
{
choice_5_sort_according_name(); /*根据图书价格排序*/
}
else if(choice==2)
{
choice_9_sort_according_list(); /*根据图书库存排序*/
}
else
{
printf("您输入的命令错误!请核对后再输入!\n\a");
}
}
int main()
{
system("color 3F");
system("title 许志强");
char choice;
int pass;
int i=3;
FILE *p;
if((p=fopen("e:\\bookinfo.txt","rb"))==NULL)
{
p=fopen("e:\\bookinfo.txt","wb");
fclose(p);
}
printf("\n\n\n\n\n");
printf("\t\t\t欢迎使用呼伦贝尔学院图书信息管理系统\n\n\n\n\n");
printf("\t\t\t 请输入您的学号(0~9): ");
while(pass!=123456)
{
scanf("%d",&pass);
if(pass!=123456)
printf("\t\t\t对不起!你输入的学号有误,您还有%d次机会......\n\a",--i);
if(i==0)
{
printf("\n\n\n");
printf("\t\t\t您的学号不存在!请联系图书馆管理员!\n\a");
exit(0);
}
}
if(pass==123456)
{
printf("\n\n\n\n");
printf("\t\t\t 学号输入正确,进入系统中......\n\n\n");
Sleep(2600);
}
getchar();
system("cls");
printf("\n\n\n\n\n");
printf("\t\t\t欢迎进入呼伦贝尔学院图书信息管理系统\n\n\n\n\n");
printf("\t\t\t\t 按Enter进入系统\n\n");
time_t tim; //获取电脑时间
struct tm *at;
char now[80];
time(&tim);
at=localtime(&tim); //转为时间结构。
strftime(now,79,"\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t 星期%w\n\t\t\t\t\t\t\t\t %H:%M:%S\n\t\t\t\t\t\t\t\t %Y-%m-%d\n",at); //输出格式
printf(now);
getchar();
system("cls");
while(1)
{
system("cls");
system("color 3f");
printf("\n\n");
printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\t※ ※\n");
printf("\t※ 呼伦贝尔学院欢迎您\t\t ※\n");
printf("\t※ ※\n");
printf("\t※ 图书信息管理系统\t\t\t ※\n");
printf("\t※ ※\n");
printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\t\t\t * * * * * * * * * * *\n");
printf("\t\t\t * 1 输入图书信息 *\n");
printf("\t\t\t * 2 显示全部信息 *\n");
printf("\t\t\t * 3 根据名称查询 *\n");
printf("\t\t\t * 4 根据名称删除 *\n");
printf("\t\t\t * 5 图书进行排序 *\n");
printf("\t\t\t * 6 统计图书数量 *\n");
printf("\t\t\t * 7 图书状态信息 *\n");
printf("\t\t\t * 8 修改图书信息 *\n");
printf("\t\t\t * 9 退出图书系统 *\n");
printf("\t\t\t * * * * * * * * * * *\n\n");
printf("\t\t\t 请输入您的选择:");
scanf("%d",&choice);
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_(); break; /*排序*/
case 6: choice_6_display_high_price(); break; /*根据价格范围列出图书信息*/
case 7: choice_7_display_according_exitflag(); break; /*根据存在状态列出图书信息*/
case 8: choice_8_change_book(); break; /*修改图书信息*/
case 9: system("cls"); printf("\n\t\t\t * * * * * * * *\n");
printf("\t\t\t * *\n");
printf("\t\t\t * 谢谢使用! *\n");
printf("\t\t\t * *\n");
printf("\t\t\t * * * * * * * *\n");
printf("\n\n\t\t\t 按任意键退出!\n");exit(0);
break; /*退出*/
default : printf("输入错误\n"); break;
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define M 1000
void choice_1_input_new(); /*输入新进的图书信息*/
void choice_2_display_all(); /*显示全部图书信息*/
void choice_3_search_according_name(); /*根据图书名称显示图书的信息*/
void choice_4_delete_according_name(); /*根据图书名称对图书信息进行删除*/
void choice_9_sort_according_list(); /*根据图书库存排序*/
void choice_5_sort_according_name(); /*根据图书价格排序*/
void choice_6_display_high_price(); /*根据价格范围列出图书信息*/
void choice_7_display_according_exitflag(); /*根据存在状态列出图书信息*/
void choice_8_change_book(); /*修改图书信息*/
typedef struct bookinfo
{
char number[15]; /*产品编号*/
char name[30]; /*产品名称*/
char auther[30]; /*作者*/
char list[20]; /*类别*/
float price; /*单价*/
char boss[15]; /*出版社信息*/
char time[10]; /*出版时间*/
int isExit; /*库存存在状态*/
}BOOKINFO;
void choice_1_input_new() /*输入新进的图书信息*/
{
char choice;
FILE *p;
BOOKINFO newbook;
system("cls") ;
while(1)
{
printf("输入图书编号:");
scanf("%s",&newbook.number);
printf("输入图书名称:");
scanf("%s",&newbook.name);
printf("输入图书类别:");
scanf("%s",&newbook.list);
printf("输入图书单价:");
scanf("%f",&newbook.price);
printf("输入其出版社:");
scanf("%s",&newbook.boss);
printf("输入图书作者:");
scanf("%s",&newbook.auther);
printf("输入出版时间:");
scanf("%s",&newbook.time);
printf("输入需要添加的图书数目:");
scanf("%d",&newbook.isExit);
printf("是否保存该条数目?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
{
p=fopen("e:\\bookinfo.txt","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n该条书目已添加到e:\\bookinfo.txt 文件中!\n");
}
else
{
printf("\n该条书目未保存!\n");
}
printf("\n是否继续添加书目?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
void choice_2_display_all() /*显示全部图书信息*/
{
FILE *p;
int n;
BOOKINFO bookinfo[M];
int booknumber=0;
system("cls");
p=fopen("e:\\bookinfo.txt","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
n=0;
printf("图书信息如下:\n\n\n");
printf("\t\t\t\t 图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
n++;
}
}
printf("\n\n\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_3_search_according_name() /*根据图书名称显示图书的信息*/
{
char search[20];
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[M];
int booknumber=0;
system("cls");
p=fopen("e:\\bookinfo.txt","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
while(1)
{
printf("输入要查询的书本名称:");
scanf("%s",&search);
if(booknumber==0)
{
printf("\t\t\t 书库中没有任何信息!\n\n\n");
printf("\t\t\t 按任意键返回主菜单!");
getch();
break;
}
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
printf("\n\n\t\t\t该书的详细信息如下:\n\n\n");
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
break;
}
if(n>=booknumber)
printf("\n\n\t\t\t没有查到该书的任何信息!\n");
printf("\n\n是否继续查询?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
}
void choice_4_delete_according_name() /*根据图书名称对图书信息进行删除*/
{
char search[20];
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[M];
int booknumber;
system("cls");
while(1)
{
printf("输入要删除的书本名称:");
scanf("%s",&search);
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\t\t\t 书库中没有任何信息!\n\n\n");
printf("\t\t\t 按任意键返回主菜单!");
getch();
break;
}
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("\t\t\t 没有查到该书的任何信息!\n\n");
else
{
printf("是否确认需要删除该条书目?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
{
for(i=n;i<booknumber-1;i++)
bookinfo[i]=bookinfo[i+1];
booknumber--;
p=fopen("e:\\bookinfo.txt","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n\n\t\t\t\t 删除成功!\n");
}
else
printf("\n\n该条书目没有被删除!");
}
printf("\n\n是否继续进行删除操作?(Y/N):");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
}
void choice_9_sort_according_list() /*根据图书库存排序*/
{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[M];
int booknumber;
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(bookinfo[m].isExit<bookinfo[n].isExit)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("e:\\bookinfo.txt","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
n=0;
printf("图书信息如下:\n\n");
printf("\t\t\t\t 图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
n++;
}
}
}
fclose(p);
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_5_sort_according_name() /*根据图书价格排序*/
{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[M];
int booknumber;
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(bookinfo[m].price>bookinfo[n].price)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("e:\\bookinfo.txt","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\n\n");
}
else
{
n=0;
printf("图书信息如下:\n\n");
printf("\t\t\t\t 图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
n++;
}
}
}
fclose(p);
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_6_display_high_price() /*根据价格范围列出图书信息*/
{
float price;
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[M];
int booknumber;
system("cls");
printf("请输入价格:");
scanf("%f",&price);
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\n\n\t\t\t 没有任何图书信息!\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\n",price);
printf("\t\t\t\t图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
}
}
}
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_7_display_according_exitflag() /*根据存在状态列出图书信息*/
{
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[M];
int booknumber;
system("cls");
booknumber=0;
p=fopen("e:\\bookinfo.txt","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\n\n\n\t\t\t 书库中没有任何书目存在!\n\n");
}
else
{
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit!=0)
count++;
if(count==0)
printf("\n\n\n\t\t\t 书库中的书籍全部借出!\n\n");
else
{
printf("书库中的图书信息如下:\n\n");
printf("\t\t\t\t 图书信息\n\n\n");
printf("编号 名称 单价 作者 图书库存 出版社 出版时间 图书类别\n\n");
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit!=0)
{
printf("%-6s%-12s%-8.1f%s %-2d %s %s %s\n",bookinfo[n].number,bookinfo[n].name,
bookinfo[n].price,bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].boss,bookinfo[n].time,bookinfo[n].list);
}
}
}
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
}
void choice_8_change_book() /*修改图书信息*/
{
char search[20];
int n,i;
FILE *p;
char choice;
BOOKINFO newbook;
BOOKINFO bookinfo[M];
int booknumber;
system("cls");
while(1)
{
printf("注意!请谨慎修改,未完成修改的图书将被视为不合法操作!\a\n\n");
printf("输入要修改的书本名称:");
scanf("%s",&search);
p=fopen("e:\\bookinfo.txt","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("\t\t\t 书库中没有任何信息!\n\n");
printf("\n\t\t\t 按任意键返回主菜单!");
getch();
break;
}
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("\n\n\n\t\t\t 没有查到该书的任何信息!\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("e:\\bookinfo.txt","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
{
printf("\n");
printf("输入图书编号:");
scanf("%s",newbook.number);
printf("输入图书名称:");
scanf("%s",newbook.name);
printf("输入图书类别:");
scanf("%s",newbook.list);
printf("输入图书单价:");
scanf("%f",newbook.price);
printf("输入其出版社:");
scanf("%s",newbook.boss);
printf("输入图书作者:");
scanf("%s",newbook.auther);
printf("输入出版时间:");
scanf("%s",newbook.time);
printf("\n\n是否保存该条书目信息?(Y/N): ");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
{
p=fopen("e:\\bookinfo.txt","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n该条书目已添加到 e:\\bookinfo.txt 文件中!\n\n");
}
else
{
printf("\n该条书目未保存!\n");
}
printf("\n\n是否继续修改书目?(Y/N): ");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
else
printf("\n\n该条书目没有被修改!");
}
printf("\n\n是否继续进行修改操作?(Y/N): ");
choice=getchar();
while(choice != 'Y'&&choice != 'y'&&choice != 'N'&&choice != 'n')
choice=getchar();
if(choice == 'Y'||choice == 'y')
continue;
else
break;
}
}
}
void choice_() /*排序*/
{
int choice;
system("cls");
printf("1: 按价格排序 2:按图书库存排序\n");
printf("请输入您的选择:");
scanf("%d",&choice);
if(choice==1)
{
choice_5_sort_according_name(); /*根据图书价格排序*/
}
else if(choice==2)
{
choice_9_sort_according_list(); /*根据图书库存排序*/
}
else
{
printf("您输入的命令错误!请核对后再输入!\n\a");
}
}
int main()
{
system("color 3F");
system("title ***");
char choice;
int pass;
int i=3;
FILE *p;
if((p=fopen("e:\\bookinfo.txt","rb"))==NULL)
{
p=fopen("e:\\bookinfo.txt","wb");
fclose(p);
}
printf("\n\n\n\n\n");
printf("\t\t\t欢迎使用呼伦贝尔学院图书信息管理系统\n\n\n\n\n");
printf("\t\t\t 请输入您的学号(0~9): ");
while(pass!=123456)
{
scanf("%d",&pass);
if(pass!=123456)
printf("\t\t\t对不起!你输入的学号有误,您还有%d次机会......\n\a",--i);
if(i==0)
{
printf("\n\n\n");
printf("\t\t\t您的学号不存在!请联系图书馆管理员!\n\a");
exit(0);
}
}
if(pass==123456)
{
printf("\n\n\n\n");
printf("\t\t\t 学号输入正确,进入系统中......\n\n\n");
Sleep(2600);
}
getchar();
system("cls");
printf("\n\n\n\n\n");
printf("\t\t\t欢迎进入呼伦贝尔学院图书信息管理系统\n\n\n\n\n");
printf("\t\t\t\t 按Enter进入系统\n\n");
time_t tim; //获取电脑时间
struct tm *at;
char now[80];
time(&tim);
at=localtime(&tim); //转为时间结构。
strftime(now,79,"\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t 星期%w\n\t\t\t\t\t\t\t\t %H:%M:%S\n\t\t\t\t\t\t\t\t %Y-%m-%d\n",at); //输出格式
printf(now);
getchar();
system("cls");
while(1)
{
system("cls");
system("color 3f");
printf("\n\n");
printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\t※ ※\n");
printf("\t※ 呼伦贝尔学院欢迎您\t\t ※\n");
printf("\t※ ※\n");
printf("\t※ 图书信息管理系统\t\t\t ※\n");
printf("\t※ ※\n");
printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\t\t\t * * * * * * * * * * *\n");
printf("\t\t\t * 1 输入图书信息 *\n");
printf("\t\t\t * 2 显示全部信息 *\n");
printf("\t\t\t * 3 根据名称查询 *\n");
printf("\t\t\t * 4 根据名称删除 *\n");
printf("\t\t\t * 5 图书进行排序 *\n");
printf("\t\t\t * 6 统计图书数量 *\n");
printf("\t\t\t * 7 图书状态信息 *\n");
printf("\t\t\t * 8 修改图书信息 *\n");
printf("\t\t\t * 9 退出图书系统 *\n");
printf("\t\t\t * * * * * * * * * * *\n\n");
printf("\t\t\t 请输入您的选择:");
scanf("%d",&choice);
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_(); break; /*排序*/
case 6: choice_6_display_high_price(); break; /*根据价格范围列出图书信息*/
case 7: choice_7_display_according_exitflag(); break; /*根据存在状态列出图书信息*/
case 8: choice_8_change_book(); break; /*修改图书信息*/
case 9: system("cls"); printf("\n\t\t\t * * * * * * * *\n");
printf("\t\t\t * *\n");
printf("\t\t\t * 谢谢使用! *\n");
printf("\t\t\t * *\n");
printf("\t\t\t * * * * * * * *\n");
printf("\n\n\t\t\t 按任意键退出!\n");exit(0);
break; /*退出*/
default : printf("输入错误\n"); break;
}
}
return 0;
}
复制代码
作者:
51单片机1234
时间:
2019-1-21 13:54
谢谢楼主的分享,学习了
作者:
tieq1952
时间:
2024-11-13 07:06
没有在此范围声明getch()等错误很多,在Dev-c++上不能运行。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1