本站提倡有节制游戏,合理安排游戏时间,注意劳逸结合。

【影院app源码】【皇冠指标源码】【食堂外卖源码】出入库扫码系统源码_出入库扫码系统源码怎么弄

2024-11-16 09:44:54 来源:时尚 分类:时尚

1.�����ɨ��ϵͳԴ��
2.有哪些快速开发平台或者零代码开发平台
3.图书馆借阅系统源代码

出入库扫码系统源码_出入库扫码系统源码怎么弄

�����ɨ��ϵͳԴ��

       新运营级限速网盘系统网站源码提供安全可靠的出入网盘分享平台,支持微信扫码登录,库扫自定义文件分享链接,码系码出一键保存至网盘,统源兼容微信、入库支付宝官方接口。扫码影院app源码

       搭建系统后,系统立即更改后台密码以确保安全。源码若需修改登录用户名,出入请数据库操作,库扫进入sk_users表进行修改。码系码出

       系统运行环境包括Nginx 1..2、统源PHP-7.2-7.3、入库phpMyAdmin 4.0、扫码MySQL 5.6.。系统

       设置伪静态和运行目录为public。创建数据库导入数据,解压源码至根目录,修改/config/database.php文件以匹配自身数据库信息。

       后台访问域名/admin.php,账号:admin,密码:airymz。完成微信扫码登录配置,点击系统设置-注册访问,设置对应参数,确保公众号为认证服务号。

       具体步骤如下:

       1. 创建数据库,导入数据。

       2. 解压源码至根目录,修改数据库配置文件。

       3. 访问后台,账号密码登录。

       公众号认证服务号对于微信扫码登录至关重要。本文来源:thatcloud.cn/archives/1...

       版权所有声明:除非特别标注,所有内容均为本站原创,转载时请提供链接形式的出处。

有哪些快速开发平台或者零代码开发平台

       什么是零代码应用开发平台

       尽管市场上也把建站、网店开发、小程序开发等免代码服务也称为零代码开发,但因为这些平台面向的是特定的目的,服务一个专有的范式,所以一般不将他们划入零代码平台的范畴之内。真正的零代码开发平台面向的是广泛和多样的需求,在设计aPaaS产品的时候,并不确定一个特定的用户会用它来搭建什么应用。

       当然,虽说面向的皇冠指标源码需求是广泛的,也不代表aPaaS是万能的。零代码开发几乎都是面向企业应用世界,而很难扩展到消费者应用领域,比如游戏、社交、工具软件等必然长期属于原生开发的世界。

       所以,零代码应用开发平台需要一个比较准确的定义。它是指围绕企业数据和业务管理需求,通过可视化方式设计数据结构,用户交互形式、设置访问权限和定义工作流程的平台。你会发现,即使是原生开发企业软件,大体也是按照以上这几个步骤来进行的。

       我用一个相对完整的列表,将零代码开发平台的能力元素和特性描述如下:

       1)可视化构筑业务对象数据表(Entity),并支持建立关联。甚至需要支持跨应用的数据表关联。(这是aPaaS未来可能胜出其他方案的关键优势)。

       2)为不同的数据场景配置不同类型的视图(View),能够定义数据行和列的过滤,能够设置列表、看板、日历等不同界面形式。

       明道云构筑的销售应用数据视图

       3)能够定义不同用户角色(Role),并赋予角色不同的数据访问和改写权限(PermissionSet)。权限定义越精细越好。

       明道云构筑用户角色和权限组合的界面

       4)能够建立针对数据的汇总表和统计图表(Report)

       5)能够建立自定义的输入表单(Form),分发给不同角色使用。

       6)能够建立自定义的打印报表(FormReport),用于输出各类形式表格,通过Email,短信发送或者打印。

       7)能够管理企业用户、部门、组织结构,并将其用于应用逻辑关系,比如应用的分发,角色的赋予和工作流中的流向信息。

       8)能够可视化配置工作流(Workflow),支持特定条件下的数据新增,改写,删除等操作,并能够融入数据填写,审批等人工流程节点。食堂外卖源码工作流的运行能够监控和保存日志。

       明道云构筑审批工作流的界面

       9)应用能够封装后分发(Distribution)给不同的用户。

       )面向企业内部个人用户的工作台,仪表台等特性,实现个性化使用。

       不同的aPaaS产品会有不同的特色和侧重点。所以以上特性并不一定存在于每一个aPaaS产品中。但是,特性越完整的,就越接近一个典型意义上的零代码企业应用开发平台。在以上实现中,有纯粹的零代码模式,也有个别需要用低代码方式来降低产品复杂度,但同时也会让非技术人员难以上手。

       所以,aPaaS是SaaS应用和开发工具的混合,说它是SaaS,是因为开发者和终端用户使用的是同一个产品,只是通过权限和分发关系让界面千人千面。说它是开发工具,是因为它用模型模拟的应用搭建思路和原生数据库应用开发是类似的。

       软件的应用特点和二次开发能力共存也不是一个新鲜事物。用Excel软件构筑一个个人所得税计算器,让用户可以输入自己的工资,即可得到应缴税额,对于使用者来说是应用,对编制这个Excel文件的人来说是开发工具,但他们用的都是Excel。

       为什么企业软件领域可以实现零代码开发

       为什么游戏和社交软件做不到零代码开发,而企业软件市场却出现了零代码工具是因为企业软件的开发比较简单吗

       当然不是。能够模式化完成一个工作的原因在于这项工作具备可重复性,就像我们会用3D打印制作一两件零件,但如果要生产成千上万个同样的零件,我们宁可花费成本先去制作模具。企业软件可以模式化开发的原因就在于大多数企业管理软件都由非常类似的需求和实现方式来构成,如果不积极利用这些相似性和模型化方法就需要不断重复发明类似的轮子。

       当然也并非所有的企业应用都有相似性。在特定行业和职能中总有一些需要专门化设计和开发的应用。但在企业的运营全流程中,围绕客户,供应商,销售订单,产品,供应商,采购订单,制造流程,智影源码服务流程等商业对象,企业软件要解决的问题具有很强的相似性。这些相似性,或者使用范式可以被概括为以下环节:

       1)围绕上述商业对象(BusinessObjects)的数据搜集和存储,并对数据的有效性进行验证。例如:建立一个采购订单,向特定供应商采购三项商品。

       2)数据的查询和呈现。例如:运营部门查询处A仓库在今天应该到货的采购订单。财务部门查询货物已经收讫,并且应该在本周付款的采购订单。

       3)数据的计算。例如:当采购订单的货物到达特定仓库后,更新相关商品的库存信息。

       4)流程的控制。例如:当起草采购订单并准备发出时,根据采购的类别和金额发起不同的审核流程,在审核通过或者拒绝后执行不同的流程内容。

       5)信息通知。例如:在采购订单批准后,自动生成采购单并发送给供应商,并通知仓库准备收货。

       6)数据的统计和分析。例如:汇总过去一年的采购订单中按照BOM清单的产品金额分布,或者按照供应商的分布。

       企业软件的设计和开发人员对以上这些使用范式都非常熟悉,它们经常出现在各种企业软件的开发需求中。实际上,除了以上抽象出的范式,企业软件的其他独特功能点并不太多了,甚至很多属于所有企业级软件共有的模块,比如管理用户和用户组,权限角色等。正是因为这个原因,企业软件的开发存在高度模型化的可能,从而在大部分场景下,摆脱对原生代码开发的依赖。

       在云时代之前,除了Access以外,苹果公司也有FileMaker,Intuit公司也曾经开发过Quickbase(这个名字来源于Intuit公司财务软件产品Quicken),Quickbase后来被剥离,一直到今天都在提供服务。即使在原生开发领域内,企业软件市场也出现了各种现成的开发框架,它们和今天的贵州溯源码零代码平台一样,都是为了通过模型化来提高交付效率和质量的办法。

       为每个企业的软件需求,都从第一行代码开始写起,单独依靠某种高级语言和集成开发环境建立开发项目,这种做法已经越来越没有必要。正如Gartner的预测,大部分的企业应用将来都会依赖零代码平台,以至于不远的将来,零代码平台并不会刻意保留这个前缀,因为这将成为天经地义的事情,这就像今天为了满足一个通用需求,大多数企业不会去定制开发,甚至零代码平台都不会用,而是直接使用一个标准的SaaS产品。

       为什么aPaaS具有难以替代的优势

       用户开始选择aPaaS产品,不仅仅是因为他们可以这样做,更重要的是因为不得不这样做。因为aPaaS与定制开发,以及标准SaaS产品相比有几个难以替代的优势。

       1)满足企业的多样化需求

       企业软件需求的多样化是定制开发模式的起源。虽然标准SaaS产品能够满足企业应用需求中的共性部分,但是因为行业、规模和产品内在特性的差异,每个企业的管理方式和流程都有自己的特点,而且它还会根据企业的规模阶段不断演变。这种差异在不同职能中程度不一,一般来说,围绕产品设计、制造和服务履行的核心业务流差异度更高,而人事,财务等价值创造的支持环节差异度比较小。

       在这种背景下,用户始终在寻求一种既能保持足够的灵活性,又能够控制开发的成本和复杂度的方法。aPaaS基本就是直接针对这个问题而诞生的。

       2)从定制开发中需求沟通的痛苦中解脱

       企业软件实现过程中的第一痛点还不是贵,而是需求沟通的复杂。有业务需求的人不是开发软件的人,能够开发软件的人对业务痛点并没有切身的体会和经验。于是行业非常依赖专业的企业软件需求分析和实现方法设计能力,但这个能力是非常稀缺的资源。这也难怪企业软件开发需求的提出主体总是五花八门的,他们之间也需要进行复杂的沟通和信息汇总。

       更要命的是,很多时候需求在实施之前都无法%确定,企业自己无法提出一个完整的解决方案。这时候,要么需要求助于咨询机构这样的外脑,要么就只能走一步看一步。这两个方案听起来都不令人舒适。前者绝非普通中小企业所能够承受,后者可能会影响系统的开发和实施质量。

       aPaaS的出现倒是让走一步看一步的方案变得更加现实。企业可以通过零代码平台渐进地开始实施。如果整个系统过于复杂,可以先从一个具体的环节开始,局部数字化(比如先把订单管起来)。反正用aPaaS搭建的速度足够快,用户甚至可以利用零代码工具来生成企业应用原型,在实际使用中进行验证,确认了终端用户可以掌握,原先识别的问题可以被有效解决之后,再继续推进更完整的实施。

       可以这么说,零代码工具可以让开发者和使用者之间的距离充分缩短。在极端情况下,使用者甚至可以自己就是搭建开发者自己。他们可能在一两个小时的搭建后就能够确认这个方案是不是能够有效地解决问题。

       3)在企业内部打通数据中台的需求

       在企业IT中,还有一个致命痛点存在,那就是不同业务系统之间的数据相互隔离,不能综合使用,使得企业难以进行跨职能的数据相关性和因果分析,也难以实现跨职能的数据自动化。比如要分析一个价格调整措施对财务报表的影响,这个工作在任何一个孤立的信息系统中是无法完成的,而如果要做到,就至少需要从采购,销售,营销和财务系统中获得数据。同样的道理,企业也很难在遇到财务目标无法达成的情况下,自动做出最优的价格决策。这些都是影响企业运营水平至关重要的问题。近年来,Gartner提出的PacedLayer架构,以及阿里给电商企业提供的中台方案就是针对这种需求的反馈。

       大企业当然可以投入专门的资金来打造数据中台性质的系统,但小企业支付不起,并不代表他们不想获得这样的能力。aPaaS平台提供了这个可能性。

       首先,因为aPaaS平台管理数据的模型一致,所以它一般能够提供一个标准化程度非常高的编程接口,从外部系统汇合数据变得相对容易很多,这就像路由器一样,不管你有多少联网设备,它们都可以用统一的协议连接在一起。有了集中的数据,各种应用需求都变得容易兑现。哪怕个别系统依然需要通过抽取数据服务后另行原生开发,也比不断重复做数据整合工作要高效很多倍。

       甚至,如果用aPaaS平台直接管理业务数据对象,这个数据整合工作都可以免除。用户可以直接在各个职能相关的数据对象中建立关联,建立汇总查询,批量抽取数据到BI平台,建立不同数据之间的自动化。

       有关企业数字中台的介绍,建议可以读一下这篇采访文章。

       4)突出的成本和效率优势

       零代码开发平台和原生代码开发相比到底能够提高多少效率目前还没有精确的计量,但这个效率差至少是倍以上。传统开发模式需要天的,aPaaS一天之内就能够搞定。

       更重要的效率差别不仅仅是时间,还包括零代码平台可以免除专业技术人员的参与。虽然它要求搭建者熟悉业务,完成基本的逻辑梳理,但毕竟这和动辄需要和好几位技术人员一起开会沟通需求要高效得多。即便在复杂的应用系统上,也至多只需要2-3人分工就能够完成整个项目的实现。因为简化协作的原因带来的成本节省甚至都不值十倍了。因为所有人都知道找到靠谱的定制软件开发团队几乎就是一件撞大运的事情。

       同时,定制开发通常很难提供高品质的软件。软件运行的可靠性,缺陷消除的程度都很难和标准化产品相比,毕竟定制软件只有一个用户。而一个aPaaS平台不仅要同时服务很多终端用户,还要服务五花八门的应用搭建者,它能够做到一次对,次次对;一次缺陷消除,所有用户收益的效果。

       5)开箱即用和自己动手的两全

       和成型的SaaS应用相比,aPaaS看似有一个缺点,就是依然需要“搭建”。这有点像整体家具系统,摆在样品间很好看,但是实际买回家还需要施工人员来拼装才能达到预期的效果。

       实际上,这个问题并不是无解,甚至很好解。aPaaS一开始自然不可能获得各个行业的最佳实践,让每个企业都能够看到“样板间”效果。但是,随着时间的推移,用户企业和集成商的参与,样板间会越来越多,甚至比SaaS产品提供的用例方案更加强大,因为后者提供的是一个固定家具的摆设效果,而前者能够根据不同的房型,提供不同的家具组合方案。

       而且,在足够明确的细分市场下(比如金属加工制造流程管理这样的颗粒度),可以在aPaaS平台上开发出完全开箱即用的应用,直接分发给不同企业使用。有了这个能力,aPaaS不仅能够服务好终端用户,还能够催生集成商工作模式的变革,他们不仅可以通过出售IT服务挣钱,还能够在服务中加入解决方案的价值,消除定制开发成本,大幅提高项目服务毛利。

       有了开箱即用的能力后,就能够大大加速企业采纳的意愿。而且,才采纳以后,“自己动手”的能力依然存在。就像先进的整体家居系统不仅可以组合,而且可以重新组合。企业软件的适用模式永远和企业阶段有关,比如小型制造业并不见得需要质量管理单元,但当年产值突破一亿元左右后,不仅面临ISO认证的刚性需求,也内在地需要引入全面质量管理。这样的企业可以在软件实施后依照实际需要继续调整、改进和增加软件模块。这个过程同样是低成本和高效率的。

       6)平台特征提供的计算能力保证

       对于定制实施系统来说,要分别通过分布式数据库,流式计算等先进技术来克服性能问题是一件极其昂贵的事情。aPaaS平台虽然为用户提供的是一个应用级的产品,但因为它范式统一,就有机会将这些基础计算隐藏起来,让用户不必关心这些后台事务就能够获得高性能的计算服务。通过aPaaS平台管理的数据表无论规模有多大,读写有多么频繁,实时查询的要求有多高,总有一个计算框架可以胜任。这种平台的扩展性让客户可以真正放心,aPaaS带来的不仅仅是开发效率的提升,还包括一个伸缩自如的基础设施服务。即便企业将来的业务规模成长百倍,也不会需要彻底重建IT系统。实际上,年收入数百亿美元的业务,背后驱动的IT平台极有可能就是Salesforce的平台搭建的应用,而不需要是独立建立的应用系统。

       正是因为以上这些优势,aPaaS在没有得到行业命名之前就已经开始逐步渗透到企业IT服务领域。在最近几年正在悄悄替代大量的定制实施软件项目,也让原先依靠标准SaaS产品的企业找到了新的选择。

       aPaaS目前适合什么样的企业

       aPaaS虽然拥有巨大的优势,但也不代表它能够满足所有行业和企业的所有IT需求。下面列出了一些常见的排除项。aPaaS方案对这些性质的需求吸引力不强。

       1)行业有明显的专有特征

       有些行业本身的专有化程度很高,而且企业之间的差异性不大,这时候垂直的行业应用可能更加合理。

       围绕这个特征最典型的例子就是餐饮业和酒店业。所有餐饮业的运营逻辑都是类似的,除了单店和连锁可能使用不同复杂度的方案以外,应用模块都大同小异。而且,这个行业解决问题的方法和范式是有明显的行业特征的,比如餐厅的排队等座系统,点单结账系统等。用零代码工具来构建如此专有的场景反而更加麻烦,而且无法有效提供有行业特色的视图。

       2)行业有独立的代码审计要求

       金融等行业的核心业务系统因为法规等要求不能使用零代码平台,因为它无法满足代码审计的要求。aPaaS平台不一定能够提供源代码给用户企业,而且即使提供,也无法佐证应用系统处理数据的准确性。这些行业因为监管要求高,本身资金也宽裕,所以不会应用aPaaS方案在核心业务环节。

       3)面向顾客的前台系统

       这个当然就是指的电商网店平台了。虽然电商零售的基本数据管理和aPaaS的能力并无太大的距离,但是面向消费者的前台系统一般要求更高的灵活性和营销设施的配套,用零代码平台创建不如直接使用专门的电商系统,比如有赞、微盟等开店方案。它们提供的不仅仅是店面功能,还包括围绕顾客的营销服务和支付平台,这些是aPaaS所不擅长的领域。

       除此之外的大部分企业IT需求,零代码平台都有足够的优势来胜任。而且,随着软件和服务的界限越来越模糊,很难说未来的aPaaS不能扩展它的领地。企业软件的本质就是生产力工具,aPaaS的核心精神就是围绕企业的数字化运营提供高生产力选项。

       读完这段,如果你对零代码平台有兴趣,明道云提供直接的使用体验,你可以自助注册试用。

