本文主要是用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(); }