C语言程序设计

题目四:图书信息管理系统设计

图书信息包括:图书号、书名、作者名、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:

1、图书信息录入功能(图书信息用文件保存)--输入;

2、图书信息浏览功能--从文件中读取图书信息并输出;

3、图书信息查询功能--从文件中按作者查询指定的图书信息;

4、从文件中读取图书信息,按价格排序输出;

5、从文件中删除指定图书号的图书信息;

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#define LL sizeof(BOOK_TYPE)

int maininterface();
void infor_input();
void refer();
void refer_1();
void refer_2();
void modify();
void delete();
void findbook();
void findbook1();
void findbook2();
void devise();

void main()
{
int a=0;
do
{
a=maininterface();
switch(a)
{
case 1:system("CLS");infor_input();break;
case 2:system("CLS");refer();break;
case 3:system("CLS");modify();break;
case 4:system("CLS");delete();break;
case 5:exit(0);
default:system("CLS");printf("\n\n\n\n\t\t\t无此操作,请按任意键返回:\n");getch();system("CLS");
}
}while(a!=6);
}

int maininterface()
{
int n;
printf("\n\n\n\t\t------------欢迎进入图书登记管理系统!-----------\n");
printf("\n\t\t\t\t1:<录入图书信息>\n");
printf("\n\t\t\t\t2:<查询信息>\n");
printf("\n\t\t\t\t3:<修改图书信息>\n");
printf("\n\t\t\t\t4:<删除图书信息>\n");
printf("\n\t\t\t\t5:<退出系统>\n");
printf("\n\t\t\t请输入1--5,其他输入非法!\n");
scanf("%d",&n);
return n;
}
typedef struct
{
int month;
int day;
int year;
}DATES;

DATES day;
typedef struct books
{
char bookname[50];
char ISBN[50];
char author[50];
char publisher[50];
float money;
DATES day;
int count;
struct books *next;
}BOOK_TYPE;
BOOK_TYPE ts;
struct books *head = NULL;
void infor_input()
{
FILE *fp;
int n=0;
BOOK_TYPE ts;
printf("---------------图书资料基本信息录入--------------\n");
do
{

printf("请输入书名\n");
scanf("%s",ts.bookname);
printf("请输入ISBN\n");
scanf("%s",ts.ISBN);
printf("请输入作者\n");
scanf("%s",ts.author);
printf("请输入出版社\n");
scanf("%s",ts.publisher);
printf("请输入定价\n");
scanf("%f",&ts.money);
printf("请输入出版日期\n");
scanf("%d/%d/%d",&ts.day.month,&ts.day.day,&ts.day.year);
printf("请输入数量\n");
scanf("%d",&ts.count);
printf("\n\t\t\t请选择(1:确定\t2:取消\t0:重新输入):");
scanf("%d",&n);
}while(n==0);
if(n==1)
{

if((fp=fopen("book.txt","a"))==NULL) /* 若"book.txt"文件不存在,则以创建方式打开文件 */
{
fp=fopen("book.txt","w+");
}
fwrite(&ts,LL,1,fp); /* 将输入的图书信息写入磁盘文件"book.txt" */
fclose(fp);
}
system("CLS");
printf("输入成功!\n");
printf("请选择(1:返回主界面\t2:输入另一本图书信息\t0:退出系统):\n");
scanf("%d",&n);
switch(n)
{
case 1:system("CLS");break;
case 2:system("CLS");infor_input();break;
case 0:break;
default:printf("无此操作,按任意键返回\n");getch();system("CLS");break;
}
}

