📄 课程设计2.c
字号:
printf("*******************************************************************************\n");
printf("会员号:");
for(i=0;i<8;i++)
{printf("%d",p0->num[i]);}
printf("\n");
printf("会员姓名: %s\n会员性别: %s\n联系电话: %s\n已借的书本数目: %d\n",p0->name,p0->sex,p0->tel,p0->n);
printf("\n");
sign=1;
p0=p0->next;
}
else p0=p0->next;
}
if(sign==0) printf("没有个会员的信息.\n");
break;
case 2: printf("请输入会员编号:");
c=getchar();
i=0;
while((c=getchar())!='\n')
{
b[i]=c-48;
i++;
}
p0=head;
while(p0!=NULL)
{
for(j=0;j<8;j++)
{
if(p0->num[j]==b[j])
{
sign2=1;
continue;
}
else
{
sign2=0;
break;
}
}
if(sign2==1)
{
printf("*******************************************************************************\n");
printf("会员号:");
for(i=0;i<8;i++)
{printf("%d",p0->num[i]);}
printf("\n");
printf("会员姓名: %s\n会员性别: %s\n联系电话: %s\n已借的书本数目: %d\n",p0->name,p0->sex,p0->tel,p0->n);
printf("\n");
break;
}
else p0=p0->next;
}
if(p0==NULL) printf("没有这个会员的信息.\n");
break;
default: m=0;break;
}
}
}
//借书
int Borrow()
{
char a[30],b[30],c;
Book *p0=NULL,*head=NULL;
reader *p2=NULL,*p3=NULL;
head=read();
printf("请输入要借的书的书号:");
scanf("%s",a);
p0=head->next;
while(p0!=NULL)
{
if((strcmp(a,p0->num))==0)
{
if(p0->imformation>0)
{
printf("图书在馆,可以借出,是否确定借出?'y'or'n'\n");
c=getchar();
scanf("%c",&c);
if(c=='y')
{
printf("请再次输入你的用户名:");
scanf("%s",b);
p3=(reader *)malloc(LEN3);
strcpy(p3->name,b);
if(p0->a->next2==NULL)
{
p0->a->next2=p3;
p3->next2=NULL;
}
else
{
for(p2=p0->a;p2->next2!=NULL;p2=p2->next2);
p2->next2=p3;
p3->next2=NULL;
}
--p0->imformation;
save(head);
printf("操作完成,可以带走图书。\n");
return 1;
break;
}
else
{
return 0;
break;
}
}
else printf("很抱歉,该图书不在馆.\n");return 0;break;
}
else p0=p0->next;
}
if(p0==NULL)
{
printf("很抱歉,没有这本书。\n");
return 0;
}
else return 2;
}
//还书
int Return()
{
Book *p0=NULL,*head=NULL;
reader *p2=NULL,*p3=NULL;
char c[20],b[30];
head=read();
printf("请输入要还的书的书号:");
scanf("%s",&c);
p0=head->next;
while(p0!=NULL)
{
if((strcmp(c,p0->num))==0)
{
printf("请输入你的用户名:");
scanf("%s",&b);
if(p0->a->next2==NULL) {printf("你没有借这本书!\n");break;}
else
{
p3=p0->a;
p2=p3->next2;
while(p2!=NULL)
{
if(strcmp(p2->name,b)==0)
{
if(p2->next2==NULL) {p3->next2=NULL;free(p2);break;}
else
{
p3->next2=p2->next2;
free(p2);
break;
}
}
else
{
p3=p2;
p2=p2->next2;
}
}
if(p2==NULL) printf("你没有借这本书!\n");
}
++p0->imformation;
save(head);
printf("书已归馆,操作完成。\n");
return 1;
break;
}
else p0=p0->next;
}
if(p0==NULL)
{
printf("没有这本书。\n");
return 0;
}
else return 2;
}
//增加会员
void Addmember()
{
FILE *fp;
char a[30],b[30];
int p,i=0,j=0,k=1;
int *nu;
Member *addmember=NULL;
nu=(int *)calloc(8,sizeof(int));
fp=fopen("会员信息.txt","rb");/*读方式打开文件*/
if(fp==NULL)
fp=fopen("会员信息.txt","wb"); /*写方式打开文件*/
else
{
fclose(fp);
fp=fopen("会员信息.txt","ab");/*追加方式打开文件*/
}
addmember=(Member *)malloc(LEN2);
printf("输入会员信息:\n");
printf("会员姓名: "); scanf("%s",addmember->name);
printf("会员性别: "); scanf("%s",addmember->sex);
printf("联系电话: "); scanf("%s",addmember->tel);
addmember->n=0;
while(k==1)
{
printf("会员密码: ");
while((a[i]=getch())!=13) //不带显示输入密码
{
if(a[i]==8)
{
if(i>0)
{
printf("\b \b");
i--;
}
}
else
{
i++;
printf("*");
}
}
a[i]='\0';
printf("\n");
printf("确认密码: ");
while((b[j]=getch())!=13)
{
if(b[j]==8)
{
if(j>0)
{
printf("\b \b");
j--;
}
}
else
{
j++;
printf("*");
}
}
b[j]='\0';
if(strcmp(a,b)==0)
{
strcpy(addmember->code,a);
printf("\n创建成功!你的会员号是:");
nu=getnum();
for(p=0;p<8;p++)
{
addmember->num[p]=nu[p];
printf("%d",nu[p]);
}
k=0;
break;
}
else
{
printf("密码输入有误!\n");
i=0;j=0;
continue;
}
}
fwrite(addmember,LEN2,1,fp);/*块写*/
fclose(fp); /*关闭文件*/
}
//读取会员信息
Member *read2()
{
FILE *fp;
Member *p=NULL,*p1=NULL,*head=NULL;
if((fp=fopen("会员信息.txt","rb"))==NULL) printf("不能打开文件或文件不存在\n");
head=(Member *)malloc(LEN2);
p1=head;
while(fread(p1,LEN2,1,fp)) /*逐个结点读取*/
{
p=p1;
p1=(Member *)malloc(LEN2);
p->next=p1;
}
p->next=NULL;
free(p1);
fclose(fp);
if(head->next!=NULL) return(head);
else
{
return 0;
printf("文件为空!");
}
}
//删除会员
void Delmember()
{
FILE *fp;
Member *head=NULL,*p=NULL,*q=NULL;
char membername[30];
head=read2();
printf("输入要删除的会员姓名: ");
scanf("%s",membername); /*输入会员名*/
q=head;
p=head->next;
while(p!=NULL)/*按名字查找要删除的会员*/
{
if(strcmp(p->name,membername)==0)
{
q->next=p->next;
break;
}
q=p; /*指针后移*/
p=p->next;
}
fp=fopen("会员信息.txt","wb");/*删除后从链表的头开始重新保存*/
while(head!=NULL)
{
fwrite(head,LEN2,1,fp);/*块写*/
head=head->next;
}
fclose(fp);
}
//打印会员信息
void print2(Member *head)
{
Member *p;
int i;
p=head->next;
while(p!=NULL)
{
printf("*******************************************************************************\n");
printf("会员号:");
for(i=0;i<8;i++)
{printf("%d",p->num[i]);}
printf("\n");
printf("会员姓名: %s\n会员性别: %s\n联系电话: %s\n已借的书本数目: %d\n",p->name,p->sex,p->tel,p->n);
p=p->next; //p后移一个结点
printf("\n");
}
}
//储存会员信息
void save2(Member *head)
{
FILE *fp;
Member *p;
p=head;
if((fp=fopen("会员信息.txt","wb"))==NULL)
{
printf("cannot open the file\n");
return;
}
while(p)
{
fwrite(p,LEN2,1,fp);/*逐个结点写文件*/
p=p->next;
}
fclose(fp); /*关闭文件*/
}
//会员操作
void operate()
{
int m,i=0,k=1;
char a[30],b[20];
char c;
int sign=1;
Member *p=NULL,*p1=NULL,*head=NULL,*p0=NULL;
printf(" 欢迎你使用我们的图书管理系统!\n");
while(sign==1)
{
head=read2();
printf(" 请输入你的会员姓名:");
scanf("%s",a);
printf("\n");
printf(" 请入你的会员密码:");
while((b[i]=getch())!=13) //不带显示输入密码
{
if(b[i]==8)
{
if(i>0)
{
printf("\b \b");
i--;
}
}
else
{
i++;
printf("*");
}
}
b[i]='\0';
printf("\n");
p0=head;
while((p0!=NULL))
{
if((strcmp(p0->name,a)==0)&&(strcmp(p0->code,b)==0)&&(p0->n<10))
{
printf("验证成功。请选择操作。\n");
while(k==1)
{
printf("1.查询书目 2.借书 3.还书 4.修改密码 5.退出\n");
scanf("%d",&m);
switch(m)
{
case 1: system("CLS");Bookconsult();break;
case 2:
if((Borrow())==1)
{
++p0->n;
save2(head);
break;
}
else break;
case 3:
if((Return())==1)
{
--p0->n;
save2(head);
break;
}
else break;
case 4:
resetcode();
break;
default: k=0;break;
}
}
printf("操作完成,谢谢你对我们的支持!\n");break;
}
else p0=p0->next;
}
if(p0==NULL) printf("对不起,你输入的用户名不存在或密码不正确。是否继续?'y'or'n'\n");
else printf("是否要继续?'y'or'n'\n");
printf("输入:");
c=getchar();
scanf("%c",&c);
if(c=='y') {sign=1;k=1;i=0;}
else sign=0;
}
}
//非会员操作
void operate2()
{
char a;
printf("由于你现在还不是会员,所以你必须先注册成为会员才能继续操作。\n");
printf("是否要注册为会员? 'y'or'n'\n你的选择是:");
a=getchar();
scanf("%c",&a);
if(a=='y')
{
Addmember();
printf("\n");
printf(" ****注册成功!现在你可以开始操作了。****");
operate();
}
else printf("+++++++++++++++++++++++++++欢迎你再次使用我们的系统!++++++++++++++++++++++++++++\n");
}
//修改会员密码
void resetcode()
{
Member *head=NULL,*p0=NULL;
char a[30],b[20],c[20],d[20],e[20];
int i=0,j=0,k=0,m=0,sign=1,n=1;
head=read2();
printf(" 请输入你的会员姓名:");
scanf("%s",a);
printf("\n");
printf(" 请入你的会员密码:");
while((b[i]=getch())!=13) //不带显示输入密码
{
if(b[i]==8)
{
if(i>0)
{
printf("\b \b");
i--;
}
}
else
{
i++;
printf("*");
}
}
b[i]='\0';
printf("\n");
p0=head;
while((p0!=NULL)&&(sign==1))
{
if((strcmp(p0->name,a)==0)&&(strcmp(p0->code,b)==0))
{
while((sign==1)&&(n<=3))
{
printf("验证密码,输入旧会员密码: ");
while((c[j]=getch())!=13) //不带显示输入密码
{
if(c[j]==8)
{
if(j>0)
{
printf("\b \b");
j--;
}
}
else
{
j++;
printf("*");
}
}
c[j]='\0';
printf("\n");
printf("确认密码: ");
while((d[k]=getch())!=13)
{
if(d[k]==8)
{
if(k>0)
{
printf("\b \b");
k--;
}
}
else
{
k++;
printf("*");
}
}
d[k]='\0';
printf("\n");
if(strcmp(c,d)==0)
{
printf("输入新密码:");
while((e[m]=getch())!=13)
{
if(e[m]==8)
{
if(m>0)
{
printf("\b \b");
m--;
}
}
else
{
m++;
printf("*");
}
}
e[m]='\0';
printf("\n");
strcpy(p0->code,e);
print2(head);
save2(head);
printf(" 修改成功!\n");
sign=0;
break;
}
else
{
printf("密码输入有误!\n");
j=0;k=0;
++n;
continue;
}
}
}
else p0=p0->next;
}
if(p0==NULL) printf("你所输入的用户名不存在或者密码错误!\n");
}
//借书信息
void imformation()
{
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※ 欢迎你使用我们的图书管理系统!以下是本系统的有关说明: ※\n");
printf("※ 本系统主要功能是进行图书的有关管理,其中分为管理员操作和学生操作。在管理※\n");
printf("※员操作中,你可以进行图书信息的创建、插入、删除、查询;以及对会员信息的创建、※\n");
printf("※插入、删除、查询。在学生操作中,分为会员操作和非会员操作。学生必须是会员才能※\n");
printf("※进行有关图书的操作。会员对图书的操作主要有图书信息的查询、借书、还书和密码修※\n");
printf("※改。在操作中主要是以阿拉伯数字来选择相应的菜单功能,在选择时以'y'表示 '是' ※\n");
printf("※以'n'表示'不是'。在你操作的时候就会有相应的操作提示。 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
}
//主函数
main()
{
int n,k=1;
char a;
printf("********************************************************************************\n");
printf("\n\n");
printf(" 欢迎进入我们的图书管理系统! \n");
printf("\n\n");
printf("********************************************************************************\n");
while(k==1)
{
printf(" 请选择你的操作: 1.管理员操作 2.学生操作 3.系统信息 4.退出系统\n");
printf("********************************************************************************\n");
printf(" 你的选择是:");
scanf("%d",&n);
system("CLS");
switch(n)
{
case 1: manager();break;
case 2: printf("你是否为会员? 'y'or'n'\n");
a=getchar();
scanf("%c",&a);
printf("\n");
if(a=='y') operate();
else operate2();
k=0;
break;
case 3: imformation();break;
default: printf("+++++++++++++++++++++++++++欢迎你再次使用我们的系统!++++++++++++++++++++++++++++\n");k=0;break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -