java中(0.1+0.2)+o.3和0.1+(0.2+0.3)的结果为什么不相等呢(0.1+0.2)+o.3这个的0.3你写成字母o.3了 另外给你找个了相似的问题的答案,希望能帮助到你 为什么“0.1+0.2=0.3000
c语言图书馆自习位预约
急求一C#编程实例,实现自习室座位预订功能,可实现预定座位的修改,删除,查询。自习室及座位各自有编号
去图书馆 找个图书馆信息管理系统的案例,跟你的自习室座位预订差不多的求图书馆管理系统程序(c语言)
C程序项目-图书管理系统收藏 #include"stdio.h"#include"stdlib.h"#include"windows.h"#include"string.h" /*图书相关信息*/struct bookinf //定义图书相关信息结构体{ int num; char bname[20]; char wname[10]; char clanum[14]; char pubcom[10]; char pubtime[10]; float price;}; structmanage //定义管理员相关信息结构体{ char manage_name[10]; char passwordC语言图书馆管理系统
留下你的邮箱。太长了。。 已经发了1、 求c语言程序图书登记管理程序。要求如下急!
#include求图书管理系统C程序! 一定要C或C++ 可用的话加分!
#include
#include
#include
#include "math.h"
//#define m 1
struct Date /*日期结构*/
{
int m_nYear; /*年*/
int m_nMonth; /*月*/
int m_nDay; /*日*/
};
struct Reader /*读者结构*/
{
char num[20]; /*借书证号*/
struct Date bro; /*借出时间*/
struct Date back; /*归还时间*/
};
struct Book /*书本结构*/
{
int m_iBook_Number; /*对应书本号*/
char m_strTitle[150]; /*书名*/
char m_strWroter[150]; /*作者*/
int m_nMoreNum; /*当前在架册数*/
int m_nTotalHoldNum; /*馆藏册数*/
char m_strComment[300]; /*图书简介*/
struct Reader reader[200];
};
struct Info /*借书信息结构*/
{
struct Info *m_pParentPoint; /*前驱结点*/
struct Book *m_pBookInfo; /*对应书本的信息*/
struct Info *m_pSun; /*后继结点*/
};
struct Info *Search(struct Info *bth,int x,int *k,int *flag)
{
struct Info *p=NULL;
/*当前工作指针*/
p=bth; /*每次查询前,将工作指针指向双向链表头部结点*/
*flag=0; /*是否查找到指定书本号的标志,初始化置为0*/
while(p)
{
if(p->m_pBookInfo->m_iBook_Number==x)
{
/*找到相同的书号,置找到的标志*/
*flag = 1;
return p;
}
else
{
/*未找到相同的书号,置未找到标志*/
*flag = 0;
}
if(p->m_pSun!=NULL)
{
p = p->m_pSun;
/*没到双向链表的尾部时,向后移动当前指针*/
}
else
{
break;/*到达链表尾部,跳出循环*/
}
}
return bth;
}
struct Book *InputNode()
{
struct Book *p=NULL;
int i;
p=(struct Book *)malloc(sizeof(struct Book)); /*分配内存*/
system("cls");/*清屏*/
fflush(stdin); /*清除以前的输入*/
printf("\n\t请输入书名: ");
gets(p->m_strTitle);/*从键盘取得书名*/
printf("\n\t请输入作者: ");
gets(p->m_strWroter);/*从键盘取得作者名*/
printf("\n\t请输入当前在架册数: ");
scanf("%d",&p->m_nMoreNum);/*从键盘取得当前在架册数*/
printf("\n\t请输入馆藏册数: ");
scanf("%d",&p->m_nTotalHoldNum);/*从键盘取得当前馆藏册数*/
fflush(stdin);
printf("\n\t请输入本书简介: ");/*从键盘取得本书内容简要介绍*/
gets(p->m_strComment);
/*以上从输入输出设备取得要求的信息*/
for(i=0;i<20;i++)
(p->reader[i]).num[0]='\0';/*初始化书本结构成员的相关读者指针内容为空*/
return(p); /*返回成功插入的一本书信息*/
}
struct Info *Insert_BookInfo(struct Info *bth)
{
int flag,j,k,t;
int y,x,z;
struct Info *p=NULL,*q=NULL,*u=NULL,*s=NULL;
struct Book *r=NULL,*l=NULL;
system("cls");/*清屏*/
printf("\n\t请输入你想上架的书本号: ");
scanf("%d",&x);/*取书号*/
q=Search(bth,x,&k,&flag);/*查找上架的书是否已经上架,返回已经找到的书的信息*/
if(flag==1)
{/*查找成功,存在此书*/
printf("\n\t当前存在这本书%d本,您想再增加一本<<%s>>书?(y/n)\n",q->m_pBookInfo->m_nTotalHoldNum,q->m_pBookInfo->m_strTitle);
z=getch();
if(z=='y'||z=='Y')
{/*确认上架另一本书*/
printf("\n\t本馆此书一共有: %d 本",q->m_pBookInfo->m_nTotalHoldNum);
printf("\n\t并且有: %d 本在图书馆中内未借出.",q->m_pBookInfo->m_nMoreNum);
q->m_pBookInfo->m_nTotalHoldNum++;
q->m_pBookInfo->m_nMoreNum++;
printf("\n\t上架后一共有: %d 本",q->m_pBookInfo->m_nTotalHoldNum);
printf("\n\t上架后当前有: %d 本在图书馆中.",q->m_pBookInfo->m_nMoreNum);
}
return(bth);
}
r=InputNode(bth); /*成功插入书本信息,指针r存放刚刚插入的书本*/
if(bth==NULL)
{
/*指针bth为空时,表示当前链表为空,此时需要单独处理,即链表头内存分配*/
bth=p=(struct Info *)malloc(sizeof(struct Info));/*申请内存*/
r->m_iBook_Number = x;/*将书号存入书本信息结构体*/
p->m_pParentPoint= NULL;/*前驱结点置空*/
p->m_pSun=NULL;/*后继结点置空*/
p->m_pBookInfo=r;
return(p); /*返回新成功插入的书本结点*/
}
else
{
/*说明已经有头指针,则在此开始处理新插入的结构体指针*/
p=NULL;
p=bth;
while(p->m_pSun!=NULL)
{
p = p->m_pSun;/*当后继结点不为空时,表示还未到链表尾部*/
}
/*当循环结束后,p指向的就是最后一个结点*/
q=(struct Info *)malloc(sizeof(struct Info));/*申请内存*/
r->m_iBook_Number = x;/*将书号存入书本信息结构体*/
p->m_pSun = q; /*双向链表的前驱与后继结点链接*/
q->m_pParentPoint= p;/*前驱结点置为p*/
q->m_pSun=NULL;/*后继结点置空,相当于电线接地*/
q->m_pBookInfo=r;/*指向新插入的书本信息结构体*/
}
return(bth);
}
struct Info *Delete_BookInfo(struct Info *bth)
{
int flag,j,k,t;
int x,y;
struct Info *u=NULL,*s=NULL,*p=NULL,*q=NULL;
struct Book *bookinfo=NULL;
struct Info *BookLeftPoint=NULL;/*前驱结点*/
struct Info *BookRightPoint = NULL;/*后继结点*/
system("cls");/*清屏*/
printf("\n\t请输入你想下架的书本号: ");
scanf("%d",&x);/*接受输入*/
q=Search(bth,x,&k,&flag);/*查找指定的书是否存在*/
if(flag==0)
{ /*书本不存在是,直接输出消息并返回*/
printf("\n\t这本书不存在!\n");
return(bth);
}
else
{
if(q==NULL)
{
printf("未知错误");
return bth;/*确保当前工作指针是有效的,防止出现非法操作*/
}
else
{
bookinfo=q->m_pBookInfo;
printf("\n\t想下架的书本信息: ");
printf("\n\t书名: %s",bookinfo->m_strTitle);
printf("\n\t作者: %s",bookinfo->m_strWroter);
printf("\n\t当前在架册数: %d",bookinfo->m_nMoreNum);
printf("\n\t馆藏册数: %d",bookinfo->m_nTotalHoldNum);
printf("\n\t本书简介: %s\n",bookinfo->m_strComment);
/*删除指定的书本信息的思路:设当前找到的链表中的结点是q,它的前驱为q-1,后继为q+1,
则,只需要作三部操作:
1.将要删除的结点的后继结点的前驱指针域指向要删除的结点的前驱结点
2.将要删除的结点的前驱结点的后继指针域指向要删除的结点的后继结点
3.释放要删除的结点的书本信息域的内存,释放要删除的结点的内存
需要注意两个特殊结点:要删除的结点是首结点或尾结点时,需要分别判断处理*/
if(q->m_pParentPoint!=NULL && q->m_pSun!=NULL)
{
/*夹在链表中间的结点*/
BookLeftPoint = q->m_pParentPoint;/*要删除的结点的前驱指向赋给前驱结点指针变量*/
BookRightPoint = q->m_pSun;/*要删除的结点的后继指向赋给后继结点的指针变量*/
BookLeftPoint->m_pSun = BookRightPoint;/*将后继结点指针指向的地址作为前驱结点中新后继域*/
BookRightPoint->m_pParentPoint = BookLeftPoint;/*将后继结点指向的前驱域设定为要删除的结点的前驱结点*/
q->m_pParentPoint = NULL;
q->m_pSun = NULL;
free(q->m_pBookInfo);/*先将书本信息结构体的内存释放*/
q->m_pBookInfo = NULL;/*使指针指向安全地址*/
free(q);/*将要删除的借还书信息结构体指针使用的内存空间释放*/
q = NULL;/*要习惯将动态分配的内存在使用后动态释放,并将指针域指向空*/
return bth;/*返回首结点*/
}
else if(q->m_pParentPoint==NULL)
{
/*首结点的前驱为空,这里处理首结点删除操作*/
if(q->m_pSun==NULL)
{/*前后指针域均为空时,说明只有一个结点,此时只需要将此结点删除*/
free(q->m_pBookInfo);
q->m_pBookInfo = NULL;
free(q);
q = NULL;
return q;
}
bth = q->m_pSun;
bth->m_pParentPoint = NULL;
/*要删除的结点的后继指向赋给后继结点的指针变量*/
BookRightPoint = q;
BookRightPoint->m_pParentPoint = NULL;/*将链表中指向首结点的后继指针的前驱指针域置为空,表明是新的首结点*/
BookRightPoint->m_pSun = NULL;/*将链表中指向首结点的后继指针的前驱指针域置为空,表明是新的首结点*/
free(BookRightPoint->m_pBookInfo);/*先将书本信息结构体的内存释放*/
BookRightPoint->m_pBookInfo = NULL;/*使指针指向安全地址*/
free(BookRightPoint);/*将要删除的借还书信息结构体指针使用的内存空间释放*/
BookRightPoint = NULL;/*要习惯将动态分配的内存在使用后动态释放,并将指针域指向空*/
return bth;/*返回首结点*/
}
}
}
}
void Output_BookInfo(struct Info *bth)
{
struct Info *q=NULL;
struct Book *p=NULL;
int k=0;
int x=0;
int flag=0;
system("cls");
printf("\n\t请输入你想查找的书本号: ");
scanf("%d",&x);
q=Search(bth,x,&k,&flag);
if(flag==1)
{
p=q->m_pBookInfo;
printf("\n\t书名: %s",p->m_strTitle);
printf("\n\t作者: %s",p->m_strWroter);
printf("\n\t当前在架册数: %d",p->m_nMoreNum);
printf("\n\t馆藏册数: %d",p->m_nTotalHoldNum);
printf("\n\t本书简介: %s\n",p->m_strComment);
}
else printf("\n\t这本书不存在!");
}
void TurnBack_TheBook(struct Info *bth)
{
struct Info *q=NULL;
struct Book *p=NULL;
int i,k, x, flag,t,j;
int year,month,day,d;
float pay;
char temp[20];
system("cls");/*清屏*/
printf("\n\t请输入归还的书本号: ");
scanf("%d",&x);
q=Search(bth,x,&k,&flag); /*书本查找*/
if(flag==1)
{/*找到本书*/
p=q->m_pBookInfo;
printf("\n\t你想归还这本书 ?(y/n)");
printf("\n\t书名: %s",p->m_strTitle);
printf("\n\t作者: %s",p->m_strWroter);
printf("\n\t当前在架册数: %d",p->m_nMoreNum);
printf("\n\t馆藏册数: %d",p->m_nTotalHoldNum);
printf("\n\t本书简介: %s\n",p->m_strComment);
t=getch();/*接受选择*/
if(t=='y'||t=='Y')
{/*确认归还这本书*/
if( (p->m_nMoreNum) >=(p->m_nTotalHoldNum) )
printf("\n\t想再上架一本书吗 ??\n");
else
{
system("cls");
printf("\n\t请输入借书证号: ");
scanf("%s",temp);
j=0;
for(i=0;i<20;i++)
{
if(! (strcmp(temp,(p->reader[i]).num))) {j=1;break;}
}
if(j==0) {printf("\n\t你不能借这本书。");return;}
printf("\n\t今天是:");
printf("\n\t年: ");
scanf("%d",&year);
printf("\t月: ");
scanf("%d",&month);
printf("\t日: ");
scanf("%d",&day);
d=0;
if(year<(p->reader[i]).back.m_nYear) d=1;
if(year<=(p->reader[i]).back.m_nYear && month<(p->reader[i]).back.m_nMonth) d=1;
if(year<=(p->reader[i]).back.m_nYear && month<=(p->reader[i]).back.m_nMonth && day<(p->reader[i]).back.m_nDay) d=1;
if(d==0)
{/*超过还书日期,在此还书*/
system("cls");
pay=(year-(p->reader[i]).back.m_nYear)*365+(month-(p->reader[i]).back.m_nMonth)*30+(day-(p->reader[i]).back.m_nDay);
printf("\n\t你的借书日期是: %d-%d-%d",(p->reader[i]).bro.m_nYear,(p->reader[i]).bro.m_nMonth,(p->reader[i]).bro.m_nDay);
printf("\n\t你的还书日期是: %d-%d-%d之前",(p->reader[i]).back.m_nYear,(p->reader[i]).back.m_nMonth,(p->reader[i]).back.m_nDay);
printf("\n\t今天是 %d-%d-%d",year,month,day);
printf("\n\n\t因此你超出借期,");
printf("\n\t应该支付%2.1f 元罚款.",0.1*pay);
}
(p->reader[i]).num[0]='\0';
p->m_nMoreNum++;
printf("\n\t你已经归还了这本书.");
}
}
}
else printf("\n\t你不能归还不存在的一本书!!!");
}
char Select_Menu()
{/*主菜单显示函数*/
system("cls");
printf("/******************************************\\\n");
printf("* *\n");
printf("* 图 书 馆 管 理 系 统 *\n");
printf("* 主菜单 *\n");
printf("* *\n");
printf("* 1. 图书上架 *\n");
printf("* 2. 图书下架 *\n");
printf("* 3. 查找图书 *\n");
printf("* 4. 图书出借 *\n");
printf("* 5. 图书归还 *\n");
printf("* 6. 退出系统 *\n");
printf("* *\n");
printf("* 请选择菜单项:(1~6) *\n");
printf("\\******************************************/\n");
return getch();
}
void main()
{
char c,t;
int flag,p=1;
struct Info *bth=NULL;
while(1)
{
c=Select_Menu();
printf("您选择了:%c",c);
getch();
switch(c)
{
case '1':
bth=Insert_BookInfo(bth);/*图书上架*/
break;
case '2':
bth=Delete_BookInfo(bth);/*图书下架*/
break;
case '3': Output_BookInfo(bth);/*查找图书*/
break;
case '4': Borrow_TheBook(bth);/*图书出借*/
break;
case '5': TurnBack_TheBook(bth);/*图书归还*/
break;
case '6':
case '0': system("cls");
printf("\n\t你想退出系统 ?(y/n)");
t=getch();
if(t=='y'||t=='Y') exit(0);
break;
}
printf("\n\t按任意键返回主菜单....");
getch();
}
}
标签:信息技术 编程 C语言 图书馆管理系统 C(编程语言)
相关文章
- 详细阅读
- 详细阅读
-
同花顺软件编程最后一句总是缺少详细阅读
求大神解答,通达信公式转同花顺不能用,提示:最后一行缺少 数字、变量、常量或函数名同花顺不支持数据引用,该公式无法在同花顺使用。
要改的话,需要将里面的引用数据,全部的代码做 -
有七星虫编程软件吗详细阅读
伏魔记怎么用程序改成自己喜欢的形式?1。你用这个攻略打应该不费劲,武器,金钱,都很好得,就像里面说的弯月刀投掷,灵芝草转卖,富贵珠都很好 2。不然就下一个RPG开发软件,简单加密的游
-
C语言一个小问题详细阅读
C语言一个小问题区别:一个是指向结构体变量的指针,一个是指向整形变量的指针。详细说明如下:struct student *p指向结构体变量的指针:struct 结构体名 *结构体指针变量名
运行结 -
计算机基础是C语言的前导课程吗详细阅读
学习计算机应该按照哪个顺序来学习?计算机专业学习顺序如下:
先学习C语言,再学习数据结构,算法,接下来学习计算机网络、计算机组成原理,最后学习操作系统。
1、大一:C语言,C++,离散数 -
c语言不报错但没有输出详细阅读
编写C语言无错误却无法输出?不是没有错误,只是没有语法上的错误,所以编译是通过了。如果是“没有错误”,那么就有输出,而且答案是正确的。 下面是修改后的程序: #include int main
-
现在少儿学编程,选哪个机构好啊?详细阅读
儿童编程哪家培训机构好儿童编程童程童美比较好。
童程童美成立于2015年,达内教育集团(股票代码:TEDU)旗下,专注于中国3-18岁青少儿编程教育,研发出针对中国儿童的编程教育体系,涵 -
程序题使用C语言作答在线等详细阅读
c语言程序解答(在线等)?根据题意:1、项目序号应为唯一值,用自增变量填充。2、时间使用struct tm结构体(考虑如需时间运算,可使用相关函数)。3、自定义结构类型SIINFO,分别实现插入链
-
麻烦c语言的大佬们看看这个流程图详细阅读
流程图 是什么意思啊?同学你好,很高兴为您解答! 流程图(Flow Chart):使用图形表示算法的思路是一种极好的方法,因为千言万语不如一张图。流程图在汇编语言和早期的BASIC语言环境
