当前位置:文档之家› 图书管理系统C语言实现代码

图书管理系统C语言实现代码

/*随代码必须新建一下文件:jieshujilu.txt shuku.txt tempbook.txt tempshuku.txt */

#include
#include

struct book{
char bookname[20]; //书名
int NO; //书编号
char type[20]; //类型
int date; //到书日期
};
struct person{
char name[10]; //姓名
char classes[20]; //班级
int number; //学号
char telephone[12]; //联系电话
int NO; //书编号
char bookname[20]; //书名
int borrowdate; //借书日期
int returndate; //还书日期

};

void new_book() //*******登记新书*******
{
FILE *fp;
struct book b;
int i,j;
if((fp=fopen("shuku.txt","a"))==NULL){
printf("File open error!\n");
exit(0);
}

printf("请输入此次收到的书本总数:");
scanf("%d",&i);
for(j=0;jprintf("请输入书名:");
scanf("%s",b.bookname);
fprintf(fp,"%s",b.bookname);
printf("请输入书编号:");
scanf("%d",&b.NO);
fprintf(fp," %d",b.NO);
printf("请输入类型:");
scanf("%s",b.type);
fprintf(fp," %s",b.type);
printf("请输入到书日期:");
scanf("%d",&b.date);
fprintf(fp," %d",b.date);
}

if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
}

void new_person() //*******登记借书*******
{
FILE *fp;
struct person p;
char choice;
if((fp=fopen("jieshujilu.txt","a"))==NULL){
printf("File open error!\n");
exit(0);
}

printf("请输入借书人姓名:");
scanf("%s",https://www.doczj.com/doc/cd8137929.html,);
fprintf(fp,"%s",https://www.doczj.com/doc/cd8137929.html,);
printf("请输入借书人班级:");
scanf("%s",p.classes);
fprintf(fp," %s",p.classes);
printf("请输入借书人学号:");
scanf("%d",&p.number);
fprintf(fp," %d",p.number);
printf("请输入借书人联系电话:");
scanf("%s",p.telephone);
fprintf(fp," %s",p.telephone);
printf("请输入书编号:");
scanf("%d",&p.NO);
fprintf(fp," %d",p.NO);
printf("请输入书名:");
scanf("%s",p.bookname);
fprintf(fp," %s",p.bookname);
printf("请输入借书日期:");
scanf("%d",&p.borrowdate);
fprintf(fp," %d",p.borrowdate);
printf("请输入还书日期:");
scanf("%d",&p.returndate);
fprintf(fp," %d",p.returndate);

printf("\n\t您想继续吗?(y/n)");
scanf(" %c",&choice);
if(choice=='Y'||choice=='y'){
system("cls");
new_person();
}

if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
}

void see_book() //*******查看书库记录*******
{
FILE *fp;
long NO;
char bookname[20];
char type[20];
long date;
if((fp=fopen("shuku.txt","r"))==NULL){
printf("File open error!\n");
exit(0);
}

while(!feof(fp))
{
fscanf(fp,"%s%ld%s%ld",bookname,&NO,type,&date);
printf("%-10s %-10ld %-10s %ld\n",bookname,NO,type,date);

};

if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}


}

void see_person() //*****

**查看所有借书记录*******
{
FILE *fp;
char name[10];
char classes[20];
int number;
char telephone[20];
int NO;
char bookname[20];
int borrowdate;
int returndate;
if((fp=fopen("jieshujilu.txt","r"))==NULL){
printf("File open error!\n");
exit(0);
}

while(!feof(fp))
{
fscanf(fp,"%s %s %ld %s %ld %s %ld %ld",name,classes,&number,telephone,&NO,bookname,&borrowdate,&returndate);
printf("%-5s %-5s %ld %-5s %ld %-5s %ld %ld\n",name,classes,number,telephone,NO,bookname,borrowdate,returndate);
};

if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}

}

void search_person() //*******查找到期的借书记录*******
{
FILE *fp;
struct person p[50];
int i,j=0,k,l;
int date;
char a[50];
if((fp=fopen("jieshujilu.txt","r"))==NULL){
printf("File open error!\n");
exit(0);
}

printf("请输入还书日期的年月日:");
scanf("%d",&date);
while(!feof(fp)){
for(i=0;i<50;i++)
fscanf(fp,"%s %s %ld %s %ld %s %ld %ld",p[i].name,p[i].classes,&p[i].number,p[i].telephone,&p[i].NO,p[i].bookname,&p[i].borrowdate,&p[i].returndate);
}
for(i=0;i<50;i++){
if(date == p[i].returndate){
a[j]=i; //记录所有符合的下标号
j++;
}
}
if(j != 0){
printf("\n 姓名 班级 学号 联系电话 书编号 书名 借书日期 到书日期\n");
printf("----------------------------------------------------------------------\n");
printf("----------------------------------------------------------------------\n");
for(k=0;kl=a[k];
printf(" %-5s %-5s %ld %-5s %ld %5s %10ld %10ld\n",p[l].name,p[l].classes,p[l].number,p[l].telephone,p[l].NO,p[l].bookname,p[l].borrowdate,p[l].returndate);
printf(" ------------------------------------------------------------\n");
}
printf(" 以上为全部到期记录!\n");
}
else
printf("\n 该日无记录!\n");

if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
}

