C语言课程设计报告-图书管理系统

倾心原创,转载请备注原文地址,谢谢。

主要内容: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