资源描述
单 位: * 学 号: * *(计算机科学与技术)图书查询系统姓 名: * 专 业: 计* 指导教师: * 江西农业大学南昌商学院二一一年六月江西农大南昌商学院 摘要摘要本系统是使用c语言编写实现的图书管理与查询的一个简单系统。管理员可以通过管理员帐号登入系统,可以初始化图书信息,增加图书信息,修改图书信息,删除图书信息,浏览图书信息,增加会员信息,删除会员信息,浏览会员信息。该系统还有一个可以登录的对象就是会员。每个会员都会有自己独立的用户和密码这是管理员直接通过增加会员信息直接设定的,会员可以登入该系统查找要查找的图书信息。II江西农大南昌商学院 AbstractAbstractBooks is the use of c language inquiry system of the realization of the books management and inquires a simple system of. The administrator can through the administrator account login system, can initialize books information, increase the books information, modify the books information, delete the books information, browse books information, increase membership information, delete membership information, browse membership information. This system has a login can object is the member. Each member will have their own independent users and the password that is administrator directly through increase member information directly set, members can access the search to find the system of the library of information. 江西农大南昌商学院 目录目录前言 .1第一章 系统环境分析.2 1.1 C语言概述.2第二章 设计平台搭建.32.1VC+6.0的安装和配置. 3 第三章 需求分析. 4 3.1设计思想.43.2 系统功能描述.43.3功能模块划分 53.4系统流程图分析.6 第四章 详细设计与实现.74.1主界面设计.74.2管理员界面与头文件.94.3初始化图书信息.114.4增加图书信息.134.5修改图书信息.154.6删除图书信息.184.7浏览图书信息.214.8增加会员信息.234.9删除会员信息.254.10浏览会员信息274.11普通会员模块29参考文献32 江西农大南昌商学院 前言前言本系统是使用c语言编写实现的图书管理与查询的一个简单系统。管理员可以通过管理员帐号登入系统,可以初始化图书信息,增加图书信息,修改图书信息,删除图书信息,浏览图书信息,增加会员信息,删除会员信息,浏览会员信息。该系统还有一个可以登录的对象就是会员。每个会员都会有自己独立的用户和密码这是管理员直接通过增加会员信息直接设定的,会员可以登入该系统查找要查找的图书信息。2江西农大南昌商学院 第一章 系统环境分析第一章 系统环境分析1.1 C语言概述 C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于语言实现了对硬件的编程操作,因此语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的语言。C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 江西农大南昌商学院 第二章 设计平台搭建第二章 设计平台搭建2.1VC+6.0的安装和配置打开vc界面 点击VC“TOOLS(工具)”“Option(选择)” “Directories(目录)”重新设置“Excutable Fils、Include Files、 Library Files、Source Files”的路径。如果你是按照初始路径安装vc6.0的,路径应为: executatble files: C:Program FilesMicrosoft Visual StudioCommonMSDev98Bin C:Program FilesMicrosoft Visual StudioVC98BIN C:Program FilesMicrosoft Visual StudioCommonTOOLS C:Program FilesMicrosoft Visual StudioCommonTOOLSWINNT include files: C:Program FilesMicrosoft Visual StudioVC98INCLUDE C:Program FilesMicrosoft Visual StudioVC98MFCINCLUDE C:Program FilesMicrosoft Visual StudioVC98ATLINCLUDE library files: C:Program FilesMicrosoft Visual StudioVC98LIB C:Program FilesMicrosoft Visual StudioVC98MFCLIB source files: C:Program FilesMicrosoft Visual StudioVC98MFCSRC C:Program FilesMicrosoft Visual StudioVC98MFCINCLUDE C:Program FilesMicrosoft Visual StudioVC98ATLINCLUDE C:Program FilesMicrosoft Visual StudioVC98CRTSRC 31江西农大南昌商学院 第三章 需求分析 第三章 需求分析3.1设计思想 随着社会的发展,图书的数量和种类越来越多,人工手动管理会降低工作的效率,希望建立一个图书馆图书信息管理系统,是为了解决了人工手动管理图书信息在实践的问题,从而达到系统化、规范化、标准化的水平。该系统的建立不但给管理者带来了方便,也节省了工作时间从而提高了工作效率。但是开发系统必须首先明确该应用环境对系统的要求。图书查询系统的应用背景为:一个数十人的科研或开发小组,搜集了上千册有用的图书资料,其中有一部分分布在个人手中,为了方便大家查阅,需要对每本书的状态进行跟踪,因此,该系统需满足以下几方面需求:用户的管理。管理员的管理。图书管理。 3.2 系统功能描述查询功能:系统需要提供几种不同方式的查询手段,以实现灵活方便地管理整个系统。图书分类查询:一本图书包括序号、书名、价格、会员价等多个信息,会员可以通过输入图书的名字进行查询所需的图书,然后可以浏览相关的图书信息。管理员除此还可以对图书进行汇总管理。可以浏览所有的图书的信息。 3.3功能模块划分 1.新建图书信息initbooks.c存储图书信息的文件名是books(新建图书信息时文件读取方式采用wb+方式)采用scanf()输入方式输入每本图书的序号、名称、价格、会员价不要输入,要算出 会员价=价格*0.8f(会员价一律八折)2.增加图书信息addbooks.c这个程序只要把initbooks.c里的程序的文件读取方式改为ab+方式3.修改图书信息modifybooks.c修改的项目是每件图书的价格、会员价,序号、名称不变4.删除图书信息delbooks.c(输入图书名称删除这件图书的所有信息)5.按图书价格从高到低浏览图书信息showbooks.c6.增加会员信息addhuiyuan.c存储会员信息的文件名是huiyuan(增加会员信息时文件读取方式采用ab+方式)用scanf()输入方式输入每个会员的序号、名字、密码、权限(设为0) 7.删除会员信息delhuiyuan.c(输入会员的名字删除这个会员的所有信息)8.按姓名从大到小浏览会员的所有信息9.普通会员只有一个模块show.c用普通会员用户名和密码登录后,输入相应图书的名字,可查询出相应图书的信息图书查询系统3.4系统流程图分析 管理员浏览会员信息删除图书删除会员信息增加会员信息浏览所有图书信息修改图书信息增加图书信息初始化图书信息退出程序浏览所需图书信息普通会员江西农大南昌商学院 第四章 详细设计与实现第四章 详细设计与实现4.1主界面设计主界面代码:Login.c#include#include#include#include#include shead.c#include admin.c#include guest.cmain()FILE *fp;huiyuan tmps,show;int i,success=0,j=0;char datafile=huiyuan,relogin;printf(=n);printf( 欢 迎 您 进 入 图 书 管 理 系 统 n);printf(=n);again:printf(请输入您的名字:);scanf(%s,tmps.name);printf(请输入您的密码:);for(i=0;i=5;i+)tmps.psi=getch();tmps.ps6=0;fp=fopen(datafile,rb);if(fp=NULL)printf(文件%s打不开n,datafile);exit(1);while(fread(&show,sizeof(huiyuan),1,fp)!=0)if(strcmp(tmps.name,show.name)=0)&(strcmp(tmps.ps,show.ps)=0)printf(登录成功!n);success=1;if(show.power=1)printf(您是管理员n);admin();if(show.power=0)printf(您是普通会员n);guest();if(success=0)printf(n您输入的名字或密码有误,是否重新输入?(y/n);relogin=getche();if(relogin=y)|(relogin=Y)printf(请再次输入名字和密码n);goto again;elseprintf(程序结束n);exit(0);4.2管理员界面与头文件Admin.c#include initbooks.c#include addbooks.c#include modifybooks.c#include delbooks.c#include showbooks.c#include addhuiyuan.c#include delhuiyuan.c#include showhuiyuan.cvoid admin()int choice=0;while(1)printf(n=n);printf( 欢 迎 进 入 图 书 管 理 员 界 面 n);printf(=n);printf(=1.初始化图书信息=2.增加图书信息=n);printf(=3.修改图书信息=4.删除图书信息=n);printf(=5.按普通价格从高到低浏览图书信息=n);printf(=6.增加会员信息=n);printf(=7.删除会员信息=8.按名字浏览会员信息=n); printf(=0.程序结束=n);printf(请输入您的选择:);scanf(%d,&choice);switch(choice) case 1:initbooks(); break; case 2:addbooks(); break; case 3:modifybooks(); break; case 4:delbooks(); break; case 5:showbooks(); break; case 6:addhuiyuan(); break; case 7:delhuiyuan(); break; case 8:showhuiyuan(); break; case 0:exit(0); default:break;guest.c#include show.cvoid guest()int choice=0;while(1)printf(=n);printf( 欢 迎 进 入 图 书 浏 览 界 面 n);printf(=n);printf(=1.输入图书名浏览相应图书信息=n);printf(=0.浏览结束=n);printf(请输入您的选择:n);scanf(%d,&choice);switch(choice) case 1:show(); break; case 0:exit(0); default:break;head.c#define size 100typedef structlong number;/会员的序号char name9;/会员的名字char ps7;/会员的密码int power;/会员的权限huiyuan;typedef structlong number;/图书的序号char name100;/图书的名称float price;/图书的价格float memberprice;/图书的会员价books; 4.3初始化图书信息initbooks.cvoid initbooks()FILE *fp;books tmps,show;char datafile40=books;int count=0;fp=fopen(datafile,wb+);if(fp=NULL)printf(文件%s打不开n,datafile);exit(1);printf(请输入图书的序号、名称、价格n);while(countsize)printf(输入数据已满n);fclose(fp);printf(所输入图书信息如下:n);fp=fopen(datafile,rb);if(fp=NULL)printf(文件%s打不开n,datafile);exit(1);printf(序号t名称t价格t会员价n);while(fread(&show,sizeof(books),1,fp)!=0)printf(%ldt%st%.1ft%.1fn,show.number,show.name,show.price,show.memberprice);fclose(fp);4.4增加图书信息addbooks.cvoid addbooks()FILE *fp;books tmps,show;char datafile40=books;int count=0;fp=fopen(datafile,ab+);if(fp=NULL)printf(文件%s打不开n,datafile);exit(1);printf(请输入图书的序号、名称、价格n);while(countsize)printf(输入数据已满n);fclose(fp);printf(所输入图书信息如下:n);fp=fopen(datafile,rb);if(fp=NULL)printf(文件%s打不开n,datafile);exit(1);printf(序号t名称t价格t会员价n);while(fread(&show,sizeof(books),1,fp)!=0)printf(%ldt%st%.1ft%.1fn,show.number,show.name,show.price,show.memberprice);fclose(fp);4.5修改图书信息modifybooks.cvoid modifybooks()FILE *fp;books tmps,ssize,show,temp;char name9,next,datafile40=books;int recnumber,i,result=0;float price;begin:printf(请输入要修改图书价格、会员价的名称);scanf(%s,name);fp=fopen(datafile,rb);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);while(feof(fp)=0)if(fread(&temp,sizeof(books),1,fp)!=0)if(strcmp(temp.name,name)=0) result=1;if(result=0)printf(要修改的图书%s不存在n,name);fclose(fp); goto begin;fp=fopen(datafile,rb);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);recnumber=0;while(fread(&tmps,sizeof(books),1,fp)!=0)if(strcmp(tmps.name,name)=0)printf(请输入要修改图书%s的价格,name);scanf(%f,&price);srecnumber.number=tmps.number;strcpy(srecnumber.name,tmps.name); srecnumber.price=price;srecnumber.memberprice=price*0.8f;recnumber+;else srecnumber.number=tmps.number;strcpy(srecnumber.name,tmps.name); srecnumber.price=tmps.price;srecnumber.memberprice=tmps.price*0.8f;recnumber+;fclose(fp);fp=fopen(datafile,wb+);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);for(i=0;irecnumber;i+)if(fwrite(&si,sizeof(books),1,fp)!=1)printf(文件%s打不开n,datafile); exit(1); fclose(fp);printf(修改成功!n);printf(是否继续修改(y/n)n);next=getche();if(next=y|next=Y)goto begin;printf(所修改图书信息如下:n);fp=fopen(datafile,rb);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);printf(序号t名称t价格t会员价tn);while(fread(&show,sizeof(books),1,fp)!=0) printf(%ldt%st%.1ft%.1fn,show.number,show.name,show.price,show.memberprice);fclose(fp);4.6删除图书信息delbooks.cvoid delbooks()FILE *fp;books tmps,ssize,show,temp;char name10,next,datafile40=books;int recnumber,i,result=0;begin:printf(请输入要删除图书的名字);scanf(%s,name);fp=fopen(datafile,rb);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);while(feof(fp)=0)if(fread(&temp,sizeof(books),1,fp)!=0)if(strcmp(temp.name,name)=0) result=1;if(result=0)printf(要删除的图书%s不存在n,name);fclose(fp); goto begin;fclose(fp);fp=fopen(datafile,rb);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);recnumber=0;while(fread(&tmps,sizeof(books),1,fp)!=0)if(strcmp(tmps.name,name)!=0)srecnumber.number=tmps.number;strcpy(srecnumber.name,tmps.name);srecnumber.price=tmps.price;srecnumber.memberprice=tmps.price*0.8f;recnumber+;fclose(fp);fp=fopen(datafile,wb+);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);for(i=0;i1)for(i=0;irecnumber-1;i+)k=i;for(j=i+1;jrecnumber;j+)if(sk.pricesj.price)k=j;tmps.number=sk.number;strcpy(tmps.name,sk.name);tmps.price=sk.price; tmps.memberprice=sk.price*0.8f; sk.number=si.number;strcpy(sk.name,si.name); sk.price=si.price; sk.memberprice=si.price*0.8f;si.number=tmps.number;strcpy(si.name,tmps.name);si.price=tmps.price; si.memberprice=tmps.memberprice;fp=fopen(datafile,wb+);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);for(i=0;irecnumber;i+) if(fwrite(&si,sizeof(books),1,fp)!=1)printf(文件%s打不开n,datafile); exit(1);fclose(fp);printf(浏览图书信息如下:n);fp=fopen(datafile,rb);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1); printf(序号t名称t价格t会员价n);while(fread(&show,sizeof(books),1,fp)!=0)printf(%ldt%st%.1ft%.1fn,show.number,show.name,show.price,show.memberprice);fclose(fp);4.8增加会员信息addhuiyuan.cvoid addhuiyuan()FILE *fp;huiyuan tmps,show;char datafile40=huiyuan;int count=0;fp=fopen(datafile,ab+);if(fp=NULL)printf(文件%s打不开n,datafile);exit(1);printf(请输入会员的序号、名字、密码、权限n);while(countsize)printf(输入数据已满n);fclose(fp);printf(所输入图书信息如下:n);fp=fopen(datafile,rb);if(fp=NULL)printf(文件%s打不开n,datafile);exit(1);printf(序号t姓名t密码t权限n);while(fread(&show,sizeof(huiyuan),1,fp)!=0)printf(%ldt%st%st%dn,show.number,show.name,show.ps,show.power);fclose(fp);4.9删除会员信息delhuiyuan.cvoid delhuiyuan()FILE *fp;huiyuan tmps,ssize,show,temp;char name10,next,datafile40=huiyuan;int recnumber,i,result=0;begin:printf(请输入要删除会员信息的名字);scanf(%s,name);fp=fopen(datafile,rb);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);while(feof(fp)=0)if(fread(&temp,sizeof(huiyuan),1,fp)!=0)if(strcmp(temp.name,name)=0) result=1;if(result=0)printf(要删除的会员%s不存在n,name);fclose(fp); goto begin;fclose(fp);fp=fopen(datafile,rb);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);recnumber=0;while(fread(&tmps,sizeof(huiyuan),1,fp)!=0)if(strcmp(tmps.name,name)!=0)srecnumber.number=tmps.number;strcpy(srecnumber.name,tmps.name);strcpy(srecnumber.ps,tmps.ps);srecnumber.power=tmps.power;recnumber+;fclose(fp);fp=fopen(datafile,wb+);if(fp=NULL) printf(文件%s打不开n,datafile); exit(1);for(i=0;i1)for(i=0;irecnumber-1;i+)k=i;for(j=i+1;j0)k=j;tmps.number=sk.number;strcpy(tmps.name,sk.name);strcpy(tmps.ps,sk.ps);tmps.power=sk.power;sk.number=si.number;strcpy(sk.name,si.name);strcpy(sk.ps,si.ps);sk.power=si.power;si.number=tmps.number;strcpy(si.name,tmps.name);strcpy(si.ps,tmps.ps);si.power=tmps.power;fp=fopen(datafile,wb+);if(fp=
展开阅读全文