




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、沈 阳 工 程 学 院课程设计任务书课程设计题目:-家族关系查询系统-停车场管理系统 系 别: 信息工程系 班级: 软本 1 0 1 姓 名: 王超 修国山 孙天龙 学 号: 16 28 38 指导老师: 吕海华、姜柳 职称: 副教授、讲师课程设计进行地点: 实训F - 6 0 8 任务下达时间:2011年12月7日起止日期:2011年12月12日起至2011年12月23日止教研室主任: 张 欣 2011年12月05日批准一、课程设计的原始资料及依据1.1家族关系管理系统随着新世纪的到来全国各地的宗族在大陆的分布较分散,近年来为了研究宗族现在的状况对宗族的情况进行了相关项的调查。其中以具体的家
2、族关系调查为起始。本次课设就是做实现家族查询的系统。主要根据数据结构的原理应用树的制作进行家族查询。完成编写之后将运行出来的程序分行显示,本程序处理起来相对复杂一些但却涉及到很多方面的知识,需要使用到的数据结构有树状结构和队列。查阅有关程序设计的案例资料,进一步理解程序设计模块化的思想,并利用此思想,根据对程序设计学习编写一个家族关系查询系统。通过本设计可以加深理解利用程序设计思想开发一个查询系统的整个流程,提高分析问题、解决问题和实际动手的能力。1.2停车场管理系统随着科技的进步和人类文明的发展,智能停车场管理系统在住宅小区,大厦,机关单位的应用越来越普遍。而人们对停车场管理的要求也越来越高
3、,智能化程度也越来越高,使用更加方便快捷,也为人们的生活带来了方便和快乐不仅提高了现代人的工作效率,也大大的节约了人力物力,降低了公司的运营成本,并使得整个管理系统安全可靠。包括车辆出入信息管理,收费管理等等。查阅有关程序设计的案例资料,进一步理解程序设计模块化的思想,并利用此思想,根据对程序设计学习编写一个停车场管理系统。通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。二、课程设计主要内容及要求 2.1停车场管理系统以栈模拟停车场,以队列模拟停车场外的便道,按照从终端读入的输入数据的方式进行模拟管理。输入1,表示车辆到达;输入2,表示车辆
4、离开;输入3,表示显示出停车场内及便道上的停车情况;输入4,表示退出系统。车辆到达操作,需输入汽车车牌照号码及到达的时刻;车辆离开操作,需输入汽车在停车场的位置及离开时刻,且应输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。2.2家族关系管理系统建立:基本数据结构的定义和链队的基本操作;家族关系并存入文件;家族关系树并录入家族成员信息。打开一个家族关系。向家族中添加一个新成员。确定一个成员是第几代。查询一个成员在家族关系树中是否存在。 查找:一个成员的所有祖先路径;一个成员的鼻祖;一个家族的双亲;一个成员的兄弟;一个成员的堂兄弟;一个成员的所有孩子;一个成员的子孙后代。
5、三、对课程设计说明书撰写内容、格式、字数的要求课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。一般不应少于3000字。在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码表等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。设计小组评语处注明设计组编号、设计组组长、设计组成员,并由设计组组长给出评语。课程设
6、计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。四、设计完成后应提交成果的种类、数量、质量等方面的要求完成“任务书”中指定的操作功能,运行稳定。课程设计说明书。五、时间进度安排顺序阶段日期计 划 完 成 内 容备注1第1天阅读资料2第23天系统分析设计3第47天程序编制、调试及运行4第89天成绩评定5第10天撰
7、写课程设计说明书六、主要参考资料(文献)严蔚敏 吴伟民.数据结构(C语言版). 北京:清华大学出版社.2007谭浩强.C程序设计.北京:清华大学出版社.1999.12滕国文.数据结构课程设计.北京:清华大学出版社.2010.09苏仕华 等编著. 数据结构课程设计. 北京:机械工业出版社.2005.05李春葆.数据结构(C语言版)习题与解析.北京:清华大学出版社.2002.04沈 阳 工 程 学 院数据结构课程设计成绩评定表系(部): 信息工程系 班级: 软本101 学生姓名: 修国山 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课
8、程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以8) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的
9、质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以4)分加权分合计评 阅 教 师 签 名: 年 月 日答 辩 小 组 评 审 意 见评价内容具 体 要 求权重评 分加权分学生汇报汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。0.55432答 辩思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。0.55432答辩小组评审成绩(加权分合计乘以8)分加权分合计答辩小组教师签名: 年 月 日课
10、 程 设 计 总 评 成 绩分沈 阳 工 程 学 院数据结构课程设计成绩评定表系(部): 信息工程系 班级: 软本101 学生姓名: 孙天龙 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩
11、(加权分合计乘以8) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以4)分加权分合计评 阅 教 师 签 名: 年 月 日答 辩 小 组 评 审 意 见评价内容具 体 要 求权重评 分加权分学生汇报汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层
12、次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。0.55432答 辩思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。0.55432答辩小组评审成绩(加权分合计乘以8)分加权分合计答辩小组教师签名: 年 月 日课 程 设 计 总 评 成 绩分沈 阳 工 程 学 院数据结构课程设计成绩评定表系(部): 信息工程系 班级: 软本101 学生姓名: 王超 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立
13、完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以8) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,
14、书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以4)分加权分合计评 阅 教 师 签 名: 年 月 日答 辩 小 组 评 审 意 见评价内容具 体 要 求权重评 分加权分学生汇报汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。0.55432答 辩思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。0.55432答辩小组评审成绩(加权分合计乘以8)分加权分合计答辩小组教师签名: 年 月 日课 程 设 计 总 评 成 绩分沈阳工程学院课程设计报告 摘要摘 要现代科学技术的飞速发展,改变了世
15、界,也改变了人类的生活。作为新世纪的大学生,应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。新世纪需要具有丰富的现代科学知识,能够独立解决面临的任务,充满活力,又有创新意识的新型人才。随着各个领域的突飞猛进,计算机也有它卓越的进步。数据结构不仅为计算机专业工作者所使用,而且为广大计算机应用人员所喜爱和使用。数据结构是国际上广泛流行的计算机高级语言。它适合作为系统描述语言,既可以用来编写系统软件,也可以用来编写应用软件。许多高等学校,不仅在计算机专业开设数据结构课程,而且在非计算机专业也开设了数据结构课程。学习数据结构已经成为广大计算机应用人员和
16、广大青年学生的迫切要求。本次数据结构课程设计以家族关系管理系统及停车场管理系统为题目。家族管理系统以三叉树作为储存结构,三个指针域分别指向成员的孩子、下一个兄弟、和双亲,因此结构体的定义需要三个指针域和一个数据域,而数据域存放的是成员的信息, 所以数据域仍然是一个结构体。把家族关系树转化为二叉树进行储存,利用递归的思想实现家族关系的建立、保存、打开、查找和添加。对于家族关系的建立、保存、打开、查找和添加均要建立一个子函数,而无论查找何种关系总要先找到该成员,因此建立一个查找成员的函数供各个函数调用。停车场管理系统,是以栈模拟停车场,以队列模拟停车场外的便道,按照从终端读入的输入数据的方式进行模
17、拟管理。此系统有三大模块,分别为:车辆到达停车场,车辆进入停车场以及车辆离开停车场。模拟停车场时需要输入车辆的信息,包括车牌号码及进入与离开时刻,因此可以定义一个时间结点类型,在顺序栈及链式队列中定义一个车辆信息结点类型。接着我们通过判断栈是否已满,车辆的进栈与出栈以及车辆的进队与入队来模拟车场内的情况。最后,我们通过定义Print函数来实现对停车场内车辆的信息的输出。在为期两周的数据结构课程设计学习中,先要学习数据结构课程的目的掌握栈和队列的思想和使用,学习会用计算机语言编写程序,以实现所需要处理的任务。要正确处理算法与语法的关系,算法结构存储是程序的核心、是灵魂,语法是外壳、是工具。不应把
18、学习重点放在语法规则上,语法是重要的,不掌握语法规则就无法编写出正确的程序。一定要把重点放在解题的思路上和运用何种存储的方法,通过思考和大量的阅读,来构造一个完整的程序。数据结构存储的设计直接关系到程序的好坏。关键词 停车场管理,家族关系,栈,队列,树II沈阳工程学院课程设计报告 目录目 录摘 要I第一章 绪 论11.1 设计背景11.2 设计目的11.2.1 停车场管理系统11.2.2 家族管理系统2第二章 系统开发相关技术介绍32.1 栈和队列32.2 树和二叉树32.3 c语言简介4第三章 系统分析与设计53.1 停车场管理系统53.1.1 系统的功能分析53.1.2 系统模块分析及其流
19、程图53.2 家族关系管理系统73.2.1 系统分析73.2.2 系统设计8第四章 系统功能实现114.1停车场管理系统功能实现114.1.1 定义主函数及菜单函数114.1.2 车辆到达并进入停车场功能134.1.3 车辆离开停车场功能154.1.4 停车场信息输出功能174.2 家族关系管理系统功能实现194.2.1 结构体及全局变量的定义194.2.2 主函数和菜单函数的实现204.2.3 家族关系的建立224.2.4 保存和打开函数244.2.5 添加及查询函数25结 论31致 谢32参考文献33沈阳工程学院课程设计报告 第一章 绪论第一章 绪 论1.1 设计背景家谱是记载记载同一姓氏
20、血缘关系的世系、重要人物、个人事迹、家族历史为主要内容的谱籍,又称“族谱”、“家乘”还有称作“谱牒”。家谱上可以追本溯源、缅怀先人,下可以辨明关系、联络宗亲,从而启孝梯心,唤德善之本,激励后人,奋发有为,其作用不可尽述。在社会方面,家谱对于海内外华人寻根认祖,增强民族凝聚力起着重要作用。在文史工作者,家谱是研究人口学、社会学、经济学、历史学、氏族学、人物传记,以及研究地方史乃是重要资料。在个人方面家谱又是每个公民身份证明之一。如有些族规有载,某人若不遵法纪,为非作歹者,击鼓鸣公,革出族外,不准入谱。可见家谱无论在社会在个人都起着重要作用。随着社会的发展,人们的宗族观念也越来越深,越来越重视宗亲
21、关系,普通的族谱不仅管理不方便而且不易长久保存和传承。科技的发展已经可以完美的解决这些问题,人们对电子家谱越来越期待,家族管理系统就在这种背景下诞生了。近年来 ,随着经济的发展,我国的城市化水平加快和人民生活水平的提高,私家车成为了老百姓家中很普遍的交通工具,汽车的数量也因此在不断增加。截至2009年底,我国个人汽车保有量为13427672辆。其中,个人轿车4890387辆,比2002年增加1462441辆,增长率为42.7%。在提供便利的同时,私家车也带来了一个让人头疼的问题,那就是停车问题。特别是在一些大中城市,停车位显得有些供不应求。大型商场、医院、公司这些都是车辆的主要聚集地。在这个寸
22、土寸金的社会中,人们都试图在有限的空间中停入最多的车辆,以满足人们日益增加的需求。因此,如何合理的安排车辆的进出成为了停车场进出车效率的关键。而正确的管理观念非常重要,科学管理方式选择将成为决定车辆贫富差距的关键性因素。为此,我们开发并设计了停车场管理系统。停车场车辆管理的核心是投资收益的最大化和车辆信息分配合理化的集合。管理服务通过充分利用各种管理工具,帮助您达到合理分配的目的、满足您对管理安全性、收益性等多样化要求。开发一个停车场车辆管理软件迎合了现代的公司发展趋势,对居民合理管理公司和他人的联系信息起到重要意义。1.2 设计目的1.2.1 停车场管理系统为了进一步理解程序设计模块化的思想
23、,加深利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。本次课设我们编写一个停车场管理系统。目的及要求如下;以栈模拟停车场,以队列模拟停车场外的便道,按照从终端读入的输入数据的方式进行模拟管理。输入1,表示车辆到达;输入2,表示车辆离开;输入3,表示显示出停车场内及便道上的停车情况;输入4,表示退出系统。车辆到达操作,需输入汽车车牌照号码及到达的时刻;车辆离开操作,需输入汽车在停车场的位置及离开时刻,且应输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。1.2.2 家族管理系统力求通过设计并实现一个计算机软件,来支持对家谱的存储、添加、查询、
24、打印等操作。本课程设计要实现的功能详述如下建立:基本数据结构的定义和链队的基本操作;家族关系并存入文件;家族关系树并录入家族成员信息。打开一个家族关系。向家族中添加一个新成员。确定一个成员是第几代。查询一个成员在家族关系树中是否存在。 查找:一个成员的所有祖先路径;一个成员的鼻祖;一个家族的双亲;一个成员的兄弟;一个成员的堂兄弟;一个成员的所有孩子;一个成员的子孙后代。2沈阳工程学院课程设计报告 第二章 系统相关技术介绍第二章 系统开发相关技术介绍2.1 栈和队列堆栈(stack)也简称为栈,是限定在表的一端进行插入或删除操作的线性表。通常将进行插入或删除操作的一段称为栈顶(top),另一端称
25、为栈底(bottom)。插入元素又称为入栈(push),删除元素操作称为出栈(pop)。不含元素的栈称为空栈。因为堆栈的插入和删除只是在栈顶进行的,总是后进去的元素先出来,所以堆栈又称为后进先出线性表或LIFO(last in first out)表。堆栈在日常生活中也常见到,如将乒乓球放入一圆柱形的筒中,筒的一端是封闭的,乒乓球的放入和取出都是从筒的一端进行的,那它就是一个堆栈。堆栈这种数据结构,无论在系统软件还是应用软件设计中都是经常要用到的。队列(queue)是一种运算受限制的线性表,它与堆栈的不同之处在于元素的添加在表的一端进行,而元素的删除在表的另一端进行。允许添加元素的一端称为队尾
26、(rear);允许删除元素的一端称为对头(front)。向队列添加元素称为入队,从队列中删除元素称为出队。由于新入队的元素只能添加在队尾,出队的元素只能是删除对头的元素,所以队列的特点是先进入队列的元素先出队,故队列也称作先进先出表或FIFO(first in first out)表。队列与人们日常生活中购物或办事排队的情况十分类似,队中的成员只能按顺序向前移动,而离队的总是排在最前面的人。2.2 树和二叉树树形结构是一类重要的非线性数据结构。其中以树和二叉树最为常用,直观看来,树是以分支关系定义的层次结构。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可以用树来形象表示。树
27、( Tree )是由 n(n>=0)个有限结点组成一个具有层次逻辑关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 每个结点有零个或多个子结点;每一个子结点只有一个父结点; 没有前驱的结点为根结点; 除了根结点外,每个子结点可以分为 m 个不相交的子树;树的有关术语如下:结点的度:一个结点含有的子树的个数称为该结点的度;兄弟结点:具有相同双亲的结点互称为兄弟节点;树的度:一棵树中,最大的节点的度称为树的度; 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。二叉树( Binary Tree )是一种特殊的树型结构,它的特点是每
28、个节点至多只有两棵子树,并且二叉树的子树有左右之分,其次序不能随便颠倒。2.3 c语言简介C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,应用如此广泛的它具有如下特点:C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程
29、序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言的主要优点包括以下方面:简洁紧凑、灵活方便;运算符丰富;数据结构丰富;C语法限制不太严格、程序设计自由度大;C语言允许直接访问物理地址,可以直接对
30、硬件进行操作;C语言程序生成代码质量高,程序执行效率高;C语言适用范围大,可移植性好。4沈阳工程学院课程设计报告 第三章 系统分析与设计 第三章 系统分析与设计3.1 停车场管理系统3.1.1 系统的功能分析本任务要求实现停车场管理系统,车辆到达停车场进行车辆停放管理。根据需要,可以分为以下三种情况:车辆到达停车场,车辆进入停车场,车辆离开停车场。其功能模块图如图3.1所示。停车场管理系统车辆进入停车场车辆到达停车场车辆离开停车场车辆进入停车场车辆停留在便道输出车辆进入的信息记录进入的时间和位置记录车辆离开的时间位置输出应缴纳的费用输出车辆离开的信息便道的车辆进入停车场图3.1停车场管理系统功
31、能模块图3.1.2 系统模块分析及其流程图车辆到达停车场:其中车辆到达时需要用户输入车辆信息,接着要判断栈是否已满,如当前栈未满,则进行入栈操作,即车辆进入停车场;如果栈已满,则车辆必须进入便道等待。其流程图如图3.2所示。开始输入车辆信息判断停车场是否有空位车辆进入停车场是结束车辆进入便道否图3.2车辆到达停车场功能流程图车辆进入停车场:车辆进入,则进行入栈操作,即将车辆信息结点进行入栈操作。其流程图如图3.3所示。开始定义变量记录车辆进入的时间及位置输出已进入车辆的信息结束图3.3车辆进入停车场功能流程图车辆离开停车场:车辆的离开,则需要另设一个栈,给离去的汽车让路而从停车场退出来的汽车临
32、时停放,也用顺序栈实现,车辆离开后需检查便道内是否有车辆等待,若有等待车辆则进行便道内的车辆进入停车场的操作,即将车辆信息结点进行入栈操作,输入当前时间后开始计费,最后进行出队操作,表示车辆已离开便道。其流程图如图3.4所示。开始定义变量记录车辆离开的时间及位置输出要离开车辆信息及费用判断便道内是否有车辆进入停车场结束是否图3.4车辆离开停车场功能流程图3.2 家族关系管理系统3.2.1 系统分析作为家族关系管理系统自然少不了各个成员之间关系的查询,若家族添了新丁自然要在家谱中添加成员,而即使有成员死亡但是他仍然是家族的一员,作为一个系统自然不能只对一个家族进行管理,要具有通用性。综上所述可以
33、得到系统应有以下的主要功能建立一个家族关系保存家族关系打开一个新的家族关系向一个家族中添加新成员查询成员之间的关系系统功能图如图 3.5 所示:家族关系管理系统建立一个家族关系保存家族关系打开一个新的家族关系向一个家族中添加新成员查询成员之间的关系图 3.5 系统功能图3.2.2 系统设计每一个系统都是有菜单的,这一个也不例外,而且系统的每一个功能的执行都要经过菜单,所以系统的功能函数不需要在主函数中调用,只需在菜单函数中调用。因此主函数就比较简单,流程图如图3.6所示:开始调用窗口函数调用菜单函数结束 开始输出菜单输入选项根据输入选项调用相应的功能函数是否选择了退出 y/n结束 YN图3.6
34、 主函数流程图 图3.7菜单函数流程图 作为菜单自然要具有执行完功能后返回菜单的功能,而每一个功能的执行都需要有相应的输入选项,退出系统自然也是菜单必不可少的功能之一。据此可得如上图3.7所示的菜单函数的流程图。系统中的建立、保存和打开功能只是需要依着递归的思想进行进行输入,写入或者读取,思路比较简单,就不一一画出流程图了。对于添加功能,要先查找新成员的双亲,以便确定新成员在家谱中的位置,然后再把新成员的信息添加到家谱中,因此再添加函数中需要输入新成员的双亲信息和新成员信息,其具体流程图如图3.8所示:开始输入新成员的双亲信息查找到新成员的双亲双亲当前是否有孩子 y/n输入新成员的信息把新成员
35、链在双亲的孩子指针上把新成员链在双亲当前最后孩子的兄弟指针上结束YN图3.8添加功能函数流程图由于所要查询关系的复杂性,查询功能函数需要给出一个子菜单,供用户根据需要和菜单提示进行特定关系的查找,因为查找关系是为了给用户看,所以查找到之后要输出,由于用户可能要查询多种关系,因此每查询到一种关系后都要返回子菜单,据此可得如图3.9所示的查询功能函数流程图。开始输出子菜单输入选项根据输入选项查询相应关系并输出是否选择了退出或返回 y/n结束YN图3.9 查询功能函数流程图综上已经给出了系统的所以功能设计,据设计的流程图和思想编写代码,然后进行组装、调试,即可实现整个家族关系管理系统。10沈阳工程学
36、院课程设计报告 第四章 系统功能实现第四章 系统功能实现4.1停车场管理系统功能实现4.1.1 定义主函数及菜单函数一般而言,编写一个能运行在操作系统上的程序,都需要一个主函数。主函数意味着建立一个独立进程,且该进程成为了程序的入口,对其它各函数(在某些OOP语言里称作方法,比如Java)进行调用,当然其它被调用函数也可以再去调用更多函数。主函数既是程序的入口,又是程序的出口,通常我们还可以指定一个exit code再退出,以表明程序最后的结果是什么样的。在这里我们采用模块化设计,由于此系统是运用栈和队列的思想编出的,所以我们首先要定义一些头文件及所涉及到的结构体。另外对于主函数我们也要声明一
37、些必要的变量。函数源代码及功能实现如下:头文件及结构体定义如下:#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h"int MAX; /*定义一个全局变量用来存储车库最大容量*/ float price;/*每车每小时的费用*/typedef struct time int hour; int min; time; /*时间结点*/typedef struct node char num10; time reach
38、; time leave; Car; /*车辆信息结点*/ typedef struct Stack Car *stack100; int top; SqStack; /*停车站*/ typedef struct car Car *data; struct car *next; QNode;typedef struct Node QNode *front; QNode *rear; LinkQueue; /*通道*/ 主函数及菜单函数如下:void main() SqStack In,Out; LinkQueue W; int ch; InitStack(&In); /*初始化停车站*
39、/ InitStack(&Out); /*初始化让路的临时栈*/ InitQueue(&W); /*初始化通道*/ while(1) printf("*欢迎使用停车场管理系统*n");printf("t本系统由软件本101班第二小组开发,作者:修国山、王超、孙天龙。nn");printf("请输入停车场的容量:");scanf("%d",&MAX);printf("请输入停车场的收费标准(元/小时):");scanf("%f",&price);
40、printf("您输入的停车场容量为%d位,费用为%2.1f元/小时。n",MAX,price);printf("n*n");printf("(1)车辆到达n(2)车辆离开n(3)停车场信息n(4)退出系统n请选择n");printf("n*n");while(1) ch=getch();switch(ch) case 49:arrive(&In,&W);break; /*车辆到达*/ case 50:leave(&In,&Out,&W);break; /*车辆离开*/ ca
41、se 51:info(In,W);break; /*输出车站信息*/case 52:printf("谢谢使用!n");printf("n*n");exit(0); /*退出主程序*/default:printf("n按键无效,请重新按键选择!");/*49-52分别表示"1"-"4"这四个按键的键值*/system("CLS");printf("*欢迎使用停车场管理系统*n");printf("t本系统由软件本101班第二小组开发,作者:修国山、
42、王超、孙天龙。n");printf("您输入的停车场容量为%d位,费用为%2.1f元/小时。n",MAX,price);printf("n*n");printf("(1)车辆到达n(2)车辆离开n(3)停车场信息n(4)退出系统n请选择n");printf("n*n");主函数及菜单功能实现如图4.1所示:图4.1 主函数及菜单功能实现4.1.2 车辆到达并进入停车场功能车辆到达停车场时,我们需要用户输入车辆信息,包括车辆到达的时间。接着要判断栈是否已满,如当前栈未满,则将车辆信息结点进行入栈操作,即车辆
43、进入停车场;如果栈已满,则车辆必须进入便道等待,即将车辆信息结点进行入队操作。函数源代码及功能实现如下:int arrive(SqStack *In,LinkQueue *W) /*车辆到达*/ Car *p; QNode *t; p=(Car *)malloc(sizeof(Car); flushall();printf("停车场还有%d停车位(若停车位为0,车可先进入便道等待)",MAX-In->top);printf("n请输入车牌号码(例:湘D0734):"); scanf("%s",p->num); if(In-
44、>top<MAX) /*停车场未满,车进车场*/ In->top+;printf("停车的位置:%d号停车位。",In->top); /printf("n请输入车到达的时间(格式"*:*"):");printf("n请输入车到达的时间:");scanf("%d:%d",&(p->reach.hour),&(p->reach.min); In->stackIn->top=p;printf("请按任意键返回n");p
45、rintf("n*n");getch(); return(1); else /*停车场已满,车进便道*/ printf("停车位已满,该车须在便道等待!"); t=(QNode *)malloc(sizeof(QNode); t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; printf("n请按任意键返回"); printf("nn*n");getch();return(1); 功能实现如图4.2所示:图4-2车辆到达并进入停车
46、场功能4.1.3 车辆离开停车场功能车辆离开停车场时,我们需要另设一个栈,给离去的汽车让路。而从停车场退出来的汽车,我们通过顺序栈来实现临时停放。车辆离开后,需检查便道内是否有正在等待的车辆,若有车辆,则进行车辆进入停车场的操作,即将车辆信息结点进行入栈操作,与此同时进行出队操作。然后输入当前时间,并开始计费。函数源代码及功能实现如下:void leave(SqStack *In,SqStack *Out,LinkQueue *W) /*车辆离开*/ int place; Car *p,*t; QNode *q; /*判断车场内是否有车*/ if(In->top>0) /*有车*/
47、 while(1) /*输入离开车辆的信息*/ printf("请输入车在停车场的位置(1-%d):",In->top); scanf("%d",&place); if(place>=1&&place<=In->top)break; while(In->top>place) /*车辆离开*/ Out->top+; Out->stackOut->top=In->stackIn->top; In->stackIn->top=NULL; In->top-
48、; p=In->stackIn->top; In->stackIn->top=NULL; In->top-; while(Out->top>=1) In->top+; In->stackIn->top=Out->stackOut->top; Out->stackOut->top=NULL; Out->top-; print(p,place); /*判断通道上是否有车及车站是否已满*/ if(W->front!=W->rear)&&In->top<MAX) /*便道的
49、车辆进入停车场*/ q=W->front->next; t=q->data; In->top+; printf("n便道的%s号车进入停车场第%d号停车位。",t->num,In->top); printf("n请输入现在的时间(格式"*:*"):"); printf("n请输入现在的时间:");scanf("%d:%d",&(t->reach.hour),&(t->reach.min); W->front->next=
50、q->next;if(q=W->rear) W->rear=W->front; In->stackIn->top=t; free(q); else printf("停车场里没有车n"); /*没车*/printf("n请按任意键返回");printf("nn*n");getch();功能实现如图4.3所示:图4.3 车辆离开停车场功能4.1.4 停车场信息输出功能对于停车场管理系统,无论是车辆的到达及进入停车场,还是车辆离开停车场,有时为了满足用户的需求以及为用户提供更大的方便,我们往往要查看停车场
51、内的信息。为此,我们便要设计一个能够输出车辆信息的函数,源代码及功能实现如下:void info1(SqStack *S) /*列表输出车场信息*/ int i; if(S->top>0) /*判断停车场内是否有车*/ printf("n停车场信息如下:"); printf("n位置 到达时间 车牌号nn"); for(i=1;i<=S->top;i+) printf(" %dt",i); printf("%d:%d ",S->stacki->reach.hour,S->s
52、tacki->reach.min); printf("%sn",S->stacki->num); else printf("停车场里没有车"); void info2(LinkQueue *W) /*显示便道信息*/ QNode *p; p=W->front->next; if(W->front!=W->rear) /*判断通道上是否有车*/ printf("n便道中车辆的车牌号为:nn"); while(p!=NULL) printf(" %sn",p->data->num); p=p->next; else printf("n便
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防库房错配管理
- 影城消防培训
- 语文-小升初语文6月18日题库
- 门诊皮试阳性护理查房
- 建筑行业绿色建筑材料与技术应用方案
- 电线电缆行业高压电缆研发方案
- 四年级数学(简便运算)计算题专项练习与答案
- 供应商合作质量奖励制度
- 防洪与减灾作业指导书
- 预防接种专业
- 监理安全责任制
- 浙江省杭州市杭州二中钱江学校2024-2025学年高一物理下学期月考试题含解析
- 修复征信服务合同模板
- JGJ106-2014建筑基桩检测技术规范
- JT-T-1239-2019沥青路面抗凝冰涂层材料技术条件
- 建筑装饰行业风险管理与控制研究
- 连接器基础知识培训
- 医院培训课件:《白疕(银屑病)中医护理查房》
- 一汽-大众供应商管理流程介绍.sbx
- 招标代理机构入围 投标方案(技术方案)
- 招投标代理挂靠协议书
评论
0/150
提交评论