张迪的课程设计报告
教学实训报告3篇

教学实训报告3篇Teaching practice report汇报人:JinTai College教学实训报告3篇前言:报告是按照上级部署或工作计划,每完成一项任务,一般都要向上级写报告,反映工作中的基本情况、工作中取得的经验教训、存在的问题以及今后工作设想等,以取得上级领导部门的指导。
本文档根据申请报告内容要求展开说明,具有实践指导意义,便于学习和使用,本文档下载后内容可按需编辑修改及打印。
本文简要目录如下:【下载该文档后使用Word打开,按住键盘Ctrl键且鼠标单击目录内容即可跳转到对应篇章】1、篇章1:教学实训报告2、篇章2:教学实训报告3、篇章3:教学实训报告篇章1:教学实训报告实训目的:英语教学设计是培养学生综合运用本专业基础理论、基本知识和基本技能分析解决实际问题能力的一个重要环节;是本专业各个先前教学环节的深化和检验。
通过教学设计,学生可以学会搜集资料,独立分析和解决问题,有利于他们更好地适应实际工作。
实训内容:授课素材的内容来源应为大学本科阶段所学课程的教材,学生与指导教师商定后,选定具体内容。
实训过程:第16周(20xx年12月17日—20xx年12月21日)指定设计指导教师,学生选定设计方向及素材并备课。
第17-18周(20xx年12月24日—20xx年1月4日)撰写教案、制作PPT;第19周(20xx年1月7日—20xx年1月11日)学生授课及成绩评定;实训总结:课程设计是我们专业课程知识综合应用的实践训练,它是我们迈向社会,从事职业工作前一个必可不少的过程,“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。
我在这次的课程设计中,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑中打下了坚实的基础。
说实话,课程设计的过程中真的有点累。
然而,当我一着手清理自己的设计成果时,漫漫回味着这四周的心路历程,一种少有的成功喜悦,即刻使倦意顿消,虽然这是我刚学会走完第一步,也是人生的一点小小的胜利,然而它令我感到自己在逐渐的走向成熟。
一课一框张迪

杞人忧天
春秋时,杞国有个人一天到晚都 在担心天会突然塌下来,地会突然陷 下去,这样自己会无处安身。为此, 他睡不着觉、吃不下饭。当人们告诉 他天是由大气组成,不可能掉下来时 ,他又担心起太阳、月亮、星星是否 会落下来,砸破自己的头。 在生活实践中,人们会自觉不 自觉地思考世界,思考周围的人和事, 并用自己在思考中形成的观念来指导 自己的生活和实践。因此,我们说, 哲学源于人们对实践的追问和对世界 的思考。
哲学智慧产生于人类 的实践活动
哲学源于人们对实践的 追问和对世界的思考 哲学的本义
哲学是指导人产生 活得更好的艺术
哲学的意义
哲学的任务
思想政治必修四 生活与哲学
吉林田中高二政治组制作
概论
(第1、2、3课)
辩证唯物论
(物质和意识的辩证 关系----第4、5课) (联系、发展、矛盾; 创新----第三单元 第7、8、9、10课)
辩证唯物主义
唯物辩证法
马哲
历史唯物主义
唯物辩证的 认识论
(实践和认识的辩证 关系----第6课)
历
史
观
(第11课)
价值观人生观
(第12课)
一单元 知识框架 1课——美好生活的向导 哲 学 2课——百舸争流的思想 哲学的基本问题 3课——时代精神的精华 马克思主义哲学
生活智慧 与 时代精神
综合探究——哲学的功能
第一课
美好生活的向导
一框题 知识框架
生活与哲学
哲学就在 我们身边 哲学与人们 生活的关系
生活处处 有哲学 哲学是指导 人们生活得 更好地艺术
哲学并不神秘,哲学就在我们身边
2.哲学是指导人们生活得更好的艺术
有一艘船载着三个人,其中一个是著名的物理学 家,另外两个分别是著名的生物学家和数学家。不 料在海上发生了意外,为了挽救另外两个人的生命, 把损失降到最小,必须把一个人扔下去。 那么你应当把谁扔下去呢?
基于翻转课堂教学模式改革的高职体育课程设计——以秦皇岛职业技

· 229 ·校园心语【摘 要】本文通过《传统武术》选项课翻转课堂模式的课程设计,展示了我院体育课程改革的成果。
首先,学生热情高涨,自主学习能力明显提高;其次,教师工作积极性提高,教师的教学工作由讲授内容变为引导学习;最后,学生体质健康状况得到明显改善。
【关键词】翻转课堂 课程设计基于翻转课堂教学模式改革的高职体育课程设计——以秦皇岛职业技术学院《传统武术》选项课为例李 蕊1 王晓虹1 焦健玮1 侯志红1 薛 媛1 张 迪1 赵青山1 朱嘉慧2一、设计背景根据《教育部关于进一步加强高等学校体育工作的意见》文件精神和学院国家骨干高职院校建设工作的办学特色项目公共基础课程改革工作的需要,促进我院体育课程建设,规范体育课程改革建设工作,提高学院体育课程教学质量,同时有效改善学生体质健康状况,特开展翻转课堂教学模式的改革工作。
二、实施过程下面以公共必修课程为例,介绍翻转课堂模式改革与建设的具体实施情况。
(一)课程设计(1)课程设计原则。
采用 “翻转课堂”教学模式;注重体育与健康课内课外一体化;注重课程目标及课程内容分析;设计教学活动时注意情境创设,强调“情境”在学习中的重要作用;强调以学生为中心,注重自主学习设计;强调“协作学习”,注重协作学习环境设计。
(2)设计思路。
“翻转课堂”颠覆了传统课堂。
传统模式是在课堂上学习知识,课后做练习内化知识,而“翻转课堂”刚好相反,是课前学习,课堂上内化知识,并进行评价与反思。
课前学生通过观看教师事先制作好的放在网上的微视频和与之配套的学习任务书,学习知识、技能,针对性地进行练习;课堂上明确研究任务,独立解决问题,小组合作探究学习,教师个性化指导,讨论展示来内化知识,评价反思。
(二)课程目标(1)运动参与目标:积极参与各种体育活动并基本形成自觉锻炼的习惯,基本形成终身体育的意识,能够编制可行的个人锻炼计划,具有一定的体育文化欣赏能力。
(2)运动技能目标:熟练掌握两项以上健身运动的基本方法和技能;能科学地进行体育锻炼,提高自己的运动能力;掌握常见运动创伤的处置方法。
5分钟课程设计