void refer()
{
int n;
printf("1:<根据ISBN号,找出图书信息>\n");
printf("2:<根据出版社名称,找出所有图书信息>\n");
printf("3:<根据书名,找出图书信息>\n");
printf("4:<统计书籍总数>\n");
printf("5:<统计书籍总金额和平均价格>\n");
printf("0:<返回>\n");
printf("请输入0--5,其他输入非法!\n");
scanf("%d",&n);
switch(n)
{
case 1:system("CLS");findbook();break;
case 2:system("CLS");findbook1();break;
case 3:system("CLS");findbook2();break;
case 4:system("CLS");refer_1();break;
case 5:system("CLS");refer_2();break;
case 0:system("CLS");break;
default:printf("无此操作\n");break;
}
}
struct books *read_1()
{
FILE *fp;
struct books *p1,*p2,*head;

fp=fopen("book.txt","r");
head=p1=(BOOK_TYPE *)malloc(LL);

fread(p1,LL,1,fp);

while(feof(fp)==0)
{
p2=(BOOK_TYPE *)malloc(LL);

fread(p2,LL,1,fp);

p1->next=p2;
p1=p2;
}
p1->next=NULL;

fclose(fp);

return head;
}
void refer_1()
{
struct books *head,*p,*d;
struct books *read_1();
int total=0;
head=read_1();
for(p=head;p->next!=NULL;d=p,p=p->next,free(d))
{
total=total+p->count;

}

printf("书籍总数:%d\n",total);
printf("按任意键返回");getch();system("CLS");
}
void refer_2()
{
int num=0;
struct books *head,*p1,*p2;
struct books *read_1();
float total=0,average=0;
head=read_1();
for(p1=head;p1->next!=NULL;p2=p1,p1=p1->next,free(p2))
{
num=num+p1->count;
total=total+p1->money*p1->count;
}
average=total/num;
printf("书籍总金额:%.2f\n",total);
printf("书籍平均价格:%.2f\n",average);
printf("按任意键返回");getch();system("CLS");
}
void findbook()
{
FILE *fp;
char ISBN[50];
int i;
fp=fopen("book.txt","r");
printf("请输入书的ISBN号\n");
scanf("%s",ISBN);
for(i=0;fread(&ts,LL,1,fp)!=0;i++)
{
if(strcmp(ISBN,ts.ISBN)==0)
printf("这本书的详细资料为:%s %s %s %s %f %d/%d/%d %d\n按任意键返回\n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count);
}
printf("没有你所需要的书籍");
fclose(fp);
}
void findbook1()
{
FILE *fp;
char publisher[50];
int i;
fp=fopen("book.txt","r");
printf("请输入书的publisher\n");
scanf("%s",publisher);
for(i=0;fread(&ts,LL,1,fp)!=0;i++)
{
if(strcmp(publisher,ts.publisher)==0)
printf("这本书的详细资料为:%s %s %s %s %f %d/%d/%d %d\n按任意键返回\n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count);
}
printf("没有你所需要的书籍");
fclose(fp);
}
void findbook2()
{
FILE *fp;
char bookname[50];
int i;
fp=fopen("book.txt","r");
printf("请输入书的bookname\n");
scanf("%s",bookname);
for(i=0;fread(&ts,LL,1,fp)!=0;i++)
{
if(strcmp(bookname,ts.bookname)==0)
printf("这本书的详细资料为:%s %s %s %s %f %d/%d/%d %d\n按任意键返回\n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count);
}
printf("没有你所需要的书籍");
fclose(fp);
}
void delete()
{
struct books *p1, *p2;
char ISBN[50];
int e=0;
if(head == NULL)
{
printf("无书籍记录");
return;
}

printf("请输入您要删除的书籍的ISBN:\n");
scanf("%s",ISBN);

p1 = head;

while(ISBN != p1->ISBN && p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}
if(ISBN == p1->ISBN)
{
if(p1 == head)
head = p1->next;
else p2->next = p1->next;
free(p1);
e--;
}
else
printf("没有该书籍记录,请核对!\n");
}
void modify()
{
struct books *p1, *p2;
char ISBN[50];

if(head == NULL)
{
printf("无书籍记录!\n");
return;
}

printf("请输入您要修改的书籍的ISBN\n:");
scanf("%s",ISBN);

p1 = head;

while(ISBN != p1->ISBN && p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}
if(ISBN == p1->ISBN)
devise(p1);
else
printf("没有该学生记录,请核对!\n");

}

void devise(struct books *p)
{
int choice;
choice = -1;
do
{
printf("请选择您要修改的书籍的信息内容:\n");
printf("+----------------------+\n");
printf("| 书名 请按 1 |\n");
printf("| ISBN 请按 2 |\n");
printf("| 作者 请按 3 |\n");
printf("|出版社请按 4 |\n");
printf("| 定价 请按 5 |\n");
printf("| 出版日期 请按 6 |\n");
printf("| 数量 请按 7 |\n");
printf("| 取消 请按 0 |\n");
printf("+----------------------+\n");

printf("请输入您的选择:");
scanf("%d", &choice);

switch(choice)
{
case 0:
return;
case 1:
printf("请输入新书名 :");
scanf("%s", p->bookname);
break;
case 2:
printf("请输入新ISBN:");
scanf("%s", &p->ISBN);
break;
case 3:
printf("请输入新作者:");
scanf("%s", p->author);
break;
case 4:
printf("请输入新出版社:");
scanf("%s", p->publisher);
break;
case 5:
printf("请输入新定价:");
scanf("%d", p->money);
break;
case 6:
printf("请输入新出版日期 :");
scanf("%ld", &p->day.month,day.day,day.year);
break;
case 7:
printf("请输入新数量:");
scanf("%s", p->count);
break;
default:
printf("\n无效选项!");
break;
}
}
while(choice != 0);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-19
这么复杂一分都不给,谁帮你答呀,呵呵!!自己想去吧,用小沈阳的话:“你也太扣了”

c语言程序设计考什么
C语言程序设计考试通常会考察以下几个方面:基础知识掌握C语言的基础语法,涉及数据类型、变量声明、运算符、控制结构、数组、函数定义与调用、指针操作等。编程能力编写程序解决特定问题,体现对基础知识的应用。逻辑思维分析问题、设计解决方案、调试代码,如计算斐波那契数列、实现排序算法。数据结构与算法了解...

c语言程序设计流程图怎么画?具体有什么规范?
1. 流程图的基本构成:C语言程序设计流程图主要由以下几个元素构成:开始和结束符号、处理框、判断框、流程线等。开始和结束符号一般使用椭圆形表示,处理框表示程序执行的步骤,判断框则用来表示条件判断,流程线则用来连接各个步骤,指示程序的执行顺序。2. 绘制规范:清晰简洁:流程图应清晰简洁,每个步...

c语言程序设计和cad是一样吗
CAD和C语言程序设计在性质和应用上有着显著的区别。CAD是一种绘图工具,主要应用于制造设计领域,比如建筑、模具设计、交通工具设计等。这些领域需要精确的图形和模型,CAD能够帮助设计师高效地完成这些任务。而C语言则是一种编程语言,用于开发各种软件系统。它不仅能够编写CAD软件,还可以应用于操作系统、数...

c语言程序设计和高数哪个难
难者不会,会者不难,这是很多学习者的真实写照。对于C语言程序设计而言,关键在于动手实践和不断调试代码的过程,对于高等数学而言,则在于深入理解数学概念和公式推导的过程。每个人的学习能力和理解能力不同,因此,只要认真学习,无论是C语言程序设计还是高等数学,在大学里通过考试都不会有问题。在学...

书籍推荐-C语言书籍
推荐一本适合初学者的C语言书籍,《C语言程序设计》由谭浩强所著。这本书内容全面,深入浅出,适合入门学习。如果你有一定基础,可以尝试阅读《The C Programing Language》。这本书被公认为C语言的经典教材,深入探讨了C语言的原理和实践。它的中文版也值得一看。通过阅读这两本书,你可以掌握C语言的...

c语言程序设计学什么
c语言程序设计的学习内容如下:C语言程序基本结构及相关概念、变量、函数、语句、if条件语句、switch条件语句、for循环语句、while循环语句、数组、指针、字符串、结构体。C是强类型语言,有short、long、int、char、float、double等build-in数据类型,类型是贯穿c语言整个课程的核心概念。c语言程序设计的特点...

什么是C语言程序设计.
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统...

c语言程序设计是什么
C语言程序设计:基础与应用 C语言作为一种核心编程语言,其在软件开发和系统编程领域占据重要地位。它以简洁高效的特点,赋予开发者实现复杂功能的工具。C语言丰富的语法和内置库函数,使得编写和管理复杂代码变得更加直观和高效。C程序结构主要包括四个关键部分:首先是变量和数据类型,包括整数、浮点数和字符...

C语言程学设计目录
第1章 C语言程序设计概述 1.1 程序和程序设计语言 1.2 算法 1.3 结构化程序设计方法 1.4 C语言程序的基本结构 习题1 第2章 数据类型、运算符与表达式 2.1 C语言的数据类型 2.2 常量、变量与标识符 2.3 整型数据 2.4 实型数据 2.5 字符型数据 2.6 算术运算符和算术表达式 2.7 赋值...

C语言程学设计内容简介
具体章节内容包括:C语言程序设计基础、数据类型与运算符、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数、用户标识符的作用域与存储类、编译预处理、指针、结构体、共用体、用户定义类型以及位运算等。每章后均配有习题,以帮助读者巩固所学知识。为了辅助教学与自学,本书还附有一本...

相似回答
大家正在搜