主要内容:windows
图书信息包括:书名、做者名、ISBN号、出版单位、出版年份、价格等。试设计一个图书信息管理系统,使之能提供如下功能:函数
(1)系统以菜单方式工做测试
(2)图书信息录入功能(图书信息用文件保存)ui
(3)图书信息浏览功能spa
(4)查询和排序功能:(至少一种查询方式).net
(5)修改图书信息:对某图书信息进行修改设计
(6)删除图书:将某图书的信息删除3d
(7)退出code
添加功能:blog
(1)登陆界面,用户输入正确的用户名和密码进入系统,密码从文件中读取
(2)查询图书信息,分3种方式,分别是按图书编号、名称、做者查询
(3)删除图书信息,分2种方式,分别是按图书编号、名称删除,其中会提示是否删除
(4)修改图书信息,分2种方式,分别是按图书编号、名称修改
(5)修改原始密码,会先输入原始密码,而后两次确认,修改完后存入文件
(6)系统默认提供图书编号,范围2018000-2018999
程序界面:
代码:
#include<stdlib.h> #include<stdio.h> #include<malloc.h> #include<string.h> #include <windows.h> #include <conio.h> #include <time.h> void homepage(); //主界面 void login(); //登陆界面 void gaimi(); //修改密码 void quit(); //退出程序 void input(); //录入 void search(); //查询 void shanchu(); //图书删除 void shanchu_num(); //按编号删除 void shanchu_name();// 按名称删除 void search_num(); //编号查询 void search_name(); //名称查询 void search_author(); //做者查询 void xiugai(); //图书修改 void xiugai_num(); //按图书编号修改 void xiugai_name();//按图书名称修改 void sort(); //图书排序 void shuchu(); //图书浏览 void save();//存入文件 void load();//读取文件 int xianshi(int i);//显示图书信息 int M=0;//实际的图书总数 char c;//输入任意键 unsigned long suiji(); struct booklibrary{ unsigned long num; char id; //图书编号 char bookName[20]; //名字 char author[20]; //做者 char isbn[20]; //ISBN号 char chuBan[20]; //出版单位 char chuBanAge[20]; //出版时间 char bookPrice[20]; //图书单价 }; struct user{//存放用户名的结构体 char pwd[20]; }us; struct booklibrary book[1000]; char username[15]="admin",pwd1[100]; //username[15]原始帐号,pwd1修改密码时的比较 main(){ login();} void homepage() { //程序主界面 int cmd; time_t T; //获取系统时间 struct tm * timenow; time ( &T ); timenow = localtime ( &T ); while(1){ printf("\n\n"); printf("\t 当前系统时间是: %s",asctime (timenow) ); printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃ ╔════════════════════════════╗ ┃\n"); printf("\t┃ ║ 欢 迎 使 用 图 书 管 理 信 息 系 统 ║ ┃\n"); printf("\t┃ ╚════════════════════════════╝ ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ * 1.录入图书信息 * 2.浏览图书信息 * ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ * 3.图书信息查询 * 4.图书信息删除 * ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ * 5.图书信息修改 * 6.图书信息排序 * ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ * 7.修改原始密码 * 8.退出信息系统 * ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("\t请选择功能 1 - 8 :"); scanf("%d",&cmd); getchar(); system("cls"); switch(cmd){ case 1:input();break; case 2:shuchu();break; case 3:search();break; case 4:shanchu();break; case 5:xiugai();break; case 6:sort();break; case 7:gaimi();break; case 8:quit();break; default:printf("\n 非法操做!\n");} system("pause"); system("cls"); } } void sort(){//图书信息排序 load(); int i,j,t=0;//t测试是否排序成功 struct booklibrary temp; for(i=0;i<M-1;i++){ for(j=0;j<M-i-1;j++){ if(book[j].num>book[j+1].num){ temp=book[j]; book[j]=book[j+1]; book[j+1]=temp; t=1; } } } printf("欢迎进入图书排序模块,本系统按照图书编号由小到大排序!\n"); printf("---------------------------------------------------------\n"); printf("正在排序"); for(i=0;i<20;i++){ printf("."); Sleep(100); } if(t==1){ printf("\n\n排序完成!请按任意键返回查看!"); save(); //排序成功后保存文件 }else printf("\n\n排序失败!请按任意键返回!"); c=getch();system("cls"); homepage(); } void shuchu()//显示全部图书信息 { load(); int i;//循环变量 printf(" 全部图书相关信息\n"); printf("--------------------------------------------------------------------------------\n"); printf("序列 图书号 图书名称 图书做者 图书ISBN 出版单位 出版时间 图书单价\n"); for(i=0;i<M;i++){ printf("%2d ",i+1); printf(" %7lu%10s%6s%9s%12s%7s%10s\n",book[i].num,book[i].bookName,book[i].author, book[i].isbn,book[i].chuBan,book[i].chuBanAge,book[i].bookPrice); } } void search()//查询菜单 { int num; printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃ ╔════════════════════════════╗ ┃\n"); printf("\t┃ ║ 欢 迎 进 入 图 书 信 息 查 询 模 块 ║ ┃\n"); printf("\t┃ ╚════════════════════════════╝ ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ * 1.按图书编号查询 * 2.按图书名称查询 * ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ * 3.按图书做者查询 * 4.返回主菜单界面 * ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("\t请选择功能 1 - 4 :"); scanf("%d",&num); switch(num){ case 1:search_num();break; case 2:search_name();break; case 3:search_author();break; case 4:{system("cls"); homepage();break;} default:printf("\n 非法操做!\n"); } } void search_num()//按图书编号查询 { load(); int i,j=0; unsigned long n; printf("输入须要查找的图书编号:"); scanf("%lu",&n); for(i=0;i<M;i++) if(n==book[i].num){ xianshi(i); j++; } if(j==0) printf("查询的该图书编号不存在\n"); printf("\n\n按任意键返回\n"); c=getch();system("cls"); search(); } void search_name()//按图书名称查询 { int i,j=0; char c1[10]; load(); printf("输入须要查找的图书名称:"); getchar(); gets(c1); for(i=0;i<M;i++) if(strcmp(c1,book[i].bookName)==0){ xianshi(i); j++; } if(j==0) printf(" 没有查找到此图书名称的信息!!!\n"); printf("\n\n按任意键返回\n"); c=getch();system("cls"); search(); } void search_author()//按图书做者查询 { int i,j=0; char c1[10]; load(); printf("输入须要查找的图书做者:"); getchar(); gets(c1); for(i=0;i<M;i++) if(strcmp(c1,book[i].author)==0){ xianshi(i); j++; } if(j==0) printf(" 没有查找到此图书做者的信息!!!\n"); printf("\n\n按任意键返回\n"); c=getch();system("cls"); search(); } void shanchu(){ //删除主菜单 int num; printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃ ╔════════════════════════════╗ ┃\n"); printf("\t┃ ║ 欢 迎 进 入 图 书 信 息 删 除 模 块 ║ ┃\n"); printf("\t┃ ╚════════════════════════════╝ ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ * 1.按图书编号删除 * 2.按图书名称删除 * ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * 3.返回主菜单界面 * ┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("请输入你的选择1-3:"); scanf("%d",&num); switch(num){ case 1:shanchu_num();break; case 2:shanchu_name();break; case 3:{system("cls"); homepage();break; } default:printf("\n 非法操做!\n"); } } void shanchu_num(){ //根据编号删除 load(); int i,j=0,k; char c1;//是否删除变量 unsigned long n; printf("输入须要删除的图书编号:"); scanf("%lu",&n); for(i=0;i<M;i++) if(n==book[i].num){ xianshi(i); k=i; j++; break; } if(j==0){ printf("该图书编号不存在\n"); k=-1; printf("\n\n按任意键返回\n"); c=getch();system("cls"); shanchu(); } printf("确认删除?是 输入 y 或 Y。不是按任意键\n"); getchar(); scanf("%c",&c1); if(c1=='y'||c1=='Y'){ for(i=k;i<M-1;i++) book[i]=book[i+1]; M=M-1; save(); printf("删除成功\n");} printf("\n\n按任意键返回\n"); c=getch();system("cls"); shanchu(); } void shanchu_name(){ //根据图书名称删除 load(); int i,j=0,k; char c1;//是否删除变量 char bookName1[20]; //名字 printf("输入须要删除的图书名称:"); scanf("%s",bookName1); for(i=0;i<M;i++) if(strcmp(bookName1,book[i].bookName)==0){ xianshi(i); k=i; j++; break; } if(j==0){ printf("该图书名称不存在\n"); k=-1; printf("\n\n按任意键返回\n"); c=getch();system("cls"); shanchu(); } printf("确认删除?是 输入 y 或 Y。不是按任意键\n"); getchar(); scanf("%c",&c1); if(c1=='y'||c1=='Y'){ for(i=k;i<M-1;i++) book[i]=book[i+1]; M=M-1; save(); printf("删除成功\n");} printf("\n\n按任意键返回\n"); c=getch();system("cls"); shanchu(); } void xiugai(){ //修改菜单 int num; printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃ ╔════════════════════════════╗ ┃\n"); printf("\t┃ ║ 欢 迎 进 入 图 书 信 息 修 改 模 块 ║ ┃\n"); printf("\t┃ ╚════════════════════════════╝ ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ * 1.按图书编号修改 * 2.按图书名称修改 * ┃\n"); printf("\t┃ * * * ┃\n"); printf("\t┃ *********************************************************** ┃\n"); printf("\t┃ * 3.返回主菜单界面 * ┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("请输入你的选择1-3:"); scanf("%d",&num); switch(num){ case 1:xiugai_num();break; case 2:xiugai_name();break; case 3:{ system("cls"); homepage();break;} default:printf("\n 非法操做!\n"); } } void xiugai_num(){ //根据编号修改 load(); int i,j=0,k;//k查找到后把编号给K char c2; //是否修改 unsigned long n; printf("输入须要修改的图书编号:"); scanf("%lu",&n); for(i=0;i<M;i++) if(n==book[i].num){ xianshi(i); k=i; j++; break; } if(j==0){ printf("该图书编号不存在\n"); k=-1; printf("\n\n按任意键返回\n"); c=getch();system("cls"); xiugai(); } i=k; printf("输入新的图书名称: "); scanf("%s",book[i].bookName); printf("输入新的图书做者:"); scanf("%s",book[i].author); printf("输入新的图书ISBN号:"); scanf("%s",book[i].isbn); printf("输入新的出版单位:"); scanf("%s",book[i].chuBan); printf("输入新的出版时间:"); scanf("%s",book[i].chuBanAge); printf("输入新的图书单价:"); scanf("%s",book[i].bookPrice); printf("确认修改?是 输入 y 或 Y。不是按任意键\n"); getchar(); scanf("%c",&c2); if(c2=='y'||c2=='Y'){ save(); printf("修改为功!\n"); printf("\n\n按任意键返回\n"); c=getch();system("cls"); xiugai(); }else{ printf("\n\n按任意键返回\n"); c=getch();system("cls"); xiugai(); } } void xiugai_name(){ //根据图书名称修改 load(); int i,j=0,k;//k查找到后把编号给K char c2;//是否修改 char bookName1[20]; //名字 printf("输入须要修改的图书名称:"); scanf("%s",bookName1); for(i=0;i<M;i++) if(strcmp(bookName1,book[i].bookName)==0){ xianshi(i); k=i; j++; break; } if(j==0){ printf("该图书名称不存在\n"); k=-1; printf("\n\n按任意键返回\n"); c=getch();system("cls"); xiugai(); } i=k; printf("输入新的图书名称: "); scanf("%s",book[i].bookName); printf("输入新的图书做者:"); scanf("%s",book[i].author); printf("输入新的图书ISBN号:"); scanf("%s",book[i].isbn); printf("输入新的出版单位:"); scanf("%s",book[i].chuBan); printf("输入新的出版时间:"); scanf("%s",book[i].chuBanAge); printf("输入新的图书单价:"); scanf("%s",book[i].bookPrice); printf("确认修改?是 输入 y 或 Y。不是按任意键\n"); getchar(); scanf("%c",&c2); if(c2=='y'||c2=='Y'){ save(); printf("修改为功!\n"); printf("\n\n按任意键返回\n"); c=getch();system("cls"); xiugai(); }else{ printf("\n\n按任意键返回\n"); c=getch();system("cls"); xiugai(); } } void input(){//添加图书 load(); int m,i,j; printf("\t ════════════════════════════ \n"); printf("\t ***** 录入图书信息 ***** \n"); printf("\t ════════════════════════════ \n"); for(i=0;i<10;i++){ printf("请输入须要添加的图书数量:"); scanf("%d",&j); if(j<1000-M){ m=j; break; } printf("该系统只能存放 1000 本之内的图书信息,剩余%d 本空间,请从新输入\n",1000-M); } if(i==10){ printf("输入的图书数量超过范围\n"); exit(0);} M=M+m; for(i=0;i<m;i++){ printf("输入第%d 个图书名称: ",i+1); scanf("%s",book[M+i-m].bookName); printf("输入第%d 个图书做者:",i+1); scanf("%s",book[M+i-m].author); printf("输入第%d 个图书ISBN号:",i+1); scanf("%s",book[M+i-m].isbn); printf("输入第%d 个出版单位:",i+1); scanf("%s",book[M+i-m].chuBan); printf("输入第%d 个出版时间:",i+1); scanf("%s",book[M+i-m].chuBanAge); printf("输入第%d 个图书单价:",i+1); scanf("%s",book[M+i-m].bookPrice); book[M+i-m].num=suiji(); printf("该图书的编号被系统定为:%lu\n",book[M+i-m].num);} save();} void login(){ //登陆界面 int i=0,k=0,j; FILE *fp; if((fp=fopen("name.txt","r"))==NULL){ strcpy(us.pwd,"123456"); }//若是文件打开错误初始密码 fscanf(fp,"%s",&us.pwd); char username1[15]; //定义与原始密码相比较的变量 system("color 3f"); //系统函数,color显示颜色,3湖蓝色,f是亮白色 printf("\n\n"); printf("\t 系统默认用户名:admin,密码:123456\n"); printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃**********************************************************┃\n"); printf("\t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n"); printf("\t┃***┃************************************************┃***┃\n"); printf("\t┃***┃*** ****┃***┃\n"); printf("\t┃***┃*** 欢迎使用图书管理信息系统 ****┃***┃\n"); printf("\t┃***┃*** ****┃***┃\n"); printf("\t┃***┃*** ****┃***┃\n"); printf("\t┃***┃*** 黄康权 ****┃***┃\n"); printf("\t┃***┃*** ****┃***┃\n"); printf("\t┃***┃*** 2018年3月6日 ****┃***┃\n"); printf("\t┃***┃*** ****┃***┃\n"); printf("\t┃***┃************************************************┃***┃\n"); printf("\t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n"); printf("\t┃**********************************************************┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); for(i=0;i<3;i++){ printf("\n请输入用户名:"); gets(username1); printf("\n请输入6位密码:"); for(j=0;j<100;j++){ pwd1[j]=getch(); if(pwd1[j]=='\r') break; printf("*"); } pwd1[j]='\0'; if((strcmp(username,username1)==0)&&(strcmp(us.pwd,pwd1)==0)){ printf("\n\n您已经成功登陆"); k=1; for(i=0;i<20;i++){ printf("."); Sleep(100); } system("cls"); homepage(); //跳转到主界面 break; } else printf("\n\n用户名或密码无效,请从新输入:\n"); continue; } if(k==0) printf("\n连续输入错误3次将退出程序\n"); Sleep(2000); //程序暂停函数(单位毫秒),本次暂停2000毫秒 return;//连续三次错误跳转退出界面 } void save(){ //文件存盘 FILE *fp; int i; if((fp=fopen("book.txt","w"))==NULL){ printf("文件打开错误!\n"); exit(0); } for(i=0;i<M;i++) fwrite(&book[i],sizeof(struct booklibrary),1,fp); fclose(fp); } void load(){//磁盘信息读入到内存 FILE *fp; int i; if((fp=fopen("book.txt","r"))==NULL){ printf("文件打开错误!\n"); exit(0); } for(i=0;!feof(fp);i++) fread(&book[i],sizeof(struct booklibrary),1,fp); fclose(fp); M=i-1; } unsigned long suiji(){//生成随机的职工号 unsigned long h; srand(time(NULL)); h=rand()%1000+2018000; return h; } void gaimi(){ //修改密码程序 int j; FILE *fp; if((fp=fopen("name.txt","w"))==NULL){ printf("文件打开错误!");exit(0); } printf("\n请输入您的原始密码:\n"); fflush(stdin); //清除缓冲 for(j=0;j<100;j++){ us.pwd[j]=getch(); if(us.pwd[j]=='\r') break; printf("*"); } us.pwd[j]='\0'; if((strcmp(us.pwd,pwd1)==0)){ printf("\n请输入您要修改的密码\n"); for(j=0;j<100;j++){ us.pwd[j]=getch(); if(us.pwd[j]=='\r') break; printf("*"); } us.pwd[j]='\0'; fflush(stdin); //清除缓冲 printf("\n请再次确认你的密码\n"); for(j=0;j<100;j++){ pwd1[j]=getch(); if(pwd1[j]=='\r') break; printf("*"); } pwd1[j]='\0'; if((strcmp(us.pwd,pwd1)==0)){ printf("\n\n密码修改为功,请从新登陆。\n"); fprintf(fp,"%s",&us.pwd); Sleep(2000); system("cls"); login(); } else { printf("\n\n两次密码不符合,本次服务到此结束!\n\n"); printf("\n\n按任意键返回\n"); c=getch(); system("cls"); homepage(); } } else{ printf("\n密码输入错误!\n\n"); printf("\n\n按任意键返回\n"); c=getch(); system("cls"); homepage(); } } void quit(){ //退出程序 system("cls"); printf("\n\n\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃ ***********************************************************┃\n"); printf("\t┃ * 谢谢使用本程序 *┃\n"); printf("\t┃ ***********************************************************┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n\n"); exit(0); } int xianshi(int i){ int j=0; printf(" 全部图书相关信息\n"); printf("--------------------------------------------------------------------------------\n"); printf("序列 图书号 图书名称 图书做者 图书ISBN 出版单位 出版时间 图书单价\n"); printf("%2d ",j+1); printf(" %7lu%10s%6s%9s%12s%7s%10s\n",book[i].num,book[i].bookName,book[i].author, book[i].isbn,book[i].chuBan,book[i].chuBanAge,book[i].bookPrice); return 0; }
下载地址(不会的能够邮箱联系哈):
https://download.csdn.net/download/qq_18620233/11175051
另有论文,若是问题:goodsking@163.com