日记管理系统
- 格式:doc
- 大小:667.50 KB
- 文档页数:26
毕业设计(论文)个人日记系统的设计与实现论文作者姓名:郑晶晶论文作者专业: 09网络技术指导老师姓名:黄华论文提交日期: 2012-5-15目录摘要 (2)Abstract (3)前言 (3)第一章绪论 (4)1.1 课题简介 (4)1.2 课题研究的意义及方法和步骤 (4)1.2.1 课题研究意义 (4)1.2.2 课题研究方法 (5)1.2.3 课题研究步骤 (5)1.3 IIS的配置 (5)第二章个人日记设计与实现 (6)2.1 需求分析 (6)2.2 个人日记的设计 (6)2.2.1 日记模块的设计 (6)2.3 连接数据库 (82)2.4 结束语 (82)第三章致谢 (83)参考文献: (83)摘要Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。
作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。
据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。
近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户提供的服务将越来越丰富,越来越人性化。
在互联网越来越普及的今天,信息在人家的人常生活中占据了非常重要的地位,网站信息个人日记系统是互联网上一种表达自己内心想法,发表自己对某一件事物的看法和言论的工具。
个人日记系统是基于php和sql server的一种在internet上公开发布的快速更新的个人网站系统。
使用者可以简单快速地完成个人网页的创建、发布和更新,是一个方便的供广大互联网用户交流的平台。
它可以是单用户的,也可以是多用户的,主要包括前台浏览、评论日记功能,后台发表日记的功能、相关的管理功能和修改用户信息等功能。
系统管理软件实习日记
实习日记 - 系统管理软件部门
星期一:
今天是我在系统管理软件部门的第一天实习。
上午,我受到导师的指导,学习了公司的系统架构和运行流程。
下午,我开始独立完成一些简单的任务,如查看服务器运行状态和更新软件版本。
星期二:
我今天学习了如何管理用户权限和配置网络设置。
我也跟随导师一起参与了一个紧急的故障排查工作,学到了很多实际操作经验。
星期三:
今天我开始进行一项重要的项目,需要对公司的系统进行升级和优化。
我花了大部分时间阅读文档和学习相关知识,准备着手实施。
星期四:
在项目进行过程中,我遇到了一些困难,导致系统出现了一些不稳定的情况。
我及时向导师汇报,一起分析问题的原因并找到解决方案。
通过这次经历,我学会了及时沟通和团队合作的重要性。
星期五:
项目终于完成了,公司的系统运行稳定且效率提升了。
导师对我的工作进行了肯定,并鼓励我继续努力学习和提升自己。
我感到很有成就感,也更加对系统管理软件这个领域充满热情。
总结:
这一周的实习经历让我收获颇丰,不仅学到了很多专业知识和技能,也体会到了实际工作的挑战和乐趣。
我会继续努力,为公司的发展贡献自己的力量。
⽇清管理⽅法(pizhu)⽇清管理⽅法OEC管理法,⼜称为“⽇清管理法”,是海尔多年的经验总结出来的⼀套系统、科学、规范的基础管理⽅法,是海尔多年来能够保持⾼速、稳定发展的基⽯。
1995年获“国家级企业管理现代化创新成果”⼀等奖。
受到党和国家领导⼈的⾼度评价并在全国推⼴。
⽇清⽇⾼管理法分三个系统,第⼀个系统是⽬标系统。
每个企业都有⾃⼰的⽬标,到年底都要进⾏⽅针⽬标分解。
海尔在分解⽬标过程时坚持这样的观点,不超过竞争对⼿的⽬标毫⽆意义。
也就是说我们定⽬标的时候。
看竞争对⼿的⽬标有多⼤,我们和他有多⼤的差距,我们怎么样迎头赶上去。
在这个⽅⾯,我们是借鉴了西⽅的做法,他们是⾃⼰的今天跟别⼈的今天⽐,发现⾃⼰有很⼤的差距。
我们中国的传统⽂化是⾃⼰和⾃⼰⽐,我⾃⼰的今天同昨天⽐,是⼀个纵向的⽐较,发现⽐昨天有提⾼,明年⽐今年我⼜更有所进步,往往容易满⾜。
⾃⼰跟⾃⼰⽐,很难在短时间内赶超世界先进⽔平。
我们海尔的⽬标⼀旦确定,层层分解,⼀直到每个⼈。
⽬标⼀旦确定,各级领导会花百分之⼀百⼆⼗的⽓⼒,抓⽬标的实现。
你说领导层⽤百分之百的⽓⼒抓不⾏吗?⽬标有⼀个衰减效应,你花百分之百的⽓⼒,⽬标有衰减,最后也可能完成百分之⼋⼗。
有这么⼀排⼈,我是第⼀个,我趴到第⼆⼈的⽿朵上说⼀句话,不让第三个⼈听到,第⼆个⼈知道后再到第三个的⽿朵上说,传到第⼗个⼈,你问⼀问你听到⼀句什么话,这话衰减的不象样了。
假如有这么⼀段话:⼀只鸟从天空中飞过,鸟粪落在⼀个步⾏者头上。
他的第⼆个⼈怎么说:⼀架飞机扔下⼀枚炸弹,将⼀个步⾏者炸死了。
语⾔的衰减就这样,⽬标的衰减也类似于语⾔的衰减。
所以我们各级领导必须⽤百分之⼀百⼆⼗的⽓⼒抓⽬标,以确保⽬标完成100%。
在海尔,⽬标就是军令状,考核起来是相当严格的。
⽇清控制系统是⽬标系统的⽀持系统。
打个⽐⽅这⼀个杯⼦吧,杯盖就是⽬标系统,盖要是别掉下来呢,必须有杯⽀持它。
那么杯体就是⽇清控制系统。
第⼆个系统是控制系统。
个人信息管理系统需求规范说明书文档编号:PIMS_1.1版文档名称:个人信息管理系统审核批准:创建时间:2012.3.27 审核人签字:____________需求规范说明书个人信息管理系统目录1 引言 (3)1.1 编写目的 (3)1.2 背景 (3)1.3 定义 (3)1.4 参考资料 (3)2 任务概述 (4)2.1 目标 (4)2.2 用户特点 (5)3 功能需求 (5)3.1 系统界面 (5)3.1.1 注册管理 (5)3.1.2 密码管理 (5)3.2 目标管理 (6)3.2 日程任务 (6)3.3 个人理财 (6)3.4 理财规划 (7)3.5 人脉管理 (7)3.6 知识管理 (8)3.7 日记管理 (8)3.8 微记管理 (8)3.9 公共管理 (8)3.10 系统管理 (8)4 性能要求 (9)4.1 精度要求 (9)4.2 时间特性要求 (9)4.3 灵活性 (9)5 输入输出格式要求 (9)6 数据管理能力要求 (10)7 故障处理能力要求 (10)8 其他专门要求 (10)9 运行环境规定 (10)1引言《个人信息管理系统需求规范说明书》旨在详细描述系统功能需求和一些非功能需求,明确系统需求边界。
对系统开发进一步详细的说明,为总体设计打下基础,更能满足客户需求。
通过对系统的详细说明,使用户和系统开发者对系统有一个共同的了解。
1.1编写目的《个人信息管理系统需求规范说明书》的目的是明确《个人信息管理系统》的各项功能和非功能的需求,确定系统功能模块。
同时为概要设计和详细设计人员提供设计依据,其他本项目组的开发人员也可参阅。
《个人信息管理系统需求规范说明书》的阅读对象为:1)对相关业务技术和总体方案作出决策的管理人员和质量管理人员;2)对本《需求规范说明书》进行评审和确认的有关业务、技术人员;3)参加概要设计和详细设计阶段工作的全体设计人员;4)《个人信息管理系统》项目组,其他有权需要调用本文档的人员1.2背景开发软件的名称:个人信息管理系统项目任务提出者:郑州大学软件学院教师宋玉项目开发者:郑州大学软件学院工程专业2010级:杨永生、王栋、王东旭、黄海、尤欣欣、胡洁、刘晴;用户:公司人员、国家公民;实现软件者:本小组项目与其他软件、系统关系:银行支付系统(软件开发完成后投资方支付给开发方报酬);求职人员与招聘公司信息数据库1.3 定义PIMS:Personal Information Management System是个人信息管理系统。
产业园区信息化服务平台建设实施方案-- -*****产业园区息化效劳平台建立案前言产业园区是产业集群开展的有效途径,是推动全省经济开展的重要支撑点,因此加快产业园区开展,是我省实施"以产业化带动经济开展〞战略的迫切要求。
加快产业园区息化建立,构建互联互通、资源共享的息资源网络,以息化带动产业化是加快产业园区开展的重要容,产业园区息化建立是我省实现快速经济开展的重要手段。
电于2007年开场协助省经委建立产业园区息化平台,省产业园区息化平台由省级平台、园区级平台和企业级平台三级组成,利用息共享平台整合园区息、园区企业息,并且构建相互的息交换和工作管理通道,从而形成整体的息优势和有序工作管理机制。
电愿意利用资金、技术、网络、运行、管理、效劳上的优势,本着效劳政府的宗旨和"稳妥、规、高效〞的原则及双赢的合作模式,与****工业园区管委会强强联手、加深合作、携手加速推进****工业园区整体息化进程!-.专业文档.-第一章产业园区息平台建立目的1、以现代息和网络技术为手段,借鉴成熟的产业园区息化建立经历和模式,构建高水平复合式产业园区息化根底技术平台和立体式息效劳体系,加快产业园区息化的进程,以息化带开工业化,有效提高产业园区及入住企业的息化水平,提升管理能力和竞争力,促进全市产业园区的整体开展。
2、加强园区平安管理,促进园区安康、快速地开展,通过息平台将财产园区形象向全球宣传展示,各级领导实时掌握园区及企业建立、重点工程进度等情形。
3、结合当地政府政策和电成熟的网络和丰富的各种资源,同时聚积社会其他先进的软件系统,构建面向财产园区和入住企业的息化共用技术及通用根底管理平台。
4、本着政府指导、园区管理、市场运作的原则,利用先进理念和技术,将产业园区和入住企业在息平台上进展整体包装和推介,集中打造具有独特影响力和特色功能的国先进息平台。
5、充分利用电的资源、技术、效劳等优势,大幅度降低园区和入住企业实施息化的本钱和门槛。
个人信息管理系统1.总体分析1.1业务流程分析用户需要使用账号与密码通过登陆页面登陆个人信息管理系统,新用户可注册新账号登陆。
登陆后进入系统主窗体,可对个人信息管理、备忘录管理、通讯录管理、日记管理、财务管理进行操作。
退出系统时返回登陆页面。
1.2系统功能分析个人信息管理系统主要由:个人信息管理、备忘录管理、通讯录管理、日记管理、财务管理等模块组成。
进入该系统后,用户可以对系统中的信息进行添加、修改、删除和查询等操作。
包括以下功能:1)通讯录信息:包括通讯人姓名、联系方式、工作地点、城市、备注等。
2)备忘录信息:包括什么时间、事件、地点等。
3)日记信息:包括什么时间、地点、事件等。
4)个人财物管理:包括总收入,消费项目、消费金额、消费时间、余额。
每个用户可以自己注册一个用户名,对自己的个人信息进行独立的管理。
2.系统总体设计2.1个人信息管理系统业务流程图如图2.1所示2.2个人信息管理系统功能结构图如图2.2所示2.1系统业务流程图3 .系统数据库设计在需求分析阶段已经完成系统的所有数据分析。
根据该阶段建立的概念模型,已经得出满足第三范式的几个关系描述,此阶段主要的工作就是把前一阶段的成果转化为具体的数据库。
3.1系统的基本E-R图根据之前的分析规划出的个人信息管理系统实体有:个人信息实体、备忘录实体、通讯录实体、日记实体、财务管理实体。
个人信息实体图如图3.1所示3.1个人信息实体3.2备忘录实体同通讯录实体如图3.3所示3.3通讯录实体日记实体如图3.4所示3.4日记实体3.5财务管理实体3.2关系描述的设计根据数据库原理,并结合以上E-R图,经转换,可以导出各个关系。
其转化规则为首先每个实体应该转换成一个关系,有属性的联系也应转化为一个关系然且需要给出每个关系的关键字。
根据以上规则直接给出所有关系。
个人信息(用户ID号,用户密码,姓名,年龄,出生日期,电话号码,QQ,工作,地址)关键字为用户ID号。
天融信防火墙日记审计系统的搭建与配置作者:查穹丁峰倪晓勤来源:《电脑知识与技术》2013年第23期摘要:该文根据工作中实施经验以及日记审计系统工作原理,介绍天融信防火墙、日志审计系统及其相关组件的安装、调试、使用经验及常见问题的解决方法。
关键词:天融信;日记审计;搭建与配置中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)23-5227-02近年来,由于目前网络体系的开放性与简单性,网络信息安全问题日益突出,网络运维中暴露出不少安全隐患。
目前防火墙、漏洞扫描等网络边界安全设备都部署的较为普遍,防火墙等设备不具备长时间纪录和分析日志的功能,日志审计系统具备这列功能,但是部署的较少。
日志文件在网络系统中作用很大,维护人员可以通过分析日志定位故障、发掘网络改善方法,查找漏洞与异常、提高网络安全系数。
随着数据大量集中,业务管理复杂度越来越高。
安全管理人员想要优化网络、防患于未然,必须要要定期分析各种设备、应用系统所产生的日志。
在实际工作中,每天都产生大量日志,人力已经无法完成海量日志的统一管理,需要日记审计系统进行管理分析。
1 日志日志信息是对计算机主机或网络设备运行活动的记录和描述。
日志信息通常包含时间戳、源地址、目标地址、网络协议、匹配规则、动作、描述备注等[1]。
2 天融信日志审计系统天融信日志审计系统(TopAudit)是一个分布式、跨平台的网络安全审计系统。
该日志审计系统对网络中的各种安全设备、应用服务等日志数据进行集中收集、管理和分析,用户通过管理界面可以便捷地实现对日志数据、审计策略、系统及不同组件进行集中、可视化的管理。
同时提供了基于角色的权限访问控制[2-3]。
日志审计系统提供单级部署和多级部署两种部署方式。
单级部署是指:不同的审计服务器负责收集不同网段的日志数据,审计服务器之间没有关系;多级部署是指:用户可以根据网络拓扑的实际情况设置审计服务器,审计服务器有上下级关系。
Software Development •软件开发Electronic Technology & Software Engineering 电子技术与软件工程• 55【关键词】个人情绪 日记管理 NLP 技术随着社会经济的快速发展,人们的生活习惯发生了翻天覆地的变化,快餐式的生活使得人们很少去关注自己的情绪变化,人们的心理健康得不到保障。
当人长期处于负面情绪的时候很有可能进一步变成心理问题,比如像抑郁症。
但是这种后果可以避免,只要人们意识到自己的情绪变化,并适时调节一下,就可以从负面情绪中走出来。
本课题通过设计一个情绪管理日记系统让人们了解自己的情绪走向,避免因为情绪问题而产生一系列不良后果。
该系统不是一个简单的日记记录本,它的主要功能是情绪分析。
通过分析用户提交的数据,得到用户情绪状态,使用户更好的了解自己,及时调整,起到提醒的作用。
本系统中的情绪分析实质就是情感分析,也称为意见挖掘或观点挖掘,是对于给定的一段文本进行分析并提取其情感意见的过程。
情绪分析让人们更直观地了解文本中的态度、意见及情感倾向。
国外的文本情感分析从20世纪90年代末开始。
由于英文具有很强的语法约束,句子结构很明确,所以研究起来相对于中文比较简单。
国内研究比较出名的有哈尔滨工业大学,清华大学和大连理工大学、杭州电子科技大学等。
哈尔滨工业大学的秦兵教授提出了机器智能中的文本情感计算,将情感分析与人工智能结合起来。
大连理工大学的林鸿飞教授在细粒度情感分析方面也做出了很多贡献,其中独立整理标注完成了情感词汇本体库。
随着研究的深入,研究者在对情感分析方法进行改进的同时,也将其应用到不同的行业进行了实践,如赵妍妍,王素格等都取得了不错的成果。
他们一套个人情绪日记管理系统的设计与实现文/刘海静 杜意权分别通过自动获取句法路径来描述评价对象和评价词语之间的关系和基于情感词粗糙隶属度的文本分类方法将情感倾向分析应用到了电商评价和汽车评价预测上。
第3章系统管理BS3000+系统是由多种子系统构成,BS3000+服务端是为各个子系统提供服务旳公共平台,我们称之为系统管理,重要由服务设定、服务程序、卸载服务程序三部分构成,其中服务设定重要是建立服务程序与数据库服务器旳连接关系,这是服务程序运营旳基础,没有它服务程序无法运营起来。
服务程序重要涉及登录系统管理、数据库管理、消息管理、升级、预警、帐套管理、顾客管理、日记管理、以及某些其他有关信息。
3.1 服务设定当BS3000+系统初次启动就需要进行服务设定,打开“服务设定”,选择机器名或IP方式,由系统自动获取服务器机器名或IP地址,输入数据库顾客名和密码,然后保存参数、连接测试。
如图3-1 所示。
图3-1服务设定提示:当服务器有变更时需要重新设定,否则整个BS3000+系统将无法运营。
3.2 登录系统管理登录系统管理功能涉及数据库初始化、顾客登录、注销以及退出系统,修改顾客口令。
数据库初始化时规定输入旳代码是相应客户旳代码,总部默认是000。
点击“服务程序”,打开菜单“系统”→“注册”,点击“注册”。
如图3-2所示。
图3-2 登录1.进入登录系统窗口。
2.输入操作员以及口令,点击“登录”进入系统管理,否则点“退出”返回。
3.如果需要修改口令,则勾选“修改口令”后点击“登录”系统弹出修改口令窗口。
如图3-3所示。
图3-3 修改口令4.输入旧口令,输入新口令,输入确认口令,点击“拟定”,则修改成功。
(密码支持0至6位)5.若需要更换顾客或者重新登录,在主菜单“系统”旳下拉菜单项有“注销”功能,注销此顾客再重新注册即可。
6.打开主菜单“系统”旳下拉菜单项,点击“退出”,退出系统管理。
注:客户端也可以在服务只打开不注册旳状况下登录。
3.3 系统模块启用系统模块启用功能是启用BS3000+系统中旳业务模块。
打开菜单“系统”→“系统启用”。
如图3-4所示。
图3-4 系统模块启用1.勾选需要使用旳模块2.点击“退出”,系统模块启用设立完毕。
研发日志管理制度一、背景随着科技的发展和应用,研发工作在企业中变得越来越重要。
研发部门的工作不仅涉及产品研发,还包括技术创新、项目管理、成本控制等多个方面。
在研发工作中,日志是一种重要的管理工具,可以用于记录和跟踪工作进展、问题解决过程、技术创新等内容。
因此,建立有效的研发日志管理制度对于提高研发工作效率和质量具有重要意义。
二、目的建立研发日志管理制度的目的是为了规范研发部门的日常工作,确保日志的完整性、准确性和保密性,提高研发工作的效率和质量。
具体目的包括:1. 规范研发人员的日志记录行为,明确记录内容和格式要求。
2. 统一研发日志管理的流程和责任分工,防止信息丢失和泄露。
3. 为项目管理、技术创新和问题解决提供有效的信息支持和历史记录。
4. 提高研发工作效率和质量,为企业创新和发展提供有力支持。
三、内容1. 研发日志的记录内容(1)项目名称和编号(2)记录人员的姓名和部门(3)日期和时间(4)工作内容和进展情况(5)遇到的问题和解决过程(6)技术创新和改进措施(7)其他需要记录的内容2. 研发日志的格式要求(1)记录要使用统一的格式和模板,便于后续管理和查询。
(2)记录要规范,内容要完整、准确,语言要清晰、简洁。
(3)记录要及时更新,避免错过重要信息和进展。
3. 研发日志的管理流程(1)每个研发项目都应有专门的日志记录人员,负责日志的统一管理和记录。
(2)日志记录人员应及时收集各部门的工作日志,并将其整理和汇总。
(3)汇总后的日志要经过主管审批,再进行归档和存档。
(4)对于重要的日志内容,如技术创新和问题解决,可进行专门归档和备份。
4. 研发日志的保密和使用(1)研发日志属于敏感信息,需做好保密工作,避免外泄。
(2)除研发部门内部人员外,其他人员不得随意查阅和使用研发日志。
(3)研发日志可用于项目管理、技术创新、成本控制、质量保证等方面。
(4)对于日志中的机密信息,要进行严格控制和管理。
四、责任1. 研发日志记录人员负责日志的统一管理和记录,保证记录内容的完整性和准确性。
福建工程学院计算机与信息科学系实验报告(3)各个函数分析用户注册界面用户操作界面.日记查询界面(5)流程图2.注册4.日记查询调试过程记录2.日记查询3.日记删除4.修改密码#include<stdio.h>#include<math.h>#include<conio.h>#include<string.h>#include<stdlib.h>#define Esc 27#define Enter 13/********************************日记结点类型*********************************/typedef struct lnode{char date[15]; //日记日期char title[20]; //日记标题int flag; //用来标记该日记是否满足查阅要求,满足为-1,初始值为0;struct lnode *next;}EdgeNode;/********************************用户结点类型********************************/typedef struct vnode{char user_name[20]; //用户名char password[20]; //密码int count; //存储相应用户的日期篇数EdgeNode *firstedge;struct vnode *next;} *VertexList,VertexNode;/************************************函数声明**************************************/int main();VertexList Init_user();void main_meno(VertexList L);void User_Login(VertexList L);VertexList User_apply(VertexList L);void Help_file();void User_Operate(VertexNode *H,VertexList L);void Write_dairy(VertexNode *H,VertexList L);int Search_dairy(VertexNode *H,char temp[]);void Read_dairy(char dairy_name[]);void Delete_dairy(VertexNode *H,VertexList L);void Rejigger_user_password(VertexNode *H,VertexList L);void Consult_dairy_meno(VertexNode *H);void Consult_dairy(VertexNode *H,int i);void Express_chage_dark(char temp[]);void Dark_chage_express(char temp[]);void Password_input(char temp[]);void Save_user(VertexList L);void Save_dairy(VertexNode *H);/********************************************************************************//******************************查阅日记操作*************************************/void Consult_dairy(VertexNode *H,int i){EdgeNode *p;FILE *fp;char temp[20];int j;int flag=0;p=H->firstedge;if (i==-1) //进行顺序查询{printf("\n\n\t请输入要顺序查看的日记序号:\t");scanf("%d",&j);if (j<=H->count){while(j>1){p=p->next;j--;}p->flag=-1; //找到符合条件日记,对应结点的flag赋为-1,以便待会筛选出来flag=1;}}else{if (i==0) printf("\n\t输入要查询的日期:\t"); //进行日期查询if (i==15) printf("\n\t输入要查询的关键字:\t"); //进行关键字查询scanf("%s",temp);rewind(stdin);while(p!=NULL){if(strstr((p->date+i),temp)!=NULL) { p->flag=-1; flag=1;} //找到符合条件的结点,其flag赋予-1,以便待会筛选出来p=p->next;}}if(flag==0) printf("\n\t\t####对不起,找不到所需要的日记####");else{p=H->firstedge;printf("\n\t要查看的日记如下\n");chdir(H->user_name);while(p!=NULL){if(p->flag==-1){printf("\n\t—————————————————————————————————\n");printf("\t\t日记名:%s\t\t时间%s\n",p->title,p->date);p->flag=0; //筛选输出结点的flag 为-1的日记名,日期Read_dairy(p->title);}p=p->next;}chdir("..");}printf("\n\n\t\t");system("pause");}/******************************查阅日记菜单*************************************/void Consult_dairy_meno(VertexNode *H){char choice;printf("\n\n\t |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t |1.按顺序查询\t2.按日期查询\t3.按关键字查询|\n");printf("\t |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\n\t输入操作:(按Esc退出)\t");choice=getche();if (choice==Esc) return;switch(choice){case'1': Consult_dairy(H,-1);break;case'2': Consult_dairy(H,0);break;case'3': Consult_dairy(H,15);break;}}/**************************************删除用户日记操作*********************************/void Delete_dairy(VertexNode *H,VertexList L){EdgeNode *p; //指向要删除的结点EdgeNode *pre; //指向要删除的结点的前驱结点int i,j;char flag;printf("\n\n\t请输入要删除的日记序号:\t\t");scanf("%d",&i);rewind(stdin);j=i;p=H->firstedge;while(i>1){p=p->next;i--;}p->flag=-1; //要删除的结点的flag标识符设为-1p=H->firstedge;while(p!=NULL&&(p->flag==0)){pre=p;p=p->next;}printf("\n\t要删除的日记是:\n");printf("\t\t序号:%d\t 日记名:%s\t时间:%s",j,p->title,p->date);printf("\n\t是否确认要删除:(Y or N) \t");scanf("%c",&flag);rewind(stdin);if(flag=='Y'||flag=='y'){if(H->firstedge==p) H->firstedge=p->next; //要删除的结点为第一结点时else pre->next=p->next; //要删除的结点不是第一结点时}elsereturn ;chdir(H->user_name); //把相应用户的目录弄为当前工作目录H->count--; //用户的日记数减1remove(p->title); //去掉相应的文件free(p); //释放要删除的结点空间Save_dairy(H); //保存用户日记信息,不然原有的用户日记信息还是不变Save_user(L); //保存用户信息printf("\n\t删除中,请稍等.....");//sleep(1);printf("\n\n\t删除成功!!!\n\t");system("pause");}/********************************密文转换成明文**************************************/void Dark_chage_express(char temp[]){int i;i=0;while(temp[i]!='\0'){temp[i]=temp[i]+2;i=i+1;}}/********************************明文转换成密文*************************************/void Express_chage_dark(char temp[]){int i;i=0;while(temp[i]!='\0'){temp[i]=temp[i]-2;i=i+1;}}/********************************整数输入控制*************************************/int Input_Integer(){ char str[10];long n,i=0;scanf("%s",str);rewind(stdin);while(str[i]!='\0') //对字符串的各个字符进行判断,只是字符串结束{if(str[i]<'0'||str[i]>'9') return -1;i++;}n=atoi(str); //利用atoi函数将字符串str转换成整型数return n; //返回输入的正整数}/*****************初始化用户信息,读取系统已有的用户和用户相应的日记*******************/ VertexList Init_user(){FILE *fp1;FILE *fp2;VertexList L=NULL;VertexNode *p;EdgeNode *s;if ((fp1=fopen("Userlist","r+"))==NULL) return L;while(!feof(fp1)){p=(VertexNode *)malloc(sizeof(VertexNode));if(fread(p,sizeof(VertexNode),1,fp1)!=1) break;p->firstedge=NULL; //读取系统已有的用户信息p->next=L;L=p;chdir(p->user_name); //把相应用户目录作为当前工作目录if((fp2=fopen("dairylist","r+"))==NULL) {chdir(".."); continue;}elsewhile(!feof(fp2)){s=(EdgeNode *)malloc(sizeof(EdgeNode)); //读取系统相应用户的相应日记信息if(fread(s,sizeof(EdgeNode),1,fp2)!=1) break;s->next=L->firstedge;L->firstedge=s;}chdir(".."); //把父目录作为当前工作目录fclose(fp2);}fclose(fp1);return(L);}/***********************************主菜单***************************************/void main_meno(VertexList L){char choice;do{printf("\n\t\t>>>>———欢迎进入日记管理系统———<<<<\n");printf("\n\t\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t\t|\t1\t用户登入\t \t|\n\t\t|\t\t\t \t\t|\n\t\t|\t2\t申请用户\t \t|\n\t\t|\t\t \t\t\t|\n\t\t|\t3 \t帮助\t \t\t|\n");printf("\t\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\n\n\t请输入选择:(按Esc退出)\t\t");choice=getche();if (choice==Esc) return;switch(choice){case '1' : User_Login(L);break;case '2' : L=User_apply(L);break;case '3' : Help_file();break;}system("cls");}while(1);}/***********************************打开帮助文件操作***************************************/ void Help_file(){FILE *fp;system("cls");fp=fopen("help.txt","r"); //以只读的方式打开文件,将文件指针赋给fpif(fp==NULL){printf ("\n\t\t无法打开帮助文件!......");return ;}while(feof(fp)==0) //将文件中的字符读入printf("%c",fgetc(fp));fclose(fp);printf("\n\n\t");system("pause");}/********************************密码输入控制函数***************************************/void Password_input(char temp[]){int i;i=0;while((temp[i]=getch())!=Enter) //输入回车键退出{if(temp[i]=='\b'&&i>0) //当不是第一个输入删除键时,进行的操作{rewind(stdin);printf("\b");printf(" ");printf("\b\b");i--;continue;}elseif(temp[i]!='\b'&&i>=0) //当不是输入删除键时,输出*号{printf("*");i=i+1;}}temp[i]='\0';}/***********************************读日记操作*****************************************/void Read_dairy(char dairy_name[]){FILE *fp;char temp[200];int i=0;fp=fopen(dairy_name,"r");printf("\n\t日记日容如下:\n\t\t");while(feof(fp)==0){fscanf(fp,"%c",&temp[i]);i++;}temp[i]='\0';Dark_chage_express(temp);printf("%s\n",temp);fclose(fp);}/****************************************修改用户密码*操作********************************/ void Rejigger_user_password(VertexNode *H,VertexList L){char temp1[20]; //用于保存原有的密码,设计这个有利于密码的更有效率的保存char temp2[20]; //用于保存第一次输入的密码char temp3[20]; //用于保存第二次输入的密码char flag;strcpy(temp1,H->password);Dark_chage_express(temp1);printf("\n\n\t您当前的密码为:\t\t%s",temp1);printf("\n\n\t输入新密码:\t\t");Password_input(temp2);printf("\n\t确认新密码:\t\t");Password_input(temp3);while(strcmp(temp2,temp3)!=0) //两二次输入的密码一样{printf("\n\t两次输入的密码不一致!!!\n");printf("\n\t输入密码:\t\t");Password_input(temp2);printf("\n\t确认密码:\t\t");Password_input(temp3);}Express_chage_dark(temp2);strcpy(H->password,temp2);printf("\n\n\t\t密码修改保存中,请稍等......");// sleep(1);Save_user(L); //系统休眠5秒printf("\n\n\t\t####密码修改成功!!!####\n\n\t");system("pause");}/********************************保存相应用户日记信息*********************************/ void Save_dairy(VertexNode *H){FILE *fp;EdgeNode *p;chdir(H->user_name);if((fp=fopen("dairylist","w"))==NULL){printf("输入有误:不能打开文件!\n");system("PAUSE");return;}p=H->firstedge;while(p!=NULL){fwrite(p,sizeof(EdgeNode),1,fp);p=p->next;}chdir("..");fclose(fp);}/********************************保存全部用户信息*********************************/ void Save_user(VertexList L){FILE *fp;VertexNode *p;fp=fopen("Userlist","w");p=L;while(p!=NULL){fwrite(p,sizeof(VertexNode),1,fp);p=p->next;}fclose(fp);}/*********************************查找是否有同名日记操作************************************/ int Search_dairy(VertexNode *H,char temp[]){EdgeNode *p;p=H->firstedge;while(p!=NULL&&strcmp(p->title,temp)!=0)p=p->next;if(p!=NULL) return 0;else return 1;}/***********************************申请新用户操作*****************************************/ VertexList User_apply(VertexList L){char temp1[20];char temp2[20];int i;char flag;VertexNode *p;VertexNode *s;rewind(stdin);s=(VertexNode *)malloc(sizeof(VertexNode));system("cls");printf("\n\t\t\t|^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t\t\t|\t申请用户\t|\n");printf("\t\t\t|^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\n\t已有的用户名:\n");p=L;while(p!=NULL){printf("\t\t\t%s\n",p->user_name);p=p->next; //输出系统已存在的用户名,以让用户申请新用户时,有个注意,不申请重复的用户名}p=L;printf("\n\n\t输入用户名:\t\t");scanf("%s",s->user_name);rewind(stdin);while(p!=NULL&&strcmp(p->user_name,s->user_name)!=0)p=p->next; //判断有没有重复的用户名while(p!=NULL){printf("\n\t该用户名已经存在!!!!!\n");printf("\n\t是否继续进行申请用户:(Y or N) ");scanf("%c",&flag);if (flag=='N'||flag=='n'){free(s); return L;}printf("\t输入用户名:\t");scanf("%s",s->user_name);rewind(stdin);p=L;while(p!=NULL&&strcmp(p->user_name,s->user_name)!=0)p=p->next;}printf("\n\t\t\t#####该用户名可以正常使用#####\n");printf("\n\t输入密码:\t\t");Password_input(temp1);printf("\n\t确认密码:\t\t");Password_input(temp2);while(strcmp(temp1,temp2)!=0){printf("\n\t两次输入的密码不一致!!!\n");printf("\n\t输入密码:\t\t");Password_input(temp1);printf("\n\t确认密码:\t\t");Password_input(temp2);}strcpy(s->password,temp1);s->firstedge=NULL;s->count=0; //申请好用户,进行相应的操作mkdir(s->user_name); //生成相应用户对应的文件夹,文件夹里用来存储相应用户的相应日记Express_chage_dark(s->password); //进行密码家秘密s->next=L;L=s;Save_user(L); //每添加一个用户时,都要进行存储用户信息的保存printf("\n\t\t在申请中,请稍等.....");// sleep(1);printf("\n\n\t\t\t####恭喜你申请成功####\n\n\t");system("pause");return(L);}/***********************************相应用户登录后的操作***************************************/ void User_Operate(VertexNode *H,VertexList L){char choice;EdgeNode *p;int i;system("cls");do{printf("\t\t >>>>———欢迎^%s^的到来———<<<<\n\n",H->user_name);printf("\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t| 1.写日记 2.查阅日记 3.删除日记 4.更改用户密码|\n");printf("\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\n\t已有的日记:\n");p=H->firstedge;printf("\n\t\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t\t|\t序号\t 日记名\t时间\t |\n");p=H->firstedge;i=1;while(p!=NULL){printf("\t\t|\t%d\t %s\t%s\t|\n",i,p->title,p->date);p=p->next; //输出相应用户的日记名i++;}printf("\t\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\n\n\t请输入选择:(按Esc退出)\t\t");choice=getche();if (choice==Esc) return;switch(choice){case '1': Write_dairy(H,L);break; //写日记case '2': Consult_dairy_meno(H);break; //查阅日记case '3': Delete_dairy(H,L);break; //删除日记case '4': Rejigger_user_password(H,L);break; //修改用户}system("cls");}while(1);}/***********************************用户登录操作***************************************/void User_Login(VertexList L){char temp[20];char flag;int i,j,count;VertexNode *p;EdgeNode *s;p=L;system("cls");printf("\n\t\t\t|^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t\t\t|\t用户登入\t|\n");printf("\t\t\t|^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\n\t已有的用户名:\n");printf("\t\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t\t|\t序号\t 用户名\t\t|\n");count=1;while(p!=NULL){printf("\t\t|\t%d\t %s\t\t|\n",count,p->user_name);p=p->next;count++;} //显示系统全部的用户信息,供用户选择登入printf("\t\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");count--;printf("\n\n\t输入序号:\t\t");i=Input_Integer();while(i>count||i==-1){printf("\n\n\t输入序号错误");printf("\n\t是否继续进行输入:(Y or N) ");scanf("%c",&flag);if(flag=='N'||flag=='n') return;printf("\n\n\t输入序号:\t\t");scanf("%d",&i);}j=1;p=L;while(j<i){j++;p=p->next;}printf("\n\t你选择的用户:\t\t%s",p->user_name);printf("\n\t输入密码:\t\t");Password_input(temp); //输入密码Express_chage_dark(temp); //明码转化为暗码,以跟以保存的用户密码比较while(strcmp(p->password,temp)!=0){printf("\n\t输入的密码错误!!!\n");printf("\n\t是否继续输入:(Y or N)\t");scanf("%c",&flag);if (flag=='N'||flag=='n') return;printf("\n\t输入密码:\t\t");Password_input(temp);Express_chage_dark(temp);}printf("\n\n\t\t\t登入中,请稍等.....");//sleep(1);system("cls");User_Operate(p,L); //用户登入后,进行用户操作}/***********************************写日记操作*****************************************/void Write_dairy(VertexNode *H,VertexList L){char choice;char temp[200]; //用于存储写入的日记FILE *fp;EdgeNode *s;int i;printf("\n\n\t输入日记内容:\n\n\t\t");scanf("%s",temp);rewind(stdin);Express_chage_dark(temp); //对日记内容加密s=(EdgeNode *)malloc(sizeof(EdgeNode));printf("\n\n\t输入要保存的日记名:\t");scanf("%s",s->title);rewind(stdin);while(Search_dairy(H,s->title)!=1){printf("\n\t该日记名已经存在,请重新输入!!!!");printf("\n\t输入要保存的日记名:\t");scanf("%s",s->title);}printf("\n\t\t####该日记名可以使用####");printf("\n\t输入日期时间:(2009\\04\\11)\t");scanf("%s",s->date);rewind(stdin);s->flag=0;chdir(H->user_name); //把相应用户目录作为当前工作的目录if((fp=fopen(s->title,"w"))==NULL){printf("对不起,不能打开文件!!!");return;}i=0;printf("\n\t保存中,请稍等.....");while(temp[i]!='\0'){fwrite(temp+i,1,1,fp);i=i+1;}//sleep(1); //存储日记,sleep(5000)使窗体等待一段时间,以使用户感觉程序正在保存文件s->next=H->firstedge;H->firstedge=s;H->count++;chdir(".."); //转移到父目录作为当前工作的目录fclose(fp);Save_dairy(H); //保存相应用户的日记信息Save_user(L); //保存用户信息,因为此时用户的count已经改变了,需要保存printf("\n\n\t保存完毕!\n\n\t");system("pause");}/*************************************主函数*****************************************/int main(){VertexList L;system("color 75");L=Init_user();main_meno(L);return 0;}。