之前完善了一个c语言的图书借阅管理系统的课设,把课设的400来行代码完善到现在1000多行,然后里面的功能都已完善,有相应的人机交互友好提示,也能增强了代码的健壮性。下面我将简单介绍一下这个系统:
该系统采用读者、书籍、借阅三个结构体来存放相关信息借阅结构体连接了读者与书籍双方的关系。然后这里的所有界面均在控制台展示:
下面是首页面:
进入图书管理:
对于涉及到对图书修改的如增加图书、删除图书则需要输入密码验证:
查询图书界面:
因为篇幅有限,这一模块不一一展示了,下面展示会员管理:
同样对于要修改的如增加删除操作需要密码验证
下面是修改密码的界面:
大概展示就到这里,因为代码有1000多行,篇幅有限,所以下面我把一些主要函数的代码贴出来:
主函数:
int main() /*主函数*/
{
int n,s,x; //s用来接收主菜单的值 n来接收管理员模式的值 x来接受客户模式的值
do
{
system("cls");
s = mainmenu();
switch(s)
{
case 1 :do
{
system("cls");
n = guanli();
switch(n)
{
case 1:system("cls");zjts();getch();break;/*插入*/
case 2:system("cls");chashu();break;/*查看*/
case 3:system("cls");scts();break;/*删除*/
case 4:system("cls");jieshu();break; /*借阅*/
case 5:system("cls");huanshu();break;/*还书*/
}
}while(n!=6);break;
case 2 : do
{
system("cls");
x = huiyuan();
switch(x)
{
case 1:system("cls");zjhy();getch();break;//增加会员
case 2:system("cls");charen();break;//查询会员
case 3:system("cls");schy();break;//删除会员
case 4:system("cls");jsxx();getch();break;//借书信息
}
}while(x!=5);break;
case 3 :system("cls");xiugaimima();break;
}
}while(s!=4);
system("cls");
printf("\n\n\n\n\n\n \t\t谢谢使用!!!\n");
getch();//等待用户 输入 一个字符 然后继续执行下面语句
return 0;
}
主菜单函数:
int mainmenu() //主菜单
{
int x;
printf("\n\n\n\n\t\t 欢迎光临图书借阅管理系统 \n\n\n");
printf("\t\t 1.图书管理 \n");
printf("\t\t 2.会员管理 \n");
printf("\t\t 3.修改密码 \n");
printf("\t\t 4.退出系统 \n");
printf("\n\t\t请输入您的选择:");
scanf("%d",&x);
return x;
}
密码验证与修改密码函数:
int mimayanzheng() //密码验证
{
char mm[20]; //用来存放输入的密码
printf("\t\t 请输入密码:");
scanf("%s",&mm);
if(!strcmp(mm,MIMA)) //比较输入的密码 是否 与原密码相同
return 1;
else
return 0;
}
int xiugaimima() //修改密码
{
char mima_temp[20];//用来存放用户输入的密码
char new_mima[20]; //存放第一次新密码
char new_mima1[20]; //存放第二次新密码
printf("请输入原始密码:\n");
scanf("%s",&mima_temp);
if(!strcmp(mima_temp,MIMA)) //比较原始密码 与 用户输入的密码
{
printf("请输入新密码:\n");
scanf("%s",&new_mima);
printf("请再输一次:\n");
scanf("%s",&new_mima1);
if(!strcmp(new_mima1,new_mima)) //比较 两次修改后输入的密码
{
strcpy(MIMA,new_mima); //将 新密码 拷贝给 原始密码
printf("密码修改成功,请牢记,按任意键返回。。。\n");
getch();
return 0;
}
else
{
printf("错误!两次输入的密码不一致,按任意键返回。。。\n");
getch();
return 1;
}
}
else
{
printf("原始密码错误,按任意键返回。。。\n");
getch();
}
}
增加图书:
void zjts() //增加图书
{
int n,t,count=1;
t=mimayanzheng();
if(t==0)
{
printf("密码错误,按任意键返回原菜单!!!");
return;
}
system("cls");
printf("\t\t 录入图书信息 \n");
printf("\n\n\t\t请输入您要录入的数量:");
scanf("%d",&n);
for(I=A;I<n+A;I++)
{
printf("\n\n\n\t\t请输入第%d本书的编号:",count);
scanf("%d",&bk[I].num);
printf("\t\t请输入第%d本书的名称:",count);
scanf("%s",bk[I].name);
printf("\t\t请输入第%d本书的出版社:",count);
scanf("%s",bk[I].publish);
printf("\t\t请输入第%d本书的出版时间(年月日无分隔如:20010201):",count);
scanf("%d",&bk[I].time);
printf("\t\t该书是否已经被借阅,已被借阅输入'1',未被借阅输入'0':");
scanf("%d",&bk[I].jie);
count++;
} A=I;
printf("\t\t 信息录入完成 \n");
printf("\n\n\t\t 按任意键继续...\n");
删除图书:
void scts() //删除图书
{
int x,t;
t=mimayanzheng();
if(t==0)
{
printf("密码错误,按任意键返回原菜单!!!");
getch();
return;
}
do
{
system("cls");
printf("\n\n\n\n 删除图书信息 \n\n\n");
printf(" 1.按书号删除 \n");
printf(" 2.按书名删除 \n");
printf(" 3.返回主菜单 \n");
printf("\t\t请输入您的选项:");
scanf("%d",&x);
switch(x)
{
case 1:system("cls");scts_num();getch();break;
case 2:system("cls");scts_name();getch();break;
}
}while(x!=3);
}
void scts_num() //按 书号删除
{
int i,j,num,k=0;//i循环下标变量 //num存放输入的书号 //k标记是否存在该书
char c[2];//用来表示 是否删除图书
printf("请输入您想要删除的书的书号(输入”0”退出):\n");
while(1)
{
scanf("%d",&num);
if(num == 0) break;
for(i=0;i<I;i++)
{
if(num == bk[i].num)
{
k++;
printf("该书的信息为:\n");
printf("\t编号 图书名称 出版社 出版时间 状态\n");
printf("\t%-7d %-8s %-12s %d ",bk[i].num,bk[i].name,bk[i].publish,bk[i].time);
if(bk[i].jie == 1)
printf("已被借阅\n");
else printf("可以借阅\n");
printf("\t是否要删除此书('y' or 'n'):\n");
scanf("%s",&c);
if(!strcmp(c,"y"))
{
for(j=i;j<=I-1;j++)
bk[j-1]=bk[j];
--I;
--A;
printf("\t删除成功!任意键返回。。。\n");
break;
}
else
{
printf("用户取消操作,任意键返回。。。");
break;
}
}
}
if(k == 0)
printf("未找到该书,请重新输入(输入“0”退出):\n");
else break;
}
}
查找图书:
void chashu_num() //管理员————按书号查看
{
int i,k=0; //i是局部变量一定记住, ,k用来标记书的借阅状态。
int num;
printf("请输入需要查看的书号:\n");
scanf("%d",&num);
for(i=0;i<I;i++)
{
if(num==bk[i].num)
{
printf("\t编号 图书名称 出版社 出版时间 状态\n");
printf("\t%-7d %-8s %-12s %d ",bk[i].num,bk[i].name,bk[i].publish,bk[i].time);
if(bk[i].jie == 1)
printf("\t\t已借阅\n");
else printf("\t\t未借阅\n");
k++;
printf("\t按任意键返回。。。\n");
}
}
if(k == 0)
printf("该书不存在,任意键返回。。。\n");
}
借阅:
void jieshu_num()
{
int i,im,num,km=0,k=0;
char n[2]; //用来表示 是否借阅
char namem[20]; //用来存放会员名
printf("请输入你的会员名字:");
scanf("%s",&namem);
for(im=0;im<IM;im++)
{
if(!strcmp(namem,mm[im].namep))
{
printf("\t编号 会员名称 \n");
printf("\t%-7d %-8s ",mm[im].nump,mm[im].namep);
printf("请确认您的信息并按任意键继续。。。。\n");
km++;
getch();
break;
}
}
if(km==0)
{
printf("不存在该会员,或会员名输错!请正确输入名称!\n");
printf("按任意键返回。。。\n");
getch();
return;
}
printf("\n请输入书的书号:\n");
while(1)
{
scanf("%d",&num);
for(i=0;i<I;i++)
{
if((num == bk[i].num)&&(bk[i].jie == 0)) //比较输入书号与已有书号相等时 且 未借阅 时 执行 if语句
{
k++;
printf("\t编号 图书名称 出版社 出版时间 状态\n");
printf("\t%-7d %-8s %-12s %d ",bk[i].num,bk[i].name,bk[i].publish,bk[i].time);
printf("可以借阅\n");
printf("您是否需要借阅此书:'y' or 'n' \n");
scanf("%s",&n);
if(!strcmp(n,"y"))
{
if(mm[im].chance<10)
{
bk[i].jie = 1;
printf("借阅成功,按任意键返回。。。\n");
mm[im].js[mm[im].chance].num=bk[i].num;
strcpy(mm[im].js[mm[im].chance].name,bk[i].name);
mm[im].chance++;
}
else printf("您的借阅机会已经使用完!!!按任意键返回。。。");
getch();
break;
}
else
{
if(!strcmp(n,"n")) printf("借阅取消,按任意键返回。。。\n");
else printf("输入有错,按任意键返回。。。\n");
getch();
break;
}
}
}
if(k == 0)
{
printf("不存在该书,或该书已经借出!请正确输入图书名称!\n");
printf("按任意键返回。。。\n");
getch();
break;
}
else break;
}
}
希望以上的分享能够对初学者有所帮助,如果有需要完整源代码的可以v我(备注来源):es_lad或者移步:源代码下载
或者直接私信留下你的联系方式均可。