用c语言实现图书信息管理系统

图书信息管理系统

本文主要是用C语言有关内容实现图书信息管理系统,主要使用了文件、函数、指针、清屏等有关内容。图书信息则包括书名,ISBN码,出版社,价格,出版年月,图书数量,所属学科以及主编等。围绕以上内容设计了此系统,主要提供以下内容:
(1)用户注册账号,登陆系统。
(2) 添加图书信息。
(3)遍历图书。
(4)按ISBN号或书名查询图书。
(5)按ISBN号或所属学科查询图书。
(6)求全部图书的价值。

#include <stdio.h>
#include <stdlib.h>
#include<windows.h> 
#include <string.h>//定义字符数组
#include<conio.h>
#define N 20  //宏定义


//图书信息
struct book
{
	char num[N];    //ISBN号 
	char name[N];   //书名 
	char xue[N];    //所属学科 
    char zhubian[N];//主编 
	double price;   //价格 
    char she[N];    //出版社 
    char yue[N];    //出版年月 
    int n;          //数量 
    struct book *p; //结构指针
};
struct book su; //结构体变量

void cal (int sel); //功能 
void tsmenu();      //添加图书信息
void jmenu();       //遍历
void lmenu();       //按ISBN号查询 
void main1();       //按书名查询 
void tsmain();      //按ISBN号(学科)删除图书  
void zjts();        //求全部图书的价值  
void jmain();       //用户登录
void xinjian();     //用户注册 
void zxc();         //主目录 
int condition=0;    //登录状态
int main()
{

int n;
while(condition==0)
{ 
          printf("*******欢迎登录图书信息管理系统*******\n");
          printf("********    1.注册  2.登录    ********\n");//登陆界面
          printf("********      请输入序号:    ********\n");
        scanf("%d",&n);
   if(n==1)
      xinjian();
   else if(n==2)
      jmain();
   else{
 	system("cls");
           printf("*******  输入错误,请重新输入 ********\n");
  }
}
 return 0;
}



//主目录
void zxc()
{
	system("cls");
    int sel;
        printf("********欢迎登录图书信息管理系统********");
        printf("\n******      1.添加图书信息     *****\n");
        printf("\n******          2.遍历        ******\n");
        printf("\n ******    3.按ISBN号查询     ******\n");
        printf("\n ******     4.按书名查询     ****** \n");//系统主界面
        printf("\n****5.按ISBN号(所属学科)删除图书****\n");
        printf("\n ******   6.求全部图书的价值  ******\n");
        printf("\n ******        7.退出         ******\n");
        printf("\n******        请选择:        ******\n"); 
         scanf("%d",&sel);
if(sel<1||sel>8){
        printf("***  你输入的序号有误,请重新输入  ***\n") ; 
		zxc();
		}
else 
	cal(sel);
}

void cal(int sel)
{
switch(sel){
	case 1:
		tsmenu();
		break;
	case 2:
		jmenu();
		break;
	case 3:
		lmenu();
		break;
	case 4:
		main1();
		break;
	case 5:
		tsmain();
		break;
	case 6:
		zjts();
		break;
	case 7:
		condition=0;
		break;
}
}


//用户注册 
void xinjian()
{		
	FILE *fp;//文件指针
	char  zhanghao[N];
	char password[N],password1[N];
	if ((fp=fopen("C:\\Users\\某某\\Desktop\\实践作业\\账号密码.txt","a"))==NULL)
	{
      printf("file open error!\n");
      exit(0);
    }
	for(;;)
	{
	   printf("\n*请输入账号(九位数)密码(六位数)(注册)*\n");
	   printf("******          请输入:           ******\n");
	   scanf("%s %s",zhanghao,password);
	   system("pause");
	   system("cls");
       printf("******       再次输入密码:       ******\n");
	   	   scanf("%s",password1);
	   if(strcmp(password,password1)==0)
	   {
	   	system("cls");
	   		printf("******       创建成功       ******\n");
	       fprintf(fp,"%s %s\n",zhanghao,password);
	       fclose(fp);
		   jmain();
		   
       }
       else
	   {
	   	 system("pause");
	   		system("cls");
	    printf("****两次输入密码不一致,请重新输入****\n");
	       break;
		         }
   }
}



