C语言程序设计
1. 设计要求基本功能:
图书管理
读者管理
借书管理
还书管理
查询与统计
拓展功能:
图书管理、读者管理、借书管理及还书管理中的删除、修改功能。
创新(自拟)功能:
程序实现的其它功能由个人自拟。
2. 设计要求具体说明
图书管理主要为添加图书,如图书一些基本信息输入。
读者管理主要为添加读者(即借书证),如读者一些基本信息输入。
借书管理包括借书时需输入借书日期、书号和借书证号。
还书管理包括还书时需输入还书日期、书号和借书证号。
以上这些信息均需写入文件,文件可以分成四个图书文件、读者文件、借书文件及还书文件。
图书查询:当输入书号,列出该图书的一些基本信息及该图书所借的读者。
读者查询:当输入借书证号、开始日期、结束日期,统计出该张借书证号在某一时期所借阅的图书情况等等。
统计图书书籍总数、已借出数据总数、在库书籍数等。
统计图书书籍总金额、书籍的平均价格。
拓展功能:
a) 进行图书信息修改、图书删除,但是当该图书有在借时,不能删除。
b) 读者信息修改、删除读者,但当是读者有图书在借时,不能删除。
c) 找出借阅次数最多的10本书,并对它们进行排序。
d) 统计借阅书籍最多的前5名读者。
帮忙写下~~谢谢~~
答案:我这个是图书管理系统的C预言源程序#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#define STACK_INIT_SIZE 10
#define OK 1
#define TRUE 1
#define ERROR 0
/*定义学生类型,用于存放借出的书籍*/
struct student {
int booknum;
}student[1000];
/*定义书的类型*/
struct book
{
int booknum;
char bookname[20];
char bookcreat[20];
int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/
}book[1000];
/*借书卡的数据类型*/
struct book1
{
int booknum;
char bookname[20];
char bookcreat[20];
}book1[1000];
//////////////////////////////////查询图书信息模块//////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
//////(1)按书名查找
findbook()
{
FILE *fp;
char bookname[10];
int i;
fp=fopen("book.txt","r");
printf("请输入你要查找的书名:\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf(" 书号 书名 作者 \n %d %s %s \n",book[i].booknum,book[i].bookname,book[i].bookcreat);
printf("此书现在无人借阅\n按任意键返回\n"); }
else {printf("这本书已经有人借出\n");fclose(fp);return 0;}
fclose(fp);
return 0;
}
}
printf("没有你要查询的书籍!\n");
fclose(fp);
return 0;
}
//////////(2)按作者查找
findbook1()
{
FILE *fp;
char bookcreat[10];
int i;
fp=fopen("book.txt","r");
printf("请输入你要查找的作者名:\n");
scanf("%s",bookcreat);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf(" 书号 书名 作者 \n %d %s %s \n",book[i].booknum,book[i].bookname,book[i].bookcreat);
printf("此书现在无人借阅\n按任意键返回\n");
}
else {printf("这本书已经有人借出!\n");
fclose(fp);
return 0;
}
fclose(fp);
return 0;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
return 0;
}
chabook()/////查找图书主模块
{
char ch5;
do
{ printf(" \n");printf(" \n");printf(" \n");
printf("**********欢迎进入图书查询系统**********\n");
printf(" \n");
printf(" 1: 按书名查找 \n");
printf(" \n");
printf(" 2: 按作者查找 \n");
printf(" \n");
printf(" 0: 返回 \n");
printf(" \n");
printf("请输入0━2:\n");
printf(" \n");
ch5=getch();
switch(ch5)
{
case '1':findbook();getch();break;
case '2':findbook1();getch();break;
case '0':break;
default:printf("无此操作!\n");getch();break;
}
}while(ch5!='0');
return 0;
}
//////////////////////////////////图书管理模块/////
//////////(1).增加图书
addbook()
{
FILE *fp;
int i=0;
fp=fopen("book.txt","a+");
printf("书号:\n");
scanf("%d",&book[i].booknum);
printf("书名:\n");
scanf("%s",book[i].bookname);
printf("作者:\n");
scanf("%d",&book[i].bookcreat);
fwrite(&book[i],sizeof(struct book),1,fp);
fclose(fp);
printf("输入完毕,任意键返回...\n");
getch();
}
//////////(2).删除图书
delbook()
{
FILE *fp,*fp2;
int i;
int booknum;
char choice;
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("要删除的卡号(不存在则不作改动):\n");
scanf("%d",&booknum);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(book[i].booknum!=booknum)
{
fwrite(&book[i],sizeof(struct book),1,fp2);
}
}
fclose(fp);
fclose(fp2);
system("color e");
printf("确认删除?(Y/N)!\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("操作成功!\n按任意键返回...\n");
getch();
return 0;
}
else
{
printf("操作已取消!\n按任意键返回...\n");
getch();
return 0;
}
}
////////////////////////////////////////////////////////
/////////////////图书管理模块///////////////////////////
//////////(1).增加图书信息
addbook2()
{
FILE *fp;
int i=0;
char choice='y';
fp=fopen("book.txt","a+");
while(choice=='y'||choice=='Y')
{ system("color e");
printf("书号:\n");
scanf("%d",&book[i].booknum);
printf("书名:\n");
scanf("%s",book[i].bookname);
printf("作者:\n");
scanf("%s",book[i].bookcreat);
printf("请你设定书的状态(1在架/0不在):\n");
scanf("%d",&book[i].turefalse);
fwrite(&book[i],sizeof(struct book),1,fp);
printf("是否要输入下本书(y/n)\n");
scanf("%s",&choice);
}
fclose(fp);
}
/////////////(2).删除图书信息
delbook3()
{
FILE *fp,*fp2;
int i;
char bookname[10],choice;
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("书名:\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)!=0)
{
fwrite(&book[i],sizeof(struct book),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("确认删除(y/n)?\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回...\n");
getch();
return 0;
}
else
{
printf("按任意键返回...\n");
getch();
return 0;
}
}
////////////(3).图书统计
bookcount()
{
FILE *fp;
int i,n=0;
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(book[i].booknum!=0&&strlen(book[i].bookname)!=0&&strlen(book[i].bookcreat)!=0)
{
printf("第%d本书\n序号 书名 作者 状态 \n",i+1);
printf(" %d %10s ",book[i].booknum,book[i]
上一个:什么叫做C语言和E语言?
下一个:C语言函数声明