void delete_books() //*******删除旧书*******
{
FILE *fp;
struct book b;

int number;
void deletebooks();

printf("请输入您要删除的书编号:");
scanf("%d",&number);

if((fp=fopen("shuku.txt","r"))==NULL){
printf("不能打开此文件!\n");
exit(0);
}


while(!feof(fp)){
fscanf(fp,"%s %d %s %d",b.bookname,&b.NO,b.type,&b.date);
if(b.NO==number){
printf("\n\n\t***************图书信息*******************\n");
printf("\n\t图书书名:%25s",b.bookname);
printf("\n\t-----------------------------------------");
printf("\n\t图书编号:%25d",b.NO);
printf("\n\t-----------------------------------------");
printf("\n\t图书类型:%23s",b.type);
printf("\n\t-----------------------------------------");
printf("\n\t到书日期:%25d",b.date);
printf("\n\t-----------------------------------------");

deletebooks();


}
}
}

void deletebooks()
{
FILE *fp,*fp1,*fp2,*fp3;
int number;
struct book b;

printf("\n\n确认删除?请再次输入书编号:");
scanf("%d",&number);

if((fp=fopen("shuku.txt","r"))==NULL){
printf("不能打开此文件!\n");
exit(0);
}
if((fp1=fopen("tempshuku.txt","w"))==NULL){ //建立一个临时文件
printf("不能打开此文件!\n");
exit(0);
}

while(!feof(fp)){
fscanf(fp,"%s %d %s %d",b.bookname,&b.NO,b.type,&b.date);
if(b.NO==number)
continue;
else
fprintf(fp1,"%s %d %s %d",b.bookname,b.NO,b.type,b.date);
}

fclose(fp);
fclose(fp1);

if((fp2=fopen("tempshuku.txt","r"))==NULL){
printf("不能打开此文件!\n");
exit(0);
}
if((fp3=fopen("shuku.txt","w"))==NULL){ //清空书库
printf("不能打开此文件!\n");
exit(0);
}
while(!feof(fp2)){ //将临时文件的内容写人源文件
fscanf(fp2,"%s %d %s %d",b.bookname,&b.NO,b.type,&b.date);
fprintf(fp3,"%s %d %s %d",b.bookname,b.NO,b.type,b.date);

}

fclose(fp2);
fclose(fp3);

printf("\n 删除成功!\n");
}