//用户登录 
void jmain()
{
	int aa=0;//登录状态 
	char deng1[N],deng2[N],deng3[N],deng4[N];
	int cc;
	FILE *fp;
	if((fp=fopen("C:\\Users\\Administrator\\Desktop\\实践作业\\账号密码.txt","r"))==NULL){
		printf("File open error!\n");//文件地址需要根据自己电脑上的实际地址填写
		exit(0);
	}
	    printf("******  请输入账号和密码(登录):  ******\n");
	scanf("%s%s",deng1,deng2);
	while(1){
	while(!feof(fp)){
	fscanf(fp,"%s%s",deng3,deng4);
	if((strcmp(deng1,deng3)==0)&&(strcmp(deng2,deng4)==0)){
	    printf("******        登录成功!          ******\n");
	fclose(fp);
		zxc();
		aa=1;
	}
	}		
	if(aa==0){
		system("cls");
		printf("输入错误,重新输入请按1,返回上一级请按2\n");
		printf("******      请输入你的选择 :     ******\n");
		scanf("%d",&cc);
		if(cc==1) 
		jmain();
		else
		xinjian();
	}	
	}
	}
	
	
	
//添加图书信息
void tsmenu()
{
	system("cls");
	int xx;
	FILE *fp;
	if((fp=fopen("C:\\Users\\某某\\Desktop\\实践作业\\图书信息.txt","a"))==NULL)
	{	
		printf("file open error!\n");
		exit(0);
	}
	printf("******  请输入图书ISBN号: ******\n");
	scanf("%s",su.num);
	printf("******  请输入图书书名:   ******\n");
	scanf("%s",su.name);
	printf("****** 请输入图书所属学科:******\n");
	scanf("%s",su.xue);
	printf("******   请输入图书主编:  ******\n");
	scanf("%s",su.zhubian);
	printf("******   请输入图书价格:  ******\n");
	scanf("%lf",&su.price);
	printf("******  请输入图书出版社: ******\n");
	scanf("%s",su.she);
	printf("****** 请输入图书出版年月:******\n");
	scanf("%s",su.yue);
	printf("******   请输入图书数量:  ******\n");
	scanf("%d",&su.n);
	fprintf(fp,"%s %s %s %s %lf %s %s %d\n",su.num,su.name,su.xue,su.zhubian,su.price,su.she,su.yue,su.n);
	if(fclose(fp)){
		printf("Can not close the file!\n");
		exit(0);
	}
	while(1){
		system("cls");
	printf("添加完毕,返回上一级请按1,继续添加请按2\n");
	scanf("%d",&xx);
	if(xx==1)
	zxc();
	else if(xx==2)
	tsmenu();
	else
	printf("******    输入错误,请重新输入    ******\n");
	}
	}	
	
	
	
//图书价值 
void zjts()
{
	system("cls");
	int q=0,i;
	FILE *fp;
	double sum;
	sum=0;
	if((fp=fopen("C:\\Users\\某某\\Desktop\\实践作业\\图书信息.txt","r"))==NULL){
		printf("file open error!\n");
		exit(0);
	}
	while(!feof(fp))
	{
		fscanf(fp,"%s %s %s %s %lf %s %s %d",su.num,su.name,su.xue,su.zhubian,&su.price,su.she,su.yue,&su.n);
		sum+=su.price*su.n;
	}	
		fclose(fp);
	printf("图书的价值为%.2lf元\n",sum);
		system("pause");
		zxc(); 
	} 