5分钟课程设计一、课程目标知识目标:1. 学生能掌握课程核心概念,如××××(具体概念),并能够描述其基本原理。
2. 学生能够回忆起相关历史事件/科学定律/文学作品等,并阐述其对现实生活的影响。
3. 学生能够理解并运用课程中涉及的××××(如公式、定理、语法等)解决问题。
技能目标:1. 学生通过课堂讨论、小组合作等方式,提高问题分析、解决的能力。
2. 学生能够运用所学知识进行实际操作,如××××(实验、写作、计算等),培养实践技能。
3. 学生学会使用××××(工具、方法等)进行资料搜集、整合,提高自主学习能力。
情感态度价值观目标:1. 学生培养对××××(学科/主题)的兴趣和热情,激发学习动力。
2. 学生通过学习,认识到所学知识在个人成长和社会发展中的价值,培养责任感。
3. 学生在团队合作中学会尊重他人,培养良好的沟通能力和团队精神。
课程性质分析:本课程为××××(学科)的示范课,旨在通过深入浅出的讲解和互动,帮助学生掌握课程核心知识,提高实践能力。
学生特点分析:考虑到学生所在年级的特点,注重启发式教学,激发学生的好奇心和求知欲,同时关注学生个体差异,因材施教。
教学要求:1. 教师需结合学生实际情况,设计生动有趣的教学活动,提高课堂参与度。
2. 关注学生学习成果,及时给予反馈,指导学生调整学习方法,提高学习效率。
3. 注重培养学生解决问题的能力,将知识应用于实际生活,提高综合素质。
二、教学内容本节教学内容围绕课程目标,结合教材××××(具体教材名称)的××章××节,进行以下安排:1. 引入新课:通过导入××××(案例、故事、现象等),激发学生兴趣,为新课学习奠定基础。
课程设计报告ps

课程设计报告ps一、教学目标本课程的教学目标是让学生掌握XX学科的基本知识,理解XX学科的基本概念、原理和方法,能够运用所学知识解决实际问题。
具体分为三个维度:1.知识目标:学生能够准确地掌握XX学科的基本概念、原理和方法,了解XX学科的发展历程和现状,以及相关领域的知识。
2.技能目标:学生能够运用所学知识解决实际问题,具备XX学科的基本实践能力,如实验操作、数据分析、论文撰写等。
3.情感态度价值观目标:学生对XX学科产生浓厚的兴趣,树立科学的世界观和价值观,培养良好的科学道德和职业素养。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.XX学科的基本概念、原理和方法,如XX定律、XX原理、XX技术等。
2.XX学科的发展历程和现状,包括重要事件、重要人物、代表性成果等。
3.XX学科在相关领域的应用,如XX技术在工业、农业、医学等领域的应用案例。
4.实际问题解决方案的设计与实施,如案例分析、实验设计、数据分析等。
三、教学方法为了实现课程目标,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
具体方法将根据教学内容和学生的实际情况灵活运用。
1.讲授法:通过教师的讲解,让学生掌握XX学科的基本知识,理解基本概念、原理和方法。
2.讨论法:引导学生针对实际问题进行思考和讨论,培养学生的思辨能力和团队合作精神。
3.案例分析法:通过分析具体案例,让学生了解XX学科在实际中的应用,提高学生的实践能力。
4.实验法:学生进行实验操作,培养学生的动手能力和实验技能。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用国内权威出版的XX学科教材,确保知识的科学性和系统性。
2.参考书:推荐学生阅读相关领域的经典著作和最新研究成果,拓宽知识面。
3.多媒体资料:制作课件、教学视频等,以图文并茂的形式呈现教学内容,提高学生的学习兴趣。
4.实验设备:配置必要的实验设备,为学生提供动手实践的机会,培养实验技能。
课程设计实验报告引言

