之前完善了一个c语言的图书借阅管理系统的课设,把课设的400来行代码完善到现在1000多行,然后里面的功能都已完善,有相应的人机交互友好提示,也能增强了代码的健壮性。下面我将简单介绍一下这个系统: 该系统采用读者、书籍、借阅三个结构体来存放相关信息借阅结构体连接了读者与书籍双方的关系。然后这里的所有界面均在控制台展示: 下面是首页面:  进入图书管理: 对于涉及到对图书修改的如增加图书、删除图书则需要输入密码验证:  查询图书界面:  因为篇幅有限,这一模块不一一展示了,下面展示会员管理: 同样对于要修改的如增加删除操作需要密码验证   下面是修改密码的界面:  大概展示就到这里,因为代码有1000多行,篇幅有限,所以下面我把一些主要函数的代码贴出来: 主函数:
int main()
{
int n,s,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;
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;
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))
{
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;
}
}
希望以上的分享能够对初学者有所帮助,如果有需要完整源代码的可以移步:源代码下载 或者直接私信我均可。
|