C语言图书管理系统

设计要求

1、任意选定以下一个题目完成

2、模块化程序设计

3、锯齿型程序书写格式

4、必须上机调试通过

设计报告格式:

1、设计题目

2、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)

3、源程序清单和执行结果:清单中应有足够的注释

图书信息管理系统设计

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

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

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

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

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

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

5、从文件中删除指定图书号的图书信息;
谢谢各位大侠了,是我的考试题目,跪谢了啊

第1个回答  2010-05-30
#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);
}
第2个回答  2010-06-09
#include <stdio.h>

#include <string.h>

char menu()

{

char c[1];

printf("--------------------------------------------------------------\n");

printf ("1 Input the book's information.\n");

printf ("2 Input the book's number,display it's information.\n");

printf ("3 Give a key word,display\n");

printf ("4 Give the press\n");

printf ("5 Inquire the book according to the name and author\n");

printf ("6 Delete a book information\n");

printf ("7 Offer some informatiao\n");

printf ("8 exit\n");

printf("--------------------------------------------------------------\n\n");

printf (" please choose a number:");

scanf("%s",&c);

return *c;

}

struct book

{

char num[10];

char name[20];

char author[10];

char publish[10];

char time[10];

char kind[5];

char information[10];

};

struct book bo[3];

void c1()

{

int e;

e=0;

while(e<=2)

{

printf("Please input the number:");

scanf("%s",bo[e].num);

printf("Please input the name:");

scanf("%s",bo[e].name);

printf("Please input the author:");

scanf("%s",bo[e].author);

printf("Please input the publish:");

scanf("%s",bo[e].publish);

printf("Please input the publish time:");

scanf("%s",bo[e].time);

printf("Please input the kind,a or b:");

scanf("%s",bo[e].kind);

printf("Please input the information");

scanf("%s",bo[e].information);

printf("\nnum:%s\n",bo[e].num);

printf("name:%s\n",bo[e].name);

printf("author:%s\n",bo[e].author);

printf("publish:%s\n",bo[e].publish);

printf("time:%s\n",bo[e].time);

printf("kind:%s\n",bo[e].kind);

printf("information:%s\n",bo[e].information);

e++;

}

}

void c2()

{

char getnum[20];

int i;

printf("\nPlease input book ID");

scanf("%s",&getnum);

for(i=0;i<=2;i++)

{

if(strcmp(getnum,bo[i].num)==0)

{

printf("\nnum:%s\n",&bo[i].num);

printf("name:%s\n",&bo[i].name);

printf("author:%s\n",&bo[i].author);

printf("publish:%s\n",&bo[i].publish);

printf("time:%s\n",&bo[i].time);

printf("kind:%s\n",&bo[i].kind);

printf("information:%s\n",&bo[i].information);

break;

}

}

}

void c3()

{

int x;

char y[20];

int rtncode;

printf("\nPlease input the key word:");

scanf("%s",&y);

for(x=0;x<=2;x++);

{

rtncode = strpbrk(y,bo[x].name);

printf("check is :%d",rtncode);

if(rtncode > 0 )

{

printf("\nnum:%s\n",bo[x].num);

printf("name:%s\n",bo[x].name);

printf("author:%s\n",bo[x].author);

printf("publish:%s\n",bo[x].publish);

printf("time:%s\n",bo[x].time);

printf("kind:%s\n",bo[x].kind);

printf("information:%s\n",bo[x].information);

}

}

}

void c4()

{

char getpublish[20];

int m;

printf("\nPlease input the publish");

scanf("%s",&getpublish);

for(m=0;m<=2;m++)

{

if(strcmp(getpublish,bo[m].publish)==0)

{

printf("\nnum:%s\n",&bo[m].num);

printf("name:%s\n",&bo[m].name);

printf("author:%s\n",&bo[m].author);

printf("publish:%s\n",&bo[m].publish);

printf("time:%s\n",&bo[m].time);

printf("kind:%s\n",&bo[m].kind);

printf("information:%s\n",&bo[m].information);

break;

}

}

}

void c5()

{

char getx[20];

int l;

printf("\nPlease input book name or author");

scanf("%s",&getx);

for( l=0 ; l<=2 ; l++ )

{

if(strcmp(getx,bo[l].name)==0)

{

printf("\nnum:%s\n",&bo[l].num);

printf("name:%s\n",&bo[l].name);

printf("author:%s\n",&bo[l].author);

printf("publish:%s\n",&bo[l].publish);

printf("time:%s\n",&bo[l].time);

printf("kind:%s\n",&bo[l].kind);

printf("information:%s\n",&bo[l].information);

break;

}

else if(strcmp(getx,bo[l].author)==0)

{

printf("\nnum:%s\n",&bo[l].num);

printf("%name:%s\n",&bo[l].name);

printf("%author:%s\n",&bo[l].author);

printf("%publish:%s\n",&bo[l].publish);

printf("time:%s\n",&bo[l].time);

printf("kind:%s\n",&bo[l].kind);

printf("%information:%s\n",&bo[l].information);

break;

}

}

}

void c6()

{

int n;

printf("/nPlease input the num which you want to delete:");

scanf("%d",&n);

strcpy(bo[n].num,"0");

strcpy(bo[n].name,"0");

strcpy(bo[n].author,"0");

strcpy(bo[n].publish,"0");

strcpy(bo[n].time,"0");

strcpy(bo[n].kind,"0");

strcpy(bo[n].information,"0");

}

void c7()

{

int c,d,e;

d=0;

e=0;

for ( c=0 ; c<=2 ; c++)

{

if(strcmp("a",bo[c].kind)==0)

d++;

else if(strcmp("b",bo[c].kind)==0)

e++;

}

printf("The number of kind a:%d",d);

printf("The number of kind b:%d",e);

}

main()

{ char d;

do

{

d=menu();

if(d=='8')break;

switch (d)

{

case '1':c1();break;

case '2':c2();break;

case '3':c3();break;

case '4':c4();break;

case '5':c5();break;

case '6':c6();break;

case '7':c7();break;

default:printf("error\n");

}

}while(1);

}

自己在改改。我给 你在网上复制的本回答被网友采纳
相似回答