课程设计实验报告引言一、教学目标本课程的教学目标是使学生掌握【学科名称】的核心知识,理解【学科名称】的基本概念和原理,具备运用【学科名称】知识解决实际问题的能力。
具体分为以下三个维度:1.知识目标:学生能够准确理解和记忆【学科名称】的基本概念、原理和知识点,掌握【学科名称】的基本理论和方法。
2.技能目标:学生能够运用【学科名称】的知识和方法分析、解决实际问题,具备一定的实践操作能力。
3.情感态度价值观目标:学生能够认识到【学科名称】在现实生活和经济社会发展中的重要性,培养对【学科名称】的兴趣和热情,形成积极的学习态度和良好的学习习惯。
二、教学内容本课程的教学内容主要包括【学科名称】的基本概念、基本原理、理论和方法,以及实际应用案例。
具体安排如下:1.教材:以【教材名称】为主线,系统讲解【学科名称】的基本概念、基本原理和理论知识。
2.章节安排:按照教材的章节顺序进行教学,每个章节安排【课时数量】课时。
3.教学内容列举:–章节1:介绍【学科名称】的基本概念和原理–章节2:讲解【学科名称】的理论体系–章节3:阐述【学科名称】的应用方法和实例三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性,提高教学效果。
具体方法如下:1.讲授法:教师通过讲解、阐述等方式,系统传授【学科名称】的知识点和理论。
2.讨论法:引导学生进行小组讨论或全班讨论,提高学生对【学科名称】知识的理解和应用能力。
3.案例分析法:通过分析实际案例,让学生了解【学科名称】在现实生活中的应用,提高学生的实践能力。
4.实验法:学生进行实验操作,培养学生的动手能力和实践能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将采用以下教学资源:1.教材:【教材名称】,作为主要教学资源,用于系统讲解【学科名称】的知识。
2.参考书:【参考书名称】,提供额外的学习资料,帮助学生深入理解【学科名称】。
3.多媒体资料:利用PPT、视频等多媒体资源,形象生动地展示【学科名称】的原理和实例。
课程设计成绩构成
课程设计成绩构成一、课程目标本课程旨在帮助五年级学生深入理解《数学》课本中“分数与小数”章节的知识,培养其数学运算与解决问题的能力,同时激发学生对数学的兴趣和积极的学习态度。
1. 知识目标:- 掌握分数与小数的定义、性质及转换方法;- 学会分数与小数的加减乘除运算,并能熟练运用;- 理解分数与小数在实际问题中的应用。
2. 技能目标:- 能够正确、迅速地完成分数与小数的四则运算;- 能够运用分数与小数解决生活中的实际问题;- 培养学生的逻辑思维能力和数学推理能力。
3. 情感态度价值观目标:- 培养学生对数学的兴趣,增强学习数学的自信心;- 培养学生合作学习、积极探究的良好学习习惯;- 增强学生对我国数学文化的认识,培养学生的民族自豪感。
课程性质:本课程属于数学学科的基础知识教学,具有实用性和操作性。
学生特点:五年级学生对分数与小数已有一定的了解,具备基本的运算能力,但需进一步巩固和提高。
教学要求:结合学生特点,采用启发式教学,注重理论与实践相结合,让学生在掌握知识的同时,提高解决问题的能力。
在教学过程中,关注学生的情感态度,激发学生的学习兴趣,培养良好的学习习惯。
通过分解课程目标为具体的学习成果,为后续教学设计和评估提供明确依据。
二、教学内容本章节依据课程目标,围绕《数学》五年级教材中“分数与小数”章节进行教学内容的选择和组织。
具体教学内容如下:1. 分数与小数的定义与性质- 分数的定义、分类及性质;- 小数的定义、分类及性质;- 分数与小数的互化方法。
2. 分数与小数的四则运算- 分数加减乘除运算的法则与运算技巧;- 小数加减乘除运算的法则与运算技巧;- 分数与小数四则混合运算。
3. 分数与小数在实际问题中的应用- 运用分数与小数解决生活中的实际问题;- 案例分析:购物、计量、面积等。
4. 教学内容的安排与进度- 第一节课:分数与小数的定义与性质;- 第二节课:分数与小数的互化方法;- 第三节课:分数与小数的四则运算;- 第四节课:分数与小数在实际问题中的应用。
pcd课程设计总结
pcd课程设计总结一、教学目标本章节的教学目标包括以下三个方面:1.知识目标:学生能够掌握课本中的基本概念、原理和方法,理解课程内容与实际应用之间的联系。
2.技能目标:学生能够运用所学知识解决实际问题,提高分析问题和解决问题的能力。
3.情感态度价值观目标:培养学生对学科的兴趣和热情,增强其对学习的自主性和积极性。
在制定教学目标时,要充分考虑课程性质、学生特点和教学要求,确保目标具有可衡量性和具体性,以便于学生和教师了解课程的预期成果。
二、教学内容根据课程目标,本章节的教学内容主要包括以下几个方面:1.教材章节:第1章至第5章,涉及课程基本概念、原理和方法的介绍。
2.重点内容:每个章节中的关键知识点,如定义、原理、案例分析等。
3.实际应用:结合生活中的实例,让学生了解课程内容在实际中的应用。
教学内容要保证科学性和系统性,制定详细的教学大纲,明确教学内容的安排和进度。
三、教学方法为了实现课程目标,本章节将采用以下教学方法:1.讲授法:教师讲解教材中的基本概念、原理和方法。
2.讨论法:分组讨论,让学生分享对重点内容的理解和看法。
3.案例分析法:分析生活中的实际案例,引导学生将理论知识应用于实际。
4.实验法:安排实验课程,让学生亲自动手,增强实践操作能力。
教学方法要多样化,以激发学生的学习兴趣和主动性。
四、教学资源本章节的教学资源包括以下几个方面:1.教材:指定教材,为学生提供基本的学习材料。
2.参考书:推荐相关参考书籍,拓展学生的知识视野。
3.多媒体资料:制作PPT、视频等多媒体资料,丰富教学手段。
4.实验设备:准备实验所需的设备,确保实验课程的顺利进行。
教学资源要能够支持教学内容和教学方法的实施,丰富学生的学习体验。
五、教学评估本章节的教学评估主要包括以下几个方面:1.平时表现:评估学生在课堂上的参与度、提问回答等情况,以体现其对课程内容的理解和掌握程度。
2.作业:布置课后作业,评估学生对教材知识点的掌握和运用能力。
部编四年级上数学《角的度量》张迪教案PPT课件 一等奖新名师优质课获奖比赛公开西南师大
角的度量一、教学内容:西师版四年级上册数学三单元角的度量二、教学目标:1.认识量角器和角的计量单位,掌握用量角器量角的方法,会用量角器正确的测量角的度数。
2.通过构建量角器的模型,了解量角器的各部分名称以及作用,达到能正确的用量角器测量角的大小的目标。
3.培养学生观察、想象、对比的能力以及认真细致有序操作的良好习惯。
三、教学重难点:重点:掌握用量角器量角的方法,会用量角器正确的测量角的度数。
难点:用量角器正确的测量角的度数。
四、教学过程:(一)旧知复习复习角的意义以及角的各部分的名称。
师:角是怎么形成的?你能说出下面的这个角的各部分的名称吗?(二)新课引入活动1.用半个圆片折角师:老师这里有个半圆。
如果我将半圆对折,这样得到了一个什么角?生:直角师:如果我再继续对折,那么又得到了一个什么角?生:锐角师:再继续对折一次,得到的还是一个锐角,但是这个角和前面一个角比较,大小有什么变化?生:变小了师:如果我们继续这样对折下去,那么得到的角会越开越小,同意吗?生:同意。
师:那我们现在把这个半圆的纸片展开,看看半圆上的这些折痕把这个半圆分成了多少个想刚才那样的角?生:8个。
师:现在同学们想一想,如果我把这个半圆想这样不断的对折,直到这些折痕把半圆分成180个相等的角为止,这样的一个角会有多大?用你的手比一比,在草稿本上画一画。
生:操作师:这个角非常的小。
在我们数学上我们就说这样的一个角就是1度的角。
而角的单位就是度。
活动2.认识量角器师:那1度的角到底有多大?我们这里由一个工具,叫做量角器。
让它来告诉我们1度的角有多大。
生:观察量角器。
找出1度的角。
师:在量角器上有180个1度的角。
这些角的顶点都在同一个点上,这个点叫做量角器的中心点。
1个1度是1度,那么10个1度的角合起来就是10度,50个1度的角合起来就是50度......而我们的量角器就是这样来测量角的大小的。
师:量角器的起点在哪里?量角器的刻度在哪里?|生:交流汇报师:量角器有两个起点,我们叫做0度刻度线。
初中八年级物理教案-二探究液体压强-一等奖
探究液体压强顺义区第八中学张迪一、指导思想与理论依据本节课是一节很好的实验探究课,因此在设计这节课时,力求体现探究过程,在教师的指导下,学生在学习中自主地发现问题、探究问题、获得结论,让学生从“被动”转化成“主动”,成为学习的真正主人。
在整个探究过程中,强调对学生的启发和引导。
学生在整个探究过程中处于主动,发挥主体地位,同时也在知识的获得过程中充满成就感。
为降低学生设计的难度,利用小实验为探究液体内部压强与哪些因素有关提供依据,避免盲目的猜想。
教学中引导学生设计出证明液体压强存在的方法,包括用橡皮膜的形变表示液体压强的存在,用形变的程度描述压强的大小。
学生在经历探究实验的过程中,逐步认识体会到液体内部压强规律。
二、教学内容分析《探究液体压强》是本章的第二节,学生在初步了解压力及固体压强之后进一步来研究液体的压强。
液体的压强是压强的另一种形式,本节课的内容既是对压强知识的扩展又是学习大气压强以及浮力知识的基础和铺垫,同时液体压强又是一节很好的探究课程。
本节安排了"探究液体对容器的侧壁是否存在压强"以及“探究液体内部压强的特点”等活动,让学生在科学探究过程中培养学生创造性思维的能力,激发学生的探究意识,引领学生以积极的心态参与探究性学习活动。
本节着重培养学生实验探究的思想、锻炼学生实验操作以及小组合作的能力,所以将教材内容分为两节,液体压强公式的推导部分安排在第二课时。
三、学生情况分析1学生已有的认知水平学生已经学习了压力和固体压强的有关知识,并能够用形变的程度描述压强大小等问题。
调查中大约90%的学生从生活经验中已经获得液体也受重力并具有流动性,由已学压强知识能够认识到液体对容器底部有压强。
但对物理公式的理解及运用还存在困难,定量的计算比较困难。
2可能出现的问题学生对液体压强缺乏直观感受,感性经验较少,对液体压强的认识只停留在初级阶段。
而液体压强知识比较抽象,且初二学生抽象思维能力往往需要感性经验的支持,所以学生难理解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计课程名称:数据结构课程设计设计课题1:常用排序算法的实现及比较与分析设计课题2:求最长公共子串****:**总评成绩:专业:计算机科学与技术班级:1382061 姓名:张迪学号:*********二O一五年五月七日一、程序目标及功能1.1 程序目标1、封装一个Account类 - 业务数据(1)写一个账户类(Account),属性并且完全封装:id:账户号码长整数(Long) password:账户密码字符串类型(String)name:真实姓名字符串类型(String)personId:身份证号码字符串类型(String)email:客户的电子邮箱字符串类型(String) balance:账户余额双精度(double)方法: deposit: 存款方法,参数类型:double,返回类型:Account withdraw:取款方法,参数类型:double,返回类型:Account构造方法: 有参和无参,有参构造方法用于设置必要的属性.2、完成以下两种账户类型的编码银行的客户分为两大类:储蓄账户(SavingAccount)和信用账户(CreditAccount),两种的账户类型的区别在于:储蓄账户不允许透支,而信用账户可以透支,并在用户在满足银行条件的情况下允许用户调整自己的透支额度。
注意:(1)、CreditAccount需要多一个属性 ceiling 透支额度(2)、CreditAccount需要覆盖(重写)Account中的取款方式withdraw()3、完成Bank类的编码。
属性:1)、当前所有的账户对象的信息,存放在集合中:List<Account>.2)、当前账户数量index.方法:(1)用户开户(register)参数列表: Long 账号, String密码, String确认密码,String 姓名,String身份证号码,String邮箱,int 账户类型;(Long id, String password, String repassword, String name, String personID, String email, int type)返回类型:Account项目需求规定账户类型:0 –储蓄账户 1 –信用账户 2 –可贷款储蓄账户 3–可贷款信用账户(2)用户登录(login)参数列表: Long 账号, String密码;(Long id, String password)返回类型:Account(3)用户存款(deposit)参数列表: Long 账号, double存款金额;(Long id, double money)返回类型:Account(4)用户取款(withdraw)参数列表: Long 账号,String 密码,double取款金额;(Long id, String password, double money)返回类型:Account(5)设置透支额度(updateCeiling)参数列表: Long 账号, String 密码,double透支额度金额;(Long id, String password, double money)返回类型:Account提示:这个方法需要验证账户是否是信用账户(6)转账功能(transfer)参数:from转出账户,passwordFrom 转出账号的密码,to转入账户,money转账的金额 (Long from, String passwordFrom, Long to, double money)返回值:boolean4、另外,请为Bank类添加几个统计方法(1)统计银行所有账户余额总数(2)统计所有信用账户透支额度总数5、编写测试类(不需要写)写个测试类,测试以上代码能否正常工作。
6、覆盖toString方法查看对象的内容7、让银行来提供账号(id)的生成修改Account类和Bank类,银行用户的账号(id)应是自动生成的,初始值为:862150212013020001(国家+邮编+年+月+序号)。
比如:第一个开户的账号为862150212013020001,第二开户的账号为862150212013020002 …依此类推.8、修改存款和取款方法对于Account类中的存款方法和取款方法进行修改.存款方法:改为不允许子类修改取款方法:改为抽象方法,便于在子类中去覆盖(重写)9、单例将Bank类作成单例。
10、新增一个贷款功能为了满足业务发展的需求,银行需要为用户提供贷款的功能,来满足更多的用户需求。
抽象出一个贷款功能的接口:Loanable该接口具有以下功能:贷款(requestLoan)参数:money贷款金额返回类型:Account还贷(payLoan)参数:money还贷款金额返回类型:Account11、新增两种的新的账户类型为了满足业务发展的需求,新增两种具有贷款功能的账户类型:可以贷款不可以透支账户和可以贷款可以透支账户;为SavingAccount和CreditAccount各自添加一个子类LoanSavingAccount类和LoanCreditAccount类,同时让两个新增的子类都必须要实现Loanable接口。
为了表示某个贷款账户的贷款金额,需要为所有的可贷款账户提供一个能记录贷款金额,所以要为CreditAccount类整一个普通的成员属性loanAmount,为长整形(long)。
说明1: LoanSavingAccount类表示该账户可以贷款,不可以透支;LoanCreditAccount类表示该账户可以贷款,可以透支。
说明2:贷款和透支是不一样的,透支指的是账户余额小于0,而贷款用户需要一个贷款额的属性.在ATM机上,用户可以选择贷款,也可以选择还贷款,而还贷款就是要把账户余额上的资金转到贷款额上例如:用户余额10000元,贷款额100000元,用户可以选择还款5000元,则用户余额变为5000,贷款额变为95000元.12、为Bank类添加三个新方法贷款(requestLoan)参数:id 账户,money贷款金额(Long id , double money)返回类型:Account还贷款(requestLoan)参数:id 账户,money还贷款金额(Long id , double money)返回类型:Account统计所有账户贷款的总额(totoal)参数:无返回类型:double13、为Bank类添加一个方法,能够打印所有用户的总资产排名(提高部分)说明: 1)、一个用户可能会有多个账号,以身份证号为准.2)、总资产指多个账户余额的总和,不需要考虑贷款账户的贷1.2 系统功能本系统功能有:1、用户开户与登录:用户输入用户化信息可以注册帐号,可以登入系统2、ATM存款:用户输入金额可将金额存入3、ATM取款:用户可以从ATM中取出所需的金额4、转账功能:用户输入金额可以将金额转给其他用户的账户上5、贷款功能:用户可以进行贷款6、还贷功能:用户可以对贷款进行还贷7、资产排名功能:对用户所用户的所有资产进行排名1.3 设计要求1、为本系统建立一个模型2、模型的数据类型以及数据规则要符合实际要求3、提供相应的接口与实现类以及方法4、实现存款、取款、贷款、转账、还贷、排名等功能5、将用户信息保存到TXT文件中二、程序功能模块组成及流程图2.1系统功能模块1、用户注册:用户输入用户名、密码、身份证号码、电子邮箱等信息,系统会为用户自动创建一个帐号,并将用户的信息记录在TXT文件中,系统中记录用户信息。
2、登录模块:用户输入帐号与密码,如果核对成功则进入系统。
3、存款模块:用户进入系统之后,选择存款选项,进入存款功能,用户再输入存款金额则可以进行存款。
4、取款模块:用户进入系统之后,选择取款选项,进入去款功能,用户再输入取款金额则可以进行取款。
5、转账模块:用户进入系统之后,选择转账选项,进入转账功能,用户再输入转入用户的帐号,之后输入金额则可以进行转账。
6、贷款模块:用户进入系统之后,选择贷款选项,进入贷款功能,用户再输入贷款金额则可以进行贷款。
7、还贷模块:用户进入系统之后,选择还款选项,进入还款功能,用户再输入还款金额则可以进行还款。
8、资产排名模块:用户进入系统之后,选择资产排名选项,用户则可浏览资产排名。
2.2各模块流程图1、用户注册流程图:图2.2-1:用户登录流程图2、用户登录流程图:图2.2-2:用户注册流程图图2.2-3:用户存款流程图图2.2-4:用户取款流程图图2.2-5:用户转账流程图图2.2-6:用户贷款流程图图2.2-7:用户还贷流程图图2.2-8:总资产排名流程图三、系统分析3.1 功能分析1、用户进入本系统需要有帐号、密码等,所以本系统需要有注册、登录模块,为用户提供注册、登录功能。
2、用户进入系统之后,用户可以进行存款、取款、转账、贷款、还贷等活动,系统必须为用户提供这些服务。
3、存款、取款、转账、贷款、还贷等功能,需要用户提供相关的数据以及信息,当用户选择某项服务之后且输入数据之,系统会根据用户的需求进行相关处理。
4、资产排名,当用户选择资产排名时,系统会显示相关的排名信息。
3.2总体分析本系统会根据用户的需求完成一些业务,例如:当用户需要注册时,系统会进入注册选项,用户输入密码、确认密码、省份证帐号、邮箱等信息,系统会为用户自动生成帐号,并将用户信息记录在文件中。
当用户注册之后,用户可以输入相应的信息用户才可以登入系统,登入系统之后,用户可以选择服务选项,如:取款、存款、转账等服务。
这些服务功能需要用户提供相关的数据,如:取款额、存款额、转账帐号等。
本系统还为用户提供了退出功能,用户选择退出时,用户就会退出系统。
四、程序代码及运行结果4.1 数据模型:4.1.1 基本类模型package ATM_Bank;public abstract class Account {private Long id; // 账户号码private String password; // 账户密码private String name; // 真实姓名private String personId; // 身份证号码private String email; // 客户的电子邮箱private double balance; // 账户余额private Long loanAmount;// 贷款金额public Account() {}public Account(Long id, String password, String name, String personId, String email, double balance) {this.id = id;this.password = password; = name;this.personId = personId;this.email = email;this.balance = balance;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getName() {return name;}public void setName(String name) { = name;}public String getPersonId() {return personId;}public void setPersonId(String personId) { this.personId = personId;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public double getBalance() {return balance;}public void setBalance(double balance) { this.balance = balance;}public Long getLoanAmount() {return loanAmount;}public void setLoanAmount(Long loanAmount) { this.loanAmount = loanAmount;}public String string(String str) {for (int i = 0; i < 20; i++) {if (str.length() <= 20) {str += " ";}}return str;}// 存款protected Account deposit(double money) {this.setBalance(this.getBalance() + money);return this;}// 取款protected abstract Account withdraw(double money);}4.1.2 信用账户模型package ATM_Bank;//信用账户public class CreditAccount extends Account {private double ceiling; // 透支额度public CreditAccount() {}public CreditAccount(Long id, String password, String name,String personId, String email, double balance, double ceiling) { // TODO 自动生成的构造函数存根this.setId(id);this.setPassword(password);this.setName(name);this.setPersonId(personId);this.setEmail(email);this.setBalance(balance);this.setCeiling(ceiling);}public double getCeiling() {return ceiling;}public void setCeiling(double ceiling) {this.ceiling = ceiling;}// 取款protected Account withdraw(double money) {if (this.getBalance() >= money) {this.setBalance(this.getBalance() - money);return this;} else {if (this.getBalance() + this.getCeiling() >= money) {System.out.println("本次已透支" + (money - this.getBalance()));this.setCeiling(this.getCeiling() + this.getBalance() - money);System.out.println("可透支" + this.getCeiling());this.setBalance(0);return this;} else {System.out.println("余额不足,超过透支额度");return null;}}}@Overridepublic String toString() {Double d = new Double(getBalance());Double c = new Double(getCeiling());return getId() + " " + string(getPassword()) + string(getName())+ string(getPersonId()) + string(getEmail())+ string(d.toString()) + string(c.toString()) + string(" ")+ " CreditAccount\r\n";}}4.1.3 储蓄账户模型package ATM_Bank;//储蓄账户public class SavingAccount extends Account {public SavingAccount() {}public SavingAccount(Long id, String password, String name,String personId, String email, double balance) {// TODO 自动生成的构造函数存根this.setId(id);this.setPassword(password);this.setName(name);this.setPersonId(personId);this.setEmail(email);this.setBalance(balance);}// 取款protected Account withdraw(double money) {if (this.getBalance() >= money) {this.setBalance(this.getBalance() - money);return this;} else {System.out.println("余额不足");return null;}}@Overridepublic String toString() {Double d = new Double(getBalance());return getId() + " " + string(getPassword()) + string(getName()) + string(getPersonId()) + string(getEmail())+ string(d.toString()) + string(" ") + string(" ")+ " SavingAccount\r\n";}}4.1.4 可以贷款可以透支账户模型package ATM_Bank;//可以贷款可以透支账户public class LoanCreditAccount extends CreditAccount implements Loanable {@Overridepublic Account requestLoan(double money) {// TODO 自动生成的方法存根return null;}@Overridepublic Account payLoan(double money) {// TODO 自动生成的方法存根return null;}public LoanCreditAccount(Long id, String password, String name,String personId, String email, double balance, double ceiling,Long loanAmount) {this.setId(id);this.setPassword(password);this.setName(name);this.setPersonId(personId);this.setEmail(email);this.setBalance(balance);this.setCeiling(ceiling);this.setLoanAmount(loanAmount);}@Overridepublic String toString() {Double d = new Double(getBalance());Double c = new Double(getCeiling());return getId() + " " + string(getPassword()) + string(getName())+ string(getPersonId()) + string(getEmail())+ string(d.toString()) + string(c.toString())+ string(getLoanAmount().toString()) + " LoanCreditAccount\r\n";}}4.1.5 可以贷款不可以透支账户模型package ATM_Bank;//可以贷款不可以透支账户public class LoanSavingAccount extends SavingAccount implements Loanable {@Overridepublic Account requestLoan(double money) {// TODO 自动生成的方法存根return null;}@Overridepublic Account payLoan(double money) {// TODO 自动生成的方法存根return null;}public LoanSavingAccount(Long id, String password, String name,String personId, String email, double balance, Long loanAmount) { this.setId(id);this.setPassword(password);this.setName(name);this.setPersonId(personId);this.setEmail(email);this.setBalance(balance);this.setLoanAmount(loanAmount);}@Overridepublic String toString() {Double d = new Double(getBalance());return getId() + " " + string(getPassword()) + string(getName())+ string(getPersonId()) + string(getEmail())+ string(d.toString()) + string(" ")+ string(getLoanAmount().toString()) + " LoanSavingAccount\r\n";}}4.2 Bank类package ATM_Bank;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Scanner;public class Bank {private ArrayList<Account> setAcc = new ArrayList<Account>(); // 当前所有的账户对象的信息private int index = 0; // 当前账户数量public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}// 创建文件public File creatFile() {File file = new File("F:\\Bank");file = new File("F:\\Bank" + File.separator + "bank.txt");try {file.createNewFile();} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}return file;}// 写文件public void writeFile(File file, String str) {OutputStream outputStream = null;try {outputStream = new FileOutputStream(file);str = str.replace("[", "");str = str.replace("]", "");str = " 账户号码账户密码真实姓名身份证号码客户的电子邮箱账户余额透支额度贷款金额用户类型\r\n "+ str.replace(",", "");byte[] b = str.getBytes();outputStream.write(b);} catch (FileNotFoundException e) {// TODO 自动生成的 catch 块e.printStackTrace();} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();} finally {try {outputStream.close();} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}}}private Long getID() {DateFormat ny = new SimpleDateFormat("yyyyMM");String str = "86215021";str += ny.format(new Date()) + "0001";Long Id = new Long(str);Id += index;return Id;}public void choose(Long id, String str) {Scanner scanner = new Scanner(System.in);System.out.println("1、存钱 2、取钱 3、转账 4、贷款 5、还款6、设置透支额度");int i = scanner.nextInt();while (i > 6 || i < 1) {System.out.println("重新选择");i = scanner.nextInt();}switch (i) {case 1:deposit(id, 0);break;case 2:withdraw(id, str, 0);break;case 3:transfer(id, str, null, 0);break;case 4:requestLoan(id, 0);break;case 5:payLoan(id, 0);break;case 6:updateCeiling(id, str, 0);break;}}// 用户注册public Account register(Long id, String password, String repassword, String name, String personID, String email, int type) { File file = creatFile();boolean flg = false;// 项目需求规定账户类型:0 –储蓄账户 1 –信用账户 2 –可贷款储蓄账户3–可贷款信用账户id = getID();System.out.println(id);Scanner scanner = new Scanner(System.in);System.out.println("String password");password = scanner.next();System.out.println("String repassword");repassword = scanner.next();while (password.contentEquals(repassword) == false) {System.out.println("确认密码错误");repassword = scanner.next();}System.out.println("String name");name = scanner.next();System.out.println("String personID");personID = scanner.next();System.out.println("String email");email = scanner.next();System.out.println("选择帐号类型:0 –储蓄账户 1 –信用账户 2 –可贷款储蓄账户 3–可贷款信用账户");type = scanner.nextInt();switch (type) {case 0:setAcc.add(new SavingAccount(id, password, name, personID, email,0.0));String str = setAcc.toString();writeFile(file, str);flg = true;break;case 1:setAcc.add(new CreditAccount(id, password, name, personID, email,0.0, 0.0));str = setAcc.toString();writeFile(file, str);flg = true;break;case 2:setAcc.add(new LoanSavingAccount(id, password, name, personID,email, 0.0, 0l));str = setAcc.toString();writeFile(file, str);flg = true;break;case 3:setAcc.add(new LoanCreditAccount(id, password, name, personID,email, 0.0, 0.0, 0l));str = setAcc.toString();writeFile(file, str);flg = true;break;}if (flg == true) {index++;System.out.println("注册成功");} else {System.out.println("注册失败");}System.out.println("1、用户注册 2、用户登录");int i = scanner.nextInt();while (i != 1 && i != 2) {System.out.println("重新选择");i = scanner.nextInt();}switch (i) {case 1:register(null, null, null, null, null, null, 0); // 用户注册break;case 2:login(null, null); // 用户登录break;}return null;}// 用户登录public Account login(Long id, String password) {Scanner scanner = new Scanner(System.in);System.out.println("Long id");//id = scanner.nextLong();System.out.println("String password");//password = scanner.next();boolean flg = false;for (Account a : setAcc) {if (id.equals(a.getId()) && password.equals(a.getPassword())) { flg = true;break;}}if (flg == true) {System.out.println("登录成功");choose(id, password);} else {System.out.println("登录失败");System.out.println("1、用户注册 2、用户登录");int i = scanner.nextInt();while (i != 1 && i != 2) {System.out.println("重新选择");i = scanner.nextInt();}switch (i) {case 1:register(null, null, null, null, null, null, 0); // 用户注册break;case 2:login(null, null); // 用户登录break;}}return null;}// 用户存款private Account deposit(Long id, double money) {String str = null;Scanner scanner = new Scanner(System.in);// System.out.println("Long id");// id = scanner.nextLong();System.out.println("double money");//money = scanner.nextDouble();boolean flg = false;for (Account b : setAcc) {if (id.equals(b.getId())) {b.deposit(money);str = setAcc.toString();File file = creatFile();writeFile(file, str);str = b.getPassword();flg = true;break;}}if (flg == true) {System.out.println("交易成功");} else {System.out.println("交易失败");}choose(id, str);return null;}// 用户取款private Account withdraw(Long id, String password, double money) { Scanner scanner = new Scanner(System.in);/** System.out.println("Long id");// id = scanner.nextLong();* System.out.println("String password");// password = scanner.next();*/System.out.println("double money");money = scanner.nextDouble();boolean flg = false;for (Account a : setAcc) {if (id.equals(a.getId()) && password.equals(a.getPassword())) { if (a.withdraw(money) != null) {String str = setAcc.toString();File file = creatFile();writeFile(file, str);flg = true;}break;}}if (flg == true) {System.out.println("交易成功");} else {System.out.println("交易失败");}choose(id, password);return null;}// 转账功能private boolean transfer(Long from, String passwordFrom, Long to, double money) {Scanner scanner = new Scanner(System.in);/** System.out.println("Long from");// from = scanner.nextLong();* System.out.println("String passwordFrom");// passwordFrom =* scanner.next();*/System.out.println("Long to");//to = scanner.nextLong();System.out.println("double money");//money = scanner.nextDouble();boolean flg = false;for (Account a : setAcc) {if (from.equals(a.getId()) && passwordFrom.equals(a.getPassword())) { if (a.withdraw(money) != null) {for (Account b : setAcc) {if (to.equals(b.getId())) {b.deposit(money);String str = setAcc.toString();File file = creatFile();writeFile(file, str);System.out.println("交易成功");flg = true;break;}}}}}if (flg == false) {System.out.println("交易失败");}choose(from, passwordFrom);return false;}// 贷款public Account requestLoan(Long id, double money) {String str = null;Scanner scanner = new Scanner(System.in);System.out.println("double money");money = scanner.nextDouble();boolean flg = false;for (Account a : setAcc) {if (id.equals(a.getId())&& (a instanceof LoanSavingAccount || a instanceof LoanCreditAccount)) {a.setLoanAmount((long) money);str = setAcc.toString();File file = creatFile();writeFile(file, str);System.out.println("交易成功");str = a.getPassword();flg = true;break;}}if (flg == false) {System.out.println("交易失败");}choose(id, str);return null;}// 还贷款public Account payLoan(Long id, double money) {String str = null;Scanner scanner = new Scanner(System.in);System.out.println("double money");money = scanner.nextDouble();boolean flg = false;for (Account a : setAcc) {if (id.equals(a.getId())&& (a instanceof LoanSavingAccount || a instanceof LoanCreditAccount)) {if (a.withdraw(money) != null) {a.setLoanAmount(a.getLoanAmount() - (long) money);str = setAcc.toString();File file = creatFile();writeFile(file, str);System.out.println("交易成功");str = a.getPassword();flg = true;break;}}}if (flg == false) {System.out.println("交易失败");}choose(id, str);return null;}// 设置透支额度private Account updateCeiling(Long id, String password, double money) { Scanner scanner = new Scanner(System.in);System.out.println("double monry");money = scanner.nextDouble();boolean flg = false;for (Account a : setAcc) {if ((a instanceof CreditAccount || a instanceof LoanCreditAccount && id.equals(a.getId()))&& password.equals(a.getPassword())) {((CreditAccount) a).setCeiling(money);String str = setAcc.toString();File file = creatFile();writeFile(file, str);flg = true;break;}}if (flg == false) {System.out.println("设置失败");} else {System.out.println("设置成功");}choose(id, password);return null;}// 统计银行所有账户余额总数public double amount() {double amount = 0;for (Account a : setAcc) {amount += a.getBalance();}return amount;}// 统计所有信用账户透支额度总数public double sum() {double sum = 0;for (Account a : setAcc) {if (a instanceof CreditAccount || a instanceof LoanCreditAccount) { sum += ((CreditAccount) a).getCeiling();}}return sum;}// 统计所有账户贷款的总额public double totoal() {double sum = 0;for (Account a : setAcc) {sum += a.getLoanAmount();}return sum;}// 打印所有用户的总资产排名public void totalAssets() {Account[] a = setAcc.toArray(new Account[setAcc.size()]);for (int i = 0; i < a.length; i++) {double sum = 0;for (int j = 0; j < a.length; j++) {if (a[i].getPersonId().equals(a[j].getPersonId())) { if (j < i) {a[i].setId(0l);;break;} else {sum += a[j].getBalance();a[i].setBalance(sum);}}}}for (int i = 0; i < a.length; i++) {Account acc;for (int j = i + 1; j < a.length; j++) {if (a[i].getBalance() < a[j].getBalance()) {acc = a[i];a[i] = a[j];a[j] = acc;}}}for (int i = 0; i < a.length; i++) {if (a[i].getId() != 0) {System.out.println(a[i]);}}}}4.3 接口package ATM_Bank;public interface Loanable {//贷款public abstract Account requestLoan(double money);//还贷public abstract Account payLoan(double money);}4.4 测试类package ATM_Bank;public class Test {public static void main(String[] args) {String str = "0 ";System.out.println(str.length());Bank bank = new Bank();bank.register(null, null, null, null, null, null, 0);bank.amount();}}4.5 运行结果五、课程设计总结与体会通过这次课程设计,使我灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。