void delete_returnbook() //*******删除借书记录*******
{
FILE *fp;
int numbers;
struct person p;
void deletereturnbook();
char choice;

printf("\n请输入所还书本的书编号:");
scanf("%d",&numbers);

if((fp=fopen("jieshujilu.txt","r"))==NULL){
printf("不能打开此文件!\n");
exit(0);
}

while(!feof(fp)){
fscanf(fp,"%s %s %ld %s %ld %s %ld %ld",https://www.doczj.com/doc/cd8137929.html,,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);
if(p.NO==numbers){
printf("\n\t***************图书信息*******************\n");
printf("\n\t借书人姓名:%20s",https://www.doczj.com/doc/cd8137929.html,);
printf("\n\t-----------------------------------------");
printf("\n\t借书人班级:%20s",p.classes);
printf("\n\t-----------------------------------------");
printf("\n\t借书人学号:%20d",p.number);
printf("\n\t-----------------------------------------");
printf("\n\t借书人联系电话:%20s",p.telephone);
printf("\n\t-----------------------------------------");
printf("\n\t图书编号:%24d",p.NO);
printf("\n\t-----------------------------------------");
printf("\n\t图书名称:%23s",p.bookname);
printf("\n\t-----------------------------------------");
printf("\n\t借书日期:%25d",p.borrowdate);
printf("\n\t-----------------------------------------");
printf("\n\t还书日期:%25d",p.returndate);
printf("\n\t-----------------------------------------");

deletereturnbook();

printf("\n\t您想继续吗?(y/n)");
scanf(" %c",&choice);
if(choice=='Y'||choice=='y'){
system("cls");
delete_returnbook();
}
}
}
fclose(fp);
}

void deletereturnbook()
{
FILE *fp,*fp1,*fp2,*fp3;
struct person p;
int numbers;

printf("\n\n确认删除?请再次输入书编号:");
scanf("%d",&numbers);


if((fp=fopen("jieshujilu.txt","r"))==NULL){
printf("不能打开此文件!\n");
exit(0);
}
if((fp1=fopen("tempbook.txt","w"))==NULL){
printf("不能打开此文件!\n");
exit(0);
}

while(!feof(fp)){
fscanf(fp,"%s %s %d %s %d %s %d %d",https://www.doczj.com/doc/cd8137929.html,,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);
if(p.NO==numbers)
continue;
else
fprintf(fp1,"%s %s %d %s %d %s %d %d",https://www.doczj.com/doc/cd8137929.html,,p.classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdate,p.returndate);
}

fclose(fp);
fclose(fp1);

if((fp2=fopen("tempbook.txt","r"))==NULL){
printf("不能打开此文件!\n");
exit(0);
}
if((fp3=fopen("jieshujilu.txt","w"))==NULL){
printf("不能打开此文件!\n");
exit(0);
}

while(!feof(fp2)){ //将临时文件写人源文件
fscanf(fp2,"%s %s %d %s %d %s %d %d",https://www.doczj.com/doc/cd8137929.html,,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);
fprintf(fp3,"%s %s %d %s %d %s %d %d",https://www.doczj.com/doc/cd8137929.html,,p.classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdate,p.returndate);
}

fclose(fp2);
fclose(fp3);

printf("\n 删除成功!\n");

}

int main(void)
{
int choice;
char choice2;
struct book;
struct person;

do{
printf("\n\n\n 图书馆管理系统\n\a");
printf(" ****************************************************\n");
printf(" 功能选项:登记-1,\n");
printf(" 查看/查询-2\n");
printf(" 删除-3\n");
printf(" 退出-0\n");
printf(" ***********************\n\n\n");
printf(" 请选择功能:");
scanf("%d",&choice);
switch(choice){
case 1:
printf(" 登记选项:新书登记-1,借书登记-2,返回-3\n");
printf("请选择:");
scanf("%d",&choice);
switch(choice){
case 1:
system("cls"); //清屏
printf("新书资料登记:\n\n");
new_book(); //新书登记
printf("登记完毕!\n");
printf("\n“任意键+回车”返回主菜单!");
scanf(" %c",&choice2);
system("cls");
break;
case 2:
system("cls");
printf("借书资料登记:\n\n");
new_person(); //借书登记
printf("\n“任意键+回车”返回主菜单!");
scanf(" %c",&choice2);
system("cls");
break;
case 3:
system("cls");
break;
}
break;
case 2:
printf(" 查看/查询选项:书库查看-1,总借书记录查看-2,到期记录查询-3,返回-4\n");
printf("请选择:");
scanf("%d",&choice);
switch(choice){
case 1:
system("cls");
printf("欢迎进入书库!\n\n");
printf("书名 书编号 类型 到书日期\n");
printf("------------------------------------------\n");
see_book(); //书库显示
printf("\n“任意键+回车”返

回主菜单!");
scanf(" %c",&choice2);
system("cls");
break;
case 2:
system("cls");
printf("欢迎进入借书记录!\n\n");
printf("姓名 班级 学号 联系电话 书编号 书名 借书日期 到书日期\n");
printf("--------------------------------------------------------\n");
see_person(); //借书记录显示
printf("\n“任意键+回车”返回主菜单!");
scanf(" %c",&choice2);
system("cls");
break;
case 3:
system("cls");
search_person(); //显示符合记录
printf("\n“任意键+回车”返回主菜单!");
scanf(" %c",&choice2);
system("cls");
break;
case 4:
system("cls");
break;
}
break;
case 3:
printf(" 删除选项:旧书删除-1,借书记录删除-2,返回-3\n");
printf("请选择:");
scanf("%d",&choice);
switch(choice){
case 1:
system("cls");
delete_books(); //删除ing
printf("\n“任意键+回车”返回主菜单!");
scanf(" %c",&choice2);
system("cls");
break;
case 2:
system("cls");
delete_returnbook(); //删除ing
printf("\n“任意键+回车”返回主菜单!");
scanf(" %c",&choice2);
system("cls");
break;
case 3:
system("cls");
break;
}
break;
case 0:
system("cls");
}
}while(choice != 0);

return 0;
}

相关主题
文本预览
相关文档 最新文档