图书管理系统
此系统包含两大功能模块:
- 用户模块
包含用户注册,用户登录,设置密码等! - 图书管理模块
对图书的增删改查,以及模糊查询,组合查询,多种排序,多级菜单等!
此系统非常完善,可做课程设计!
系统代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>//调用清屏,暂停函数
#include<algorithm>
struct asccount{
char ID[8];
char password[8];
}user[1000];
struct message{
char book_number[20];
char book_name[20];
char book_writer[20];
char book_price[20];
}book[1000];
void save_user(void);//将账号写入磁盘
void load_user(void);//将账号读入内存
void save_book(void);//将图书写入磁盘
void load_book(void);//将图书读入内存
void user_menu(void);//账号菜单
void add_user(void);//注册账号
void login_user(void);//登录账号
void reset_password(void);//修改密码
void choose_menu(void);//选择菜单
void function_menue(void);//功能菜单
void library_function(void);//功能介绍
void entering_function(void); //录入
void find_function(void); //查找
void add_function(void); //添加
void delete_function(void); //删除
void reset_function(void); //修改
void find_book_number(void);//按照书号查询
void find_book_name(void);//按照书名查询
void find_book_price(void);//按照价格查询
void sort(void);//书号排序
void find_cbquery(void);//组合查询:可以根据可以根据书号,书名查询
int user_count=0;
int book_count=0;
int main()
{
system("color 06");//背景与字体颜色
load_user();//将账号读入内存
load_book();//将图书读入内存
user_menu();
return 0;
}
void sort(void)//书号排序 采用升序方式即(1,2,3,4,5)
{
int i,j;
struct message temp;//定义一个零时存储变量,便于排序的顺序交换
//冒泡排序法由小到大
for(i=0;i<book_count-1;i++)
{
for(j=i+1;j<book_count;j++)
{ //atoi(char *p)装有整数的char数组转化为整数便于比大小
if(atoi(book[i].book_number)>atoi(book[j].book_number))
{
temp = book[i];
book[i] = book[j];
book[j] = temp;
}
}
}
printf("排序成功!");
}
void find_cbquery(void)//组合查询:可以根据书号,书名查询
{
//定义t作为查询是否成功的标记,并且记录查询成功的位置
int i,t=-1;
char no[20];
char name[20];
while(1)
{
system("cls");
printf("\n\t\t\t请输入要查找的书号\n\t\t\t\t");
scanf("%s",&no);
printf("\n\t\t\t请输入要查找的书名\n\t\t\t\t");
scanf("%s",&name);
//for循环查找符合条件的书籍
for(i=0;i<book_count;i++)
//strcmp比较两个字符数组是否相等,相等则返回0
if(strcmp(book[i].book_number,no)==0&&strcmp(book[i].book_name,name)==0)
{
t=i;
break;
}
if(t==-1)
{
printf("\n\t\t\t该书号或书名不存在,请重新输入\n\n\t\t\t ");
system("PAUSE");
continue;
}
printf("\n\t\t\t查找成功");
printf("\n\t\t\t书号:%s",book[t].book_number);
printf("\n\t\t\t书名:%s",book[t].book_name);
printf("\n\t\t\t作者:%s",book[t].book_writer);
printf("\n\t\t\t单价:%s",book[t].book_price);
printf("\n\t\t\t");
system("PAUSE");
break;
}
}
void user_menu(void) //菜单栏
{
int choose;
system("cls");//清屏
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 欢迎来到图书管理系统\t\t|");
printf("\n\t\t|\t\t\t\t\t");
printf("\n\t\t|\t 登录账号请按1\t\t|");
printf("\n\t\t|\t 注册账号请按2\t\t|");
printf("\n\t\t|\t 修改密码请按3\t\t|");
printf("\n\t\t|\t 退出系统请按0\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t\t");
printf("\n\t\t\t 请输入选项:\n\t\t\t\t ");
scanf("%d",&choose);
switch(choose)
{
case 1:
login_user(); break;
case 2:
add_user(); break;
case 3:
reset_password(); break;
case 0:
return;
default :
printf("\n\t\t\t 输入错误,请重新输入\n\n\t\t\t ");
system("PAUSE"); //暂停等待用户信号
system("cls");
user_menu();
}
}
void add_user(void)//注册账号
{
FILE *fp;
int i;
char str[101];
system("cls");
printf("\n");
printf("\t\t\t请输入账号:\n\n\t\t\t ");
scanf("%s",&str);
if(strlen(str)>16)
{
printf("\t\t账号长度大于16位,请重新输入\n");
system("PAUSE");
system("cls");
printf("\n");
add_user();
return;
}
for(i=0;i<user_count;i++)
if(strcmp(user[i].ID,str)==0)
{
printf("\t\t该账号已被注册,请重新注册\n\n\t\t\t ");
system("PAUSE");//按任意键继续
add_user();
}
strcpy(user[i].ID,str);
printf("\t\t\t请输入密码:\n\n\t\t\t ");
scanf("%s",&str);
while(strlen(str)>16)
{
system("cls");
printf("\n");
printf("\t\t密码长度大于16位,请重新输入\n\n");
printf("\t\t\t请输入密码:\n\n\t\t\t ");
scanf("%s",&str);
}
strcpy(user[i].password,str);
printf("\t\t\t请再次输入密码:\n\n\t\t\t ");
scanf("%s",&str);
if(strcmp(user[i].password,str)!=0)
{
printf("\t\t两次密码不一致,请重新申请\n\n\t\t\t");
system("PAUSE");
system("cls");
printf("\n");
add_user();
return;
}
save_user();//将账号写入磁盘
printf("\t\t\t账号申请成功\n\n\t\t\t");
user_count++;
system("PAUSE");
user_menu();
}
void load_user(void)//将账号读入内存
{
FILE *fp;
fp=fopen("账号.txt","r");
while(fscanf(fp,"%s",&user[user_count].ID)!=EOF)
{
fscanf(fp,"%s",&user[user_count].password);
user_count++;
}
fclose(fp);
}
void save_user(void)//将账号写入磁盘
{
int i;
FILE *fp;
fp=fopen("账号.txt","w");
for(i=0;i<=user_count;i++)
{
fprintf(fp,"%s\n",user[i].ID);
fprintf(fp,"%s\n",user[i].password);
}
fclose(fp);
}
void login_user(void)//登录账号
{
int i,flag=0;
char str[20];
system("cls");
printf("\n");
printf("\t\t\t请输入账号:\n\n\t\t\t ");
scanf("%s",&str);
for(i=0;i<user_count;i++)
if(strcmp(user[i].ID,str)==0)
{
flag=1;
break;
}
if(flag==0)
{
printf("\t\t该账号不存在,请重新登录\n\n\t\t\t");
system("PAUSE");
system("cls");
printf("\n");
login_user();
return;
}
printf("\t\t\t请输入密码:\n\n\t\t\t ");
scanf("%s",&str);
while(strcmp(user[i].password,str)!=0)
{
system("cls");
printf("\n");
printf("\t\t\t密码错误,请重新输入\n\n\t\t\t\t");
scanf("%s",&str);
}
printf("\t\t\t登录成功\n\n\t\t\t");
choose_menu();
}
void reset_password(void)//修改密码
{
int i,flag=0;
char str[20];
system("cls");
printf("\n");
printf("\t\t\t请输入账号:\n\n\t\t\t ");
scanf("%s",&str);
for(i=0;i<user_count;i++)
if(strcmp(user[i].ID,str)==0)
{
flag=1;
break;
}
if(flag==0)
{
printf("\t\t该账号不存在,请重新登录\n\n\t\t\t");
system("PAUSE");
system("cls");
printf("\n");
reset_password();
return;
}
printf("\t\t\t请输入密码:\n\n\t\t\t ");
scanf("%s",&str);
while(strcmp(user[i].password,str)!=0)
{
system("cls");
printf("\n");
printf("\t\t\t密码错误,请重新输入\n\n\t\t\t\t");
scanf("%s",&str);
}
printf("\t\t\t请输入新密码\n\n\t\t\t ");
scanf("%s",&str);
while(strlen(str)>16)
{
printf("\t\t密码长度大于16位,请重新输入\n");
system("PAUSE");
system("cls");
printf("\n");
scanf("%s",&str);
}
strcpy(user[i].password,str);
printf("\t\t\t请再次输入密码:\n\n\t\t\t ");
scanf("%s",&str);
while(strcmp(user[i].password,str)!=0)
{
printf("\t\t两次密码不一致,请重新申请\n\n\t\t\t");
system("PAUSE");
system("cls");
printf("\n");
scanf("%s",&str);
}
save_user();
printf("\t\t\t修改成功\n\n\t\t\t");
system("PAUSE");
user_menu();
}
void choose_menu(void)//选择菜单
{
int choose;
while(1)
{
system("cls");
printf("\n\t\t*\t\t\t\t\t|");
printf("\n\t\t|\t 欢迎来到选择菜单管理\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 图书功能管理请按1\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 图书功能介绍请按2\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 返回到上一层请按0\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t\t\t");
printf("\n\t\t\t 请输入选项:\n\t\t\t\t ");
scanf("%d",&choose);
switch(choose)
{
case 0:
user_menu(); return;
case 1:
function_menue(); return;
case 2:
library_function(); return;
default:
printf("\n\t\t\t 输入错误,请重新输入\n\n\t\t\t ");
system("PAUSE");
system("cls");
}
}
}
void function_menue(void)//功能菜单
{
int choose;
while(1)
{
system("cls");
printf("\n\n\t\t|||||||||||||||||||||||||||||||||||||||||");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 录入功能请按1\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 查找功能请按2\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 排序功能请按3\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 添加功能请按4\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 删除功能请按5\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 修改功能请按6\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 浏览功能请按7\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 返回上一层请按0\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|||||||||||||||||||||||||||||||||||||||||");
printf("\n\t\t\t\t");
printf("\n\t\t\t 请输入选项:\n\t\t\t\t ");
scanf("%d",&choose);
switch(choose)
{
case 0:
choose_menu();
case 1:
entering_function(); break;//录入功能
case 2:
find_function(); break;//查找功能
case 3:
sort();break;//排序功能
case 4:
add_function(); break;//添加功能
case 5:
delete_function(); break;//删除功能
case 6:
reset_function(); break;//修改功能
default :
printf("\n\t\t\t 输入错误,请重新输入\n\n\t\t\t ");
system("PAUSE");
}
}
}
void library_function(void)//图书功能 (注册,登录,增删改查等等)
{
system("cls");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 该系统包括以下功能\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 1、 注册账号\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 2、 登录账号\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 3、 修改密码\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 4、 录入功能\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 5、 添加功能\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 6、 删除功能\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 7、 修改功能\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 8、 浏览功能\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t|\t 9、 查询密码\t\t|");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t*\t 10、排序功能\t\t*");
printf("\n\t\t|\t\t\t\t\t|");
printf("\n\t\t");
system("PAUSE");
choose_menu();
}
这里只列举了部分代码,如需完整代码,请点击这里下载:
链接: 点我下载.