//删除图书 
void tsmain()
{
	system("pause");
	system("cls");
	int n=0,i=0;
	struct book m[20];
	struct book m2[20];
	FILE *fp,*fp1;
	char b[20];
	if((fp=fopen("C:\\Users\\Administrator\\Desktop\\实践作业\\图书信息.txt","r"))==NULL){
		printf("file open error");
		exit(0);
	}     
	      
	printf("请输入图书ISBN码或所属学科\n"); 
	scanf("%s",b);
	while(!feof(fp))
	{
		fscanf(fp,"%s%s%s%s%lf%s%s%d",m[n].num ,m[n].name,m[n].xue,m[n].zhubian, &m[n].price, m[n].she, m[n].yue, &m[n].n);
			if(strcmp(m[n].xue,b)!=0&&strcmp(m[n].num,b)!=0 )
			{
				strcpy(m2[i].num ,m[n].num);
				strcpy(m2[i].name,m[n].name );
				strcpy(m2[i].xue ,m[n].xue );
				strcpy(m2[i].zhubian,m[n].zhubian );
				m2[i].price =m[n].price ;
				strcpy(m2[i].she  ,m[n].she );
				strcpy(m2[i].yue  ,m[n].yue );
				m2[i].n =m[n].n ;
				i++;
			}
			n++;
		}
		fclose(fp);
		
		if((fp=fopen("图书信息.txt","w"))==NULL){
			printf("file open error");
			exit(0);
		}    
		    int j;
			for(j=0;j<i-1;j++)
			{
				fprintf(fp,"%s %s %s %s %.0lf %s %s %d\n",m2[j].num ,m2[j].name,m2[j].xue,m2[j].zhubian, m2[j].price, m2[j].she, m2[j].yue, m2[j].n);
		    }                                                  
		fclose(fp);
		printf("删除成功!"); 
		system("pause");
		system("cls");
		zxc();
}


//遍历
void jmenu()
{
	FILE *fp;
	 	if ((fp=fopen ("图书信息.txt","r"))==NULL){
		printf("File open error!\n");
		exit (0);
	}
	while(!feof (fp))
	{
		fscanf (fp,"%s %s %s %s %lf %s %s %d",su.num,su.name,su.xue,su.zhubian,&su.price,su.she,su.yue,&su.n);
		printf("%s %s %s %s %lf %s %s %d\n",su.num,su.name,su.xue,su.zhubian,su.price,su.she,su.yue,su.n);
	}

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



//按ISBN号查询图书 
void lmenu()
{
	system("cls");
	FILE *fp;
	int flag=0;
	char fnum[N];
	printf("请输入ISBN码\n");
	scanf("%s",fnum);
	if ((fp=fopen("C:\\Users\\Administrator\\Desktop\\实践作业\\图书信息.txt","r"))==NULL){
		printf("File open error!\n");
		exit (0);
	}
	while(!feof(fp))
	{
		fscanf(fp,"%s %s %s %s %lf %s %s %d",su.num,su.name,su.xue,su.zhubian,&su.price,su.she,su.yue,&su.n);
		if(strcmp(su.num,fnum)==0){
			printf("%s %s %s %s %.2f %s %s %d\n",su.num,su.name,su.xue,su.zhubian,su.price,su.she,su.yue,su.n);
			flag=flag+1;
		}
	}
if(flag==0)
    printf("没有此ISBN号!\n"); 
if (fclose(fp)){
	printf ("Can not close the file! \n");
	exit (0);
}
    system("pause");
    zxc();
}





//按书名查询图书 
void main1()
{
	system("cls");
	FILE *fp;
    int flag=0;
	char fname[N];
	printf("请输入图书书名\n");
	scanf("%s",fname);
	if ((fp=fopen ("C:\\Users\\Administrator\\Desktop\\实践作业\\图书信息.txt","r"))==NULL){
		printf("File open error!\n");
		exit (0);
	}
	while(!feof (fp))
	{
		fscanf (fp,"%s %s %s %s %lf %s %s %d",su.num,su.name,su.xue,su.zhubian,&su.price,su.she,su.yue,&su.n);
		if(strcmp(su.name,fname)==0){
			printf("%s %s %s %s %.2f %s %s %d\n",su.num,su.name,su.xue,su.zhubian,su.price,su.she,su.yue,su.n);
			flag=flag+1;
		}
	}
if(flag==0)
    printf("没有这本书!\n"); 
if (fclose(fp)){
	printf ("Can not close the file! \n");
	exit (0);
}
     system("pause");
    zxc();
}

  • 37
    点赞
  • 198
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值