图书馆借阅系统源代码

       #include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> #include<ctype.h> #define STACK_INIT_SIZE #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 struct student /*定义学生类型,用于存放借出的书籍*/ { int carnum; char lendbook[]; }student[]; struct employ /*定义职工类型*/ { int employnum; char employname[]; int employage; char employsex[2]; char employleve[]; long int employtage; }employ[]; struct book /*定义书的类型*/ { int booknum; char bookname[]; char bookcreat[]; int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/ }book[]; struct car /*借书卡的数据类型*/ { int carnum; char studentname[]; int studentclass; }car[]; huanbook() /*还书函数*/ { FILE *fp,*fp2; /*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/ int i,n; int carnum; char lendbook[]; printf("请你输入你的卡号\n"); scanf("%d",&carnum); fp=fopen("car.txt","r"); /*读取卡号记录*/ for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) /*for循环判断卡号是否存在*/ { if(car[i].carnum==carnum) /*卡号存在,进入下一循环*/ { n=i; fclose(fp); printf("请输入你要还的书的名字\n"); scanf("%s",lendbook); fp=fopen("record.txt","r"); for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) /*判断是否借阅了输入的书*/ { if(strcmp(student[i].lendbook,lendbook)==0) /*借阅了该书,进入下一循环,否则出错显示*/ { fclose(fp); fp=fopen("record.txt","r"); fp2=fopen("bookl.txt","w"); for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) { if(strcmp(student[i].lendbook,lendbook)==0) { continue; /*删除还掉的书的借书记录*/ } fwrite(&student[i],sizeof(struct student),1,fp2); /*写入原来没还的书的记录*/ } fclose(fp); fclose(fp2); fp=fopen("record.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++) { fwrite(&student[i],sizeof(struct student),1,fp); /*将借书记录信息写回*/ } fclose(fp); fclose(fp2); fopen("bookl.txt","w"); /*清临时文件的记录*/ fclose(fp2); fp=fopen("book.txt","r"); fp2=fopen("bookl.txt","w"); for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) /*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/ { if(i==n) { book[i].turefalse=1; fwrite(&book[i],sizeof(struct book),1,fp2); /*将还的书的原来状态设为无人借阅的*/ continue; } fwrite(&book[i],sizeof(struct book),1,fp2); } fclose(fp); fclose(fp2); fp=fopen("book.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) { fwrite(&book[i],sizeof(struct book),1,fp); /*将临时文件写回*/ } fclose(fp); fclose(fp2); fopen("bookl.txt","w"); /*清临时文件*/ fclose(fp2); printf("还书完毕,按任意键返回\n"); getch(); return 1; } } printf("你没有借这样的书,任意键返回\n"); /*出错提示*/ fclose(fp); getch(); return 0; } } printf("系统没这样的卡,和管理员联系,按任意键返回\n"); /*出错提示*/ fclose(fp); getch(); } findbook() { FILE *fp; char bookname[]; int ture,i; fp=fopen("book.txt","r"); printf("请输入你要查找的书名\n"); scanf("%s",bookname); for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) { if(strcmp(bookname,book[i].bookname)==0) { if(book[i].turefalse==1) { printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat); } else { printf("这本书已经有人借出\n");fclose(fp);return 0;} fclose(fp); return FALSE; } } printf("没有你要查询的书籍\n"); fclose(fp); return FALSE; } findbook1() { FILE *fp; char bookcreat[]; int ture,i; fp=fopen("book.txt","r"); printf("请输入你要查找的作者名\n"); scanf("%s",bookcreat); for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) { if(strcmp(bookcreat,book[i].bookcreat)==0) { if(book[i].turefalse==1) { printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat); } else { printf("这本书已经有人借出\n");fclose(fp);return 0;} fclose(fp); return FALSE; } } printf("没有你要查询的书籍\n"); fclose(fp); return FALSE; } lendcount() { FILE *fp; int i,n=0; fp=fopen("record.txt","r"); for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) { printf("卡号:%d 借出的书籍:%s \n",student[i].carnum,student[i].lendbook); n=n+1; } fclose(fp); printf("目前共有%d本书借出\n",n); printf("按任意键\n"); getch(); return n; } chabook() { char ch5; do { printf("---------------欢迎进入图书查询系统!--------------\n"); printf(" 1:<按书名查找>\n"); printf(" 2:<按作者查找>\n"); printf(" 0:<返回>\n"); printf("请输入0--2,其他输入非法!\n"); scanf("%s",&ch5); switch(ch5) { case '1':findbook();getch();break; case '2':findbook1();getch();break; case '0':break; default:printf("无此操作\n");getch();break; } }while(ch5!='0'); return FALSE; } lendbook() { FILE *fp,*fp2; int i,n; int carnum; printf("请你输入你的卡号\n"); scanf("%d",&carnum); fp=fopen("car.txt","r"); for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) { if(car[i].carnum==carnum) { n=i; fclose(fp); printf("请输入你要借阅的书的名字\n"); scanf("%s",student[n].lendbook); fp=fopen("book.txt","r"); for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) { if(strcmp(book[i].bookname,student[n].lendbook)==0) { if(book[i].turefalse==0) { printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;} else fclose(fp); fp=fopen("record.txt","a+"); student[n].carnum=carnum; fwrite(&student[n],sizeof(struct student),1,fp); fclose(fp); fp=fopen("book.txt","r"); fp2=fopen("bookl.txt","w"); for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) { if(strcmp(book[i].bookname,student[n].lendbook)==0) { book[i].turefalse=0; fwrite(&book[i],sizeof(struct book),1,fp2); continue; } fwrite(&book[i],sizeof(struct book),1,fp2); } fclose(fp); fclose(fp2); fp=fopen("book.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) { fwrite(&book[i],sizeof(struct book),1,fp); } fclose(fp); fclose(fp2); fopen("bookl.txt","w"); fclose(fp2); printf("借书完毕,按任意键返回\n"); getch(); return; } } printf("不存在这样的书,任意键返回\n"); fclose(fp); getch(); return; } } printf("你的卡号不存在,请申请新卡,按任意键返回\n"); fclose(fp); getch(); } carcount() { FILE *fp; int i,n=0; fp=fopen("car.txt","r"); for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) { printf("第%d张卡<卡号:%d 姓名:%s 班级:%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass); n=n+1; } fclose(fp); printf("目前共有%d本书\n",n); printf("按任意键\n"); getch(); } delcar() { FILE *fp,*fp2; int i; int carnum; char choice; fp=fopen("car.txt","r"); fp2=fopen("bookl.txt","w"); printf("请输入你要删除的卡号\n"); printf("如果你输入的卡号存在,系统自动删除该信息!如果不存在,系统不做任何改动\n"); scanf("%d",&carnum); for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) { if(car[i].carnum!=carnum) { fwrite(&car[i],sizeof(struct car),1,fp2); } } fclose(fp); fclose(fp2); printf("是否真的要删除该卡?删除后该书籍的所有信息将无法恢复《Y/N》\n"); scanf("%s",&choice); if(choice=='y'||choice=='Y') { fp=fopen("car.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++) { fwrite(&car[i],sizeof(struct car),1,fp); } fclose(fp); fclose(fp2); fp2=fopen("bookl.txt","w"); fclose(fp2); printf("按任意键返回\n"); getch(); return; } else { printf("按任意键返回\n"); getch(); return; } } addcar() { FILE *fp; int i=0; fp=fopen("car.txt","a+"); printf("请你输入卡号\n"); scanf("%d",&car[i].carnum); printf("请你输入学生姓名\n"); scanf("%s",car[i].studentname); printf("请你输入班级\n"); scanf("%d",&car[i].studentclass); fwrite(&car[i],sizeof(struct car),1,fp); fclose(fp); printf("输入完毕,任意键返回\n"); getch(); }

相关推荐
一周热点