道德与法律的关系(论文)
道德与法律的关系
专 班 学
业 级 号 名
计算机科学与技术 计算机 0803 班
姓
2009年6月1 日
下载可编辑
我们通常讲的道德是指人们行为应遵循的原则和标准。道德的定义可以概括
为:道德是一定社会、一定阶级向人们提出的处理个人与个人、个人与社会之间各种关系的一种特殊的行为规。这一概念说明,道德是以善恶为标准,调节人们之间和个人与
社会之间关系的行为规。 道德总是扬善抑恶的。 道德一词由来已久。 早在两千多年以前,我国古代的著作中就出现了 “道德”这个词语—— “道”表示事物运动变化的规则:“德”表示对“道”认识之后,按照它的规则把人与人之间的关系处理得当。从中国儒家的创始人,伟大的思想家、教育家孔子开始,千百年来。人们就一直重视道德问
道德应该是合于天理的行为规。由于人类的智慧可以掌握自然天理的动态规律,
来主导天理动态层面的提高, 因此,随着天理动态层面的提高, 道德的标准即随之提高。
道德,指衡量行为正当与否的观念标准。一个社会一般有社会公认的道德规。只
涉及个人、个人之间、家庭等的私人关系的道德,称私德;涉及社会公共部分的道德,称为社会公德。
道德和文化有密切关系, 有些时代又打上意识形态的烙印。 人类的道德有共通性。
不过,不同的时代,不同的社会,往往有一些不同的道德观念;不同的文化中,所重视
的道德元素及其优先性、所持的道德标准也常常有所差异。所谓“性相近,习相远”,同样一种道德,在不同文化社会背景中的外在表现形式、风俗习惯往往也相去甚远。
道德是人们评价一个人的一个尺度。一个人若违背社会道德,比如不仁不义、不忠
不孝,那么人们就会给他负面的评价,造成他没有好的名声,从而对他形成一种来自周边人群的社会压力,约束他的行为。另一方面,对很多人来说,道德是个人良心的自觉遵守,无需周边人群的社会压力制约。人们对一个人的道德评判,主要来自于这个人所表现出来的言行。所谓“有言者不必有德”,口头上标榜仁义道德的不必定真的有仁义道德,因此人们往往“听其言而观其行”然后作出评判。个人对道德的意见,对己对
人,有宽容者,有苛求者。中国文化中多有提倡对自己严格、
对他人宽恕的思想。 子曰:
“厚以责己,薄以责人。”韩愈:“古之君子,其责己也重以周,其待人也轻以约。”
.专业 .整理 .
下载可编辑
道德萦绕在人们心头一辈子,无论在何时,也无论何地,它无时无刻不在影响着
人们的生活、行为。它是人们心中的行为与思想的准则。凡是有孛道德的,正人君子必将把其抛弃。与它联系紧密,同在人们心中占有极大分量的就要属法律了,法律是国家制定的一种公民必须遵守的规与法则。法律是人人都必须遵守的,是用来维持国家正常经济生活、政治生活的一种条文条列。
国家的正常秩序需要法律的强制性手段,但中华民族五千年文化遗留下来的道德传统也是不容忽视的。道德教会公民以责任,让人明白做人的高尚境界。从而促进人们奋发向上,努力的学习,认真的工作,做好自己该做的事。自古以来,人们就十分重视道德、遵守道德、乃至于发展道德。道德是人类生活必不可少的。先贤提倡知书达礼、德业深然。现代社会亦注重德智体美全面发展。有此可见,道德不容忽视,我们应大力发展自身的道德水平。
道德是人类的财富,是文化的精华,是伟大人类繁衍与生生不息的凭仗。除了道德,法律也是我们必不可少的,我们生活在这个世界就必须遵守这个世界的法律。什么是法律呢,法律是国家意志的体现,是指法的整体,包括法律、有法律效力的解释及其
行政机关为执行法律而制定的规性文件, 是由国家按照统治阶级的利益和意志制定或认
可、并由国家强制力保证其实施的行为规的总和。它包括宪法、法律(就狭义而言)
、 ,
法令、行政法规、条例、规章、习惯法等各种成文法和不成文法.法属于上层建筑畴
由一定的经济基础所决定 , 并为一定的经济基础服务. 法是统治阶级实现其统治的一项
重要工具 , 它以规定人权利和义务的方式来调整人们的行为
, 其目的在于维护有利于
统治阶级的社会关系和社会秩序。一些观点认为,法律是阶级社会中特有的社会现象, 它伴随着阶级、阶级斗争的产生和发展而产生和发展
, 也会随着阶级、阶级斗争的消亡
而自行消亡。
柏拉图认为,对于有意志的公民来讲,法律的统治并不具有强迫性,而是体现了国家的良善愿望。他认为:“如果法律能完全导致至善或至少是能部分地达到这样的目的,这些法律我们都应该执行。”对公民的教育也是要引导他们执行和遵守法律;法律必须拥有权威,国家官员的权力必须受到约束,所谓良法必须由良吏来执行。因此,我
们可以认为:法律是政治上的正义, 是世所公认的公正不偏的权衡标准, 是理性的体现,
又是一个合同式的契约。法律的特性包括: (1) 公正性:法律是正义的体现,它对一切人,包括统治者和被统治者都是平等的; (2) 可变性,法律应该允许变革,当然这咱变革须要慎重; (3) 必须遵守性。法律是一种特殊的社会规,是人们的行为准则,人人都必须遵守它。
现代国家,没有法律不行,没有政策也不行。在我国,党的领导是立国之本的四
.专业 .整理 .
下载可编辑
项基本原则之一,“我们一定要坚持党的领导。”( 《邓小平文选》人民 1994 年版,第二卷,第 273 页)现在,我国正在稳步推行“依法治国,建设社会主义法治国家”的基
本治国方略,因此,处理好党的政策与法律的关系就显得特别重要。第一,法的制定和实施要以党的政策为指导。党的领导作用实现的基本方式之一是制定和实施政策,以指
导国家的活动; 而国家活动的基本方式是制定和执行各项法律, 以实现国家职能。 所以,制定和实施法律就必须以党的政策为指导,这也是在国家活动中坚持党的领导的体现。我们现在制定的法律,都体现着党的“一个中心,两个基本点”的基本路线和其他有关
改革开放和现代化建设的政策,或者说是经过法定程序把党的政策条文化、具体化。第
二,政策和法律的实施相互促进。政策上升为法律之后,就能以国家强制力为后盾而得
到有力地推行;法律以政策为指导,就能从政策对实践经验教训的科学总结、对社会发
展规律的正确反映、对广大人民利益的集中体现中获得力量,从而使法律得到人民衷心
的拥护。第三,政策和法律互相制约。改革开放以来,在邓小平民主与法制思想的指导
下,我们大力加强民主与法制建设,按照邓小平同志关于“还是要靠法制,搞法制靠得
住些”(《邓小平文选》第三卷,第 379 页)的指示,逐步改变了过去主要靠政策办事
的作法;确定了“党必须在宪法和法律的围活动”的原则;提出了“党领导国家事务的
基本方式是:把党的主经过法定程序上升为国家意志”;党的十五大报告进一步指出:
“要把重大决策与立法结合起来”;党中央和全国人大都以正式文件的形式,确认了依
法治国的基本治国方略。 所以,党在制定政策时, 要充分考虑到宪法和法律的有关规定;
党领导国家事务的活动,要在宪法和法律的围之。党领导人民制定了宪法和法律,党也
要带头遵守宪法和法律,否则,就难以树立法律的权威,也难以切实推行依法治国的基
本方略
道德和法律是国家是人民不可缺少的共同体,那二者又有什么区别和联系呢,他
们之间又有什么关系呢?
纵观中华民族五千年的历史,我们可以从中找到答案。
法律与道德两者犹如车之两轮、鸟之两翼不可分离,二者的关系是一个历史与现
实中永恒的话题。人类的法律发展史告诉我们,从法律的产生到法治的实现就是一个道
德法律化和法律道德化交互演进的过程。道德法律化强调人类的道德理念铸化为法律,
即善法之形成过程;法律道德化强调法律化为人们的品质、道德。人们自觉遵守法律、
维护法律的尊严。中国古代礼法结合、德主刑辅的思想为我们今天采用德法并治的治国
模式提供了一种可行性的历史考证。道德与法律相辅相成,它们共同推进社会的进步与
人类的发展。且让我们共同探讨一下道德与法律之间的辩证关系。
(一)道德与法律之间的辩证关系
.专业 .整理 .
下载可编辑
我们可以知道,道德与法律是社会规最主要的两种存在形式,是既有区别又有联
系的两个畴。二者的区别至少可归结为:
1、产生的条件不同。原始社会没有现代意义上的法律,只有道德规或宗教禁忌,
或者说氏族习惯。法律是在原始社会末期,随着氏族制度的解体以及私有制、阶级的出
现,与国家同时产生的而道德的产生则与人类社会的形成同步,道德是维系一个社会的
最基本的规体系,没有道德规,整个社会就会分崩离析。
2、表现形式不同。法律是国家制定或认可的一种行为规,它具有明确的容,通
常要以各种法律渊源的形式表现出来,如国家制定法、习惯法、判例法等。而道德规的
容存在于人们的意识之中,并通过人们的言行表现出来。它一般不诉诸文字,容比较原
则、抽象、模糊。
3、调整围不尽相同。从深度上看,道德不仅调整人们的外部行为,还调整人们
的动机和心活动,它要求人们根据高尚的意图而行为,要求人们为了善而去追求善。法
律尽管也考虑人们的主观过错, 但如果没有违法行为存在, 法律并不惩罚主观过错本身,
即不存在“思想犯” ;从广度上看,由法律调整的,一般也由道德调整。当然,也有些
由法律调整的领域几乎不包括任何道德判断,如专门的程序规则、票据的流通规则、政
府的组织规则等。在这些领域,法律的指导观念是便利与效率,而非道德。
4、作用机制不同。法律是靠国家强制力保障实施的;而道德主要靠社会舆论和
传统的力量以及人们的自律来维持。
5、容不同。法律是以权利义务为容的,一般要求权利义务对等,没有无权利的
义务,也没有无义务的权利。 而道德一般只规定了义务, 并不要求对等的权利。 比如说,面对一个落水者,道德要求你有救人的义务,却未赋予你向其索要报酬的权利。向被救起的落水者索要报酬往往被视为不道德。
道德与法律又是相互联系的。它们都属于上层建筑,都是为一定的经济基础服务
的。它们是两种重要的社会调控手段,自人类进入文明社会以来,任何社会在建立与维持秩序时,都不能不同时借助于这两种手段,只不过有所偏重罢了。两者是相辅相成、相互促益、相互推动的。其关系具体表现在:
1、法律是传播道德的有效手段。道德可分为两类:第一类是社会有序化要求的
道德,即一社会要维系下去所必不可少的“最低限度的道德” ,如不得暴力伤害他人、不得用欺诈手段谋取权益、 不得危害公共安全等; 第二类包括那些有助于提高生活质量、增进人与人之间紧密关系的原则, 如博爱、无私等。其中,第一类道德通常上升为法律,通过制裁或奖励的方法得以推行。而第二类道德是较高要求的道德,一般不宜转化为法
律,否则就会混淆法律与道德,结果是“法将不法,德将不德”
。〔15〕法律的实施,本
.专业 .整理 .
下载可编辑
身就是一个惩恶扬善的过程,不但有助于人们法律意识的形成,还有助于人们道德的培
养。因为法律作为一种国家评价,对于提倡什么、反对什么,有一个统一的标准;而法
律所包含的评价标准与大多数公民最基本的道德信念是一致或接近的,
故法的实施对社
会道德的形成和普及起了重大作用。
2、道德是法律的评价标准和推动力量,是法律的有益补充。第一,法律应包含
最低限度的道德。没有道德基础的法律,是一种“恶法” ,是无法获得人们的尊重和自
觉遵守的。第二,道德对法的实施有保障作用。 “徒善不足以为政,徒法不足以自行” 。
执法者的职业道德的提高,守法者的法律意识、道德观念的加强,都对法的实施起着积
极的作用。第三,道德对法有补充作用。有些不宜由法律调整的,或本应由法律调整但
因立法的滞后而尚“无法可依”的,道德调整就起了补充作用。
3、道德和法律在某些情况下会相互转化。一些道德,随社会的发展,逐渐凸现
出来,被认为对社会是非常重要的并有被经常违反的危险,立法者就有可能将之纳入法律的畴。反之,某些过去曾被视为不道德的因而需用法律加以禁止的行为,则有可能退出法律领域而转为道德调整。
总之,法律与道德是相互区别的,不能相互替代、混为一谈,也不可偏废,所以
单一的法治模式或单一的德治模式不免有缺陷;同时,法律与道德又是相互联系的,在功能上是互补的,都是社会调控的重要手段,这就使得德法并治模式有了可能。
(二)道德与法律的嬗变
法律与道德因存在差别而有不可调合之矛盾, 同时又因二者之间的联系使矛盾之
协调成为可能。
法律道德化表达了社会规系统的最佳结构及各要素之间的协调配合状态。 法治社会
形成的最基本条件是亚里士多德早就勾勒出的“良法 +普遍守法”的框架。普遍守法即法律道德化后的守法精神;良法即善法、符合人类良知与正义道德的法律。称之为良
法的法,也即法律道德化后的法律, 至少应包含人权性、 利益性、救济性三种在的品格。其中人权性是法律的道德基础,失去人权性的法律即使形式合理但实际价值不合理,最
终会被人类所唾弃。〔 16〕法律道德化正是通过立法者、执法者、守法者三方将自身的道德修养、人格魅力反映到法治活动中来。 “越文明发达、法制完善健全的国家,其法律中体现的道德规便越多。可以说,一个国家的法制是否完善和健全,主要取决于道德规则被纳入法律规则的数量。从某种意义上讲,在一个法制完善和健全的国家中,法律几乎已成了一部道德规则的汇编” 。〔17〕使法律与道德的精神一致起来,使法律得到道德的有力支撑,让法律精神深入到人们的心灵,成为人们的信念,同道德精神一道成为全社会共同的价值观念。只有造就这种法律,才能使法律获得普遍性和权威性,建立法
.专业 .整理 .
下载可编辑
治才有可能。
(三)道德法律化的局限性
违反道德的并不能当然就是违反法律的。 原因在于并非所有的违反道德的行为都
能上升为法律或确立为法律。能够上升和确认为法律的道德要求,只是公认的社会道德的一部分。有相当一部分道德要求仍然需要停留在道德领域,由道德规来加以约束和调整。如果将全部道德问题变为法律问题,那就等于由道德取代了法律,这是不符合人类创设法律的目的和其理想目标的。道德规不可能全部法律化,另一原因是任何国家的财力都不能支撑道德全部法律化之后所需要的执法成本。 但随着经济实力的增长和科学技
术的发展,国家必须尽可能地把更多的基本和重要的道德规上升为法律。 〔 18〕但法律并非万能,其设定的“中人”标准不同于道德倡导的“圣人”标准,因此对虽“缺德”而不犯法的行为往往无能为力。在现代社会中,法律的他律约束作用与道德的自律教化
作用只有相互补充和密切配合,才能达到建设社会文明的良好效果。 〔19〕在把道德规则、道德观念法律化的过程中,要注意道德与法律在本质和涵上的一致性,否则会给法治带来灾害。〔 20〕不论法律中的道德原则实际上能够被贯彻到什么程度,只要是全面
地以法律去执行道德, 其结果不但是道德的外在化、 而且是道德的法律化, 这种外在化、法律化的道德,按我们的界说,其不但不是道德,而且是反道德的了。 〔21〕
(四)现实中的矛盾
在现实社会中,道德与法律存在着不和谐之处。中国的道德至上思潮盛行只是表
明人们企图摆脱法律的拘束以求更随心所欲地实践道德、弘扬道德。人们并不是以崇尚道德来追求一种更趋于合理、科学。德国大哲人黑格尔曾有过如下论断:在中国人心目中,他们的道德法律简直是自然法律——外界的、积极的命令——强迫规定的要求——相互间礼貌上的强迫的义务或者规则。 “理性”的各种重要决定要成为道德情操,本来就非有“自由”不可。然而他们并没有“自由” 。在中国道德是一桩政治事务,而它的若干法则都由政府官吏和法律机关来主持。 〔22〕为了说明这一问题请先看下面一则案例:
案例五:一对农村老年夫妻闹离婚,按照法律判决,离婚后的一间住房应判归男
方。但如果这样下判,女方离婚后就将无所居住,显然与情不合。于是,法院综合考虑后判决将一间房隔为两半,一人一半,解决了女方离婚后的住所问题。这样的判决并未引起男方的“闹事”,双方相安无事。〔23〕这是来自执法第一线很具体的案例,问题随即而提出:在司法实践中要不要考虑道德评价标准?如果要,那么法律评价与道德评价该怎样取舍?
美国法学家德沃金在其著作《法律帝国》中也曾举过一则案例:
.专业 .整理 .
下载可编辑
案例六:埃尔默用毒药杀害了自己的祖父,他知道他祖父在现有的遗嘱中给他留
了一大笔遗产,他怀疑这位新近再婚的老人可能会更改遗嘱而使他一无所获,因此他杀
害了他的祖父。〔24〕纽约州法院针对该案例确立了一条法律原则,即:任何人都不得
从其错误行为中获得利益。问题是:法官以自己的信仰取代法律条文是否冲击了法治原
则?
总之道德与法律即是相互联系,又是相互区别的。我们既要遵循传统道德观念,
更要维护法律的尊严,为国家的繁荣昌盛做出我们的贡献。为人类道德与法律事业的发
展努力奋斗。
.专业 .整理 .
下载可编辑
.专业 .整理 .
下载可编辑
.专业 .整理 .
下载可编辑
.专业 .整理 .
下载可编辑
.专业 .整理 .
下载可编辑
.专业 .整理 .
下载可编辑
.专业 .整理 .
下载可编辑
.专业 .整理 .
下载可编辑
一、设计容与设计要求
1. 课程设计目的:
全面熟悉、掌握 C 语言基本知识,增强对不同的问题运用和灵活选择合适的数
据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有
.专业 .整理 .
下载可编辑
效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提
供文档资料的习惯和规编程的思想,为后继课程(数据结构、数据库和汇编语言等
课程)的实验以及课程设计打下较扎实的基础。
2. 课题题目
⑴班级成绩管理系统
⑵班级档案管理系统
⑶飞机订票系统
⑷猜数字游戏
⑸电子英汉词典设计
⑹心算抢答系统
⑺运动会分数统计系统 ⑻小学生心算 CAI 系统
3. 设计要求:
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一
些实际的中型问题, 为将来开发软件积累一些典型的案例处理经验。
具体要求如下⑴设计课题题目: 每位同学根据自己学号除以 8 所得的余数加一选择相应 题号的课题。原则上不予换提,私自换题者不记成绩。⑵根据自己对应的课题完成以
下主要工作: ①完成系统需求分析: 包括系统设
计目的与意义;系统功能需求;输入输出的要求。②完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它
们之间有什么关系等。 ③完成系统详细设计: 包括采用 C语言定义相关的数据类型;写出各模块的类 C 码算法;画出函数的调用关系图。④调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的
输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验
教训、心得体会。
⑤关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿
(A4 纸) 上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
.专业 .整理 .
:
下载可编辑
二、进度安排
第 周 星期
星期 星期 星期 一、 问题描述:
.专业 .整理 .
时:分——时:分
时:分——时:分
时:分——时:分
时:分——时:分
设计课题一:班级成绩管理系统
下载可编辑
对一个有 N 个学生的班级,每个学生有 M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
二、功能要求:
1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、 、M门课程名
称。
2、本系统显示这样的菜单:
请选择系统功能项:
a、成绩录入
b、成绩显示
c、成绩保存
d、成绩排序
e、成绩修改(要求先输入密码)
f 、成绩统计
( 1) 显示每门课程成绩最高的学生的基本信息 ( 2) 显示每门课程的平均成绩
( 3) 显示超过某门课程平均成绩的学生人数 g、退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生成绩保存到文件中。
三、算法提示:
1、数据结构:结构体类型数组。
2、数据库结构:下表构成该系统的基本数据库。
学号
课程名称 1 float
课程名称 2 float
●●●●●● charChar 四、测试数据:
.专业 .整理 .
下载可编辑
学生人数 N=10
课程门数 M=4
课程名:数学、语文、英语、政治
五、其它
对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
需求分析 :
1 、 学生成绩管理系统有 9 种功能。把这 9 个功能做成 9 个子函数并 9 个子数进行管理。实现对整个系统的操作。
.专业 .整理 .
在主
函当数中设计一个菜单对这
下载可编辑
2 、根据课题的要求。每一个学生的包括(
char )、学号( char )、M 门课程的
成绩( float ). 再加上系统功能上的要求每一学生的信息还要总分和名次等。所以自然的想到要用结构体来定义每一个学生的信息结构。 然后用链表把它们组成一个有序的整体。用对链表的操作来实现对所有学生信息的统一管理(成绩显示、成绩排序、成绩修改等)。最后为了以后按照处理后的顺序保存到文件中。
3,该系统可满足广大师生要求,提供成绩录入,成绩修改,成绩保存等功能,用户可利用这套系统进行简单的学生成绩管理, 该系统所实现的功能虽然简单, 但
界面友好,操作简单,是一个有着极大实用功能的系统
,欢迎广大的师生们使用
该系统。相信你们会使用得愉快!
总体设计:
.专业 .整理 .
下载可编辑
程序的模块组成 :
主 函
数: int main()
新建函数: STUDENT *init()
输入函数 :STUDENT *create()
显示函数 : void print(STUDENT *head)
保存函数 : void save(STUDENT *head)
按总分排序函数 : STUDENT *sort(STUDENT *head)
计算总分和均分函数 : void computer(STUDENT *h)
修改函数 : STUDENT *Modify(STUDENT *head,STUDENT *new)
菜单函数: CAIDANG()
各个函数的主要功能 :
输入函数 : 随时输入数据。
菜单函数:显示系统主菜单。
显示函数 : 显示所有学生的信息。
排序函数 : 按总成绩排序。
保存函数 : 保存好学生成绩 , 以免丢失。
.专业 .整理 .
下载可编辑
统计函数 :
l
显示每门课程成绩最高的学生的基本信息。
l
显示每门课程的平均成绩。
l
显示超过某门课程平均成绩的学生人数。
课题的功能模块的划分:
开始
菜单界面
功能选择
初始化函数
输入学生信息
显示学生信息
按成绩排序
保存到文件
从文件读数据
分类合计
.专业 .整理 .
下载可编辑
退出系统
结束
详细设计:
整个系统除了主函数外,另外还有
14 个函数,实现八大功能:输入功能、显
示功能、查找功能、排序功能、插入功能、保存功能、读取功能。各个函数的
.专业 .整理 .
下载可编辑
详细设计说明分别如下:
主函数 main()
利用无限次循环 for(;;) 和 switch() 实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
菜单选择函数 void CAIDANG()
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,返回菜单。
代码设计:
初始化函数 STUDENT *init()
这是一个无参函数, 里面只有两个语句, 它的作用是使链表初始化 , 使 head 的值为 NULL和一个清屏语句。比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!
输入记录函数 STUDENT *create()
这是一个无参函数,用来执行学生成绩记录的输入, 当学生为时停止输入,函数结束后,带回一个链表头的指针指向下个学生的信息插在表。
head=NULL
无条件循环
.专业 .整理 .
下载可编辑
p 指向新开辟的单元
P 指针是否为空
是
否 输出内存溢出
输入学号 p->num
p->num是否为 @
是
否
输入姓名 p->name
停止输入并返回菜单
for(i=0;i<3;i++)
输入成绩
p->sum=s;p->average=(float)s/3
; p->order=0 ;p->next=head ; head=p;
显示记录函数 void print(STUDENT *head)
这是一个不返回值的有参函数,形参为“链表头的指针” ,负责对全部学
.专业 .整理 .
下载可编辑
生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。
算法:先将 p 结点的指针指向第一个结点, 将 p 结点 ( 即第一个结点 ) 的数据输出。然后再将 p 结点的指针指向 p 指针的的指针 ( 即下一结点 ) ,将 p 结 ( 即第一结点 ) 的数据输出。重复执行此步聚直到 p 指针指向 NULL为止。
N-S 流程图如下:
p=head,使指向第一个结点
输出 p 所指向的结点
p 指向一下个结点
当 p 指的不是表尾
返回菜单
保存数据到文件函数 void save(STUDENT *head)
.专业 .整理 .
下载可编辑
这是一个不返回值的有参函数,形参为“链表头的指针” ,可以把学生记录保存在电脑上由自己任意命名的二进制文件。
N-S 流程图如下:
文件不能打开
否
是
p=head;
当 p
不 为 空 时 输出一个出错信息,并
返回菜单
fwrite(p,LEN,1,fp); (
写入一条记录 )
p=p—>next; (
指针后移 )
fclose(fp); ( 关闭文件 )
修改函数 STUDENT *Modify(STUDENT *head)
.专业 .整理 .
下载可编辑
这是一个有参函数,一个是“链表头的指针”修改之后,并返回链表的头指针。
算法:
首先向系统申请一块空间, 用于存放输入的信息。 程序会跟据用户输入的
学号。采用线性查找法往下一个结点查找。设一个指针变量
p,先指向第一个
结点,当 strcmp(p->name,s) && p != NULL时,使 p 后移一个结点,如果 p!=NULL, 输出 p 所指的结点。如果有该学生就修改。并出现提示信息
\"***Modify
success!***\" 。如果没有该学生则出现“ ***Find out No.%s student*** ”提示。并 2 秒后返回主菜单。
N-S 流程图如下:
q=head
.专业 .整理 .
下载可编辑
原来的链表是空表
是
否
当记录的学号不是要找的,或指针不为空时
2 秒后返回主菜单
info 指向 q 位置 q 向后移一个结点
!strcmp(p->no,info
否
是
printf(\"Don't forget save\\n\")
info->next=p->next; q->next=info;
按总分排序函数 STUDENT *sort(STUDENT *head)
.专业 .整理 .
下载可编辑
这是一个有参函数,形参为“链表头的指针”
,按学生成绩的平均分高低
进行排序,还可以显示名次。
N-S 流程图:
.专业 .整理 .
temp=head->next ,head->next=NULL
下载可编辑
当 temp!=NULL时
t=temp
; temp=temp->next ; p1=head; p2=head; t=temp ;temp=temp->next ;p1=head;p2=head;
当 t->average p2=p1; p1=p1->next ; p1=p2; 是 否 t->next=p1;p2->next=t; p1=head; t->next=p1;head=t; 当 p1!=NULL i++ ;p1—>order=i ;p1=p1— >next ; 输出“排序成功” 系统调试 由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。 在用 .专业 .整理 . 下载可编辑 的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样,而是总 个窗中出现混乱。解决的这个问题的办法是调整。除此以外,再就是自定义函数时 由于书本的概念不清楚,多写了空格键,以至函数调用不出来。又如:在设计修改 学生信息时的密密码时。当用户发现输入密码错误按了退格键后,因为“ * ”并没有 消去。导致用户再次按退格键,又出现前面的情况。最终导致输入密码错误。所以 用了两次退格键: putchar(8); /* 退格键 */ putchar(' '); /* 以空格代替 */ putchar(8); /* 再次退格 */ 。 在对链表操作时,要特别链表指针的移动( p=p->next )和链表尾的判断 (p= =NULL)。没有指针的移动,就很容易出现死循环。而在运行过程中不能控制。所以你就会认为是死机。如果没有链表尾的判断。就会在运行过程出现想不到的错误。如:在显示链表信息时,后面就会出现乱码。 一个系统的菜单和提示信息非常重要。 如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。 结果分析 : 先选择所需要的功能如 1、 2 等,然后进入各子函数: .专业 .整理 . 下载可编辑 1、进入输入函数,进入该函数后根据系统提示输入所要输入的信息,共 输入 N 名学生信息。然后按任意键返回菜单。 2、进入显示函数,进入该函数后系统会输出你输入过的学生信息。观察 到显示的信息后按任意键返回菜单。 3 4 5 6 、进入保存函数, 进入该函数后系统会以稳健的方式将所有学生信息予以保存。按任意键返回菜单。 、进入排序函数,进入该函数后系统会对学生信息按总分予以排序,排序完成后,系统会提示排序成功,按任意键返回菜单。 、进入修改函数,进入该函数后根据系统提示进行修改,输入你要修改的信息,修改完毕系统提示保存后按任意键返回菜单。 、进入统计函数,进入该函数后系统会执行该函数所有的功能,在该函数显示窗口我们可以得到我们想要的数据,然后按任意键返回菜单。 、退出系统,在菜单窗口输入数字 7 然后按回车键推出系统。 7 总结: 我的题目是班级成绩管理系统的设计,对于我们这些新手来说,这是很大 .专业 .整理 . 下载可编辑 的考验,我一千次一万次的问自己,怎么才能找到课堂所学与实际应用的最佳 结合点?怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?怎样让自 己的计划更具有序性,而不会百忙无一用?机会是老师,学校,以及无数代教 育工作者给的,而能力是自己的,耐性是需要的。经过自己的琢磨,还查阅了 很多书籍,才做到了心中有数,才了解了 C 语言课程设计的真正用意——培养 自学能力,养成程序编辑的好习惯。我从来不相信车到山前必有路的说法,认 为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。我们自己能做 到的仅此而已,因为人力也有所不能及。 我首先觉得,用到的程序段不必太高级,因为天下事有高低之分,决 定优劣的不是集体中某部分的强弱,起决定作用的是组合各元素的和谐,要能 在一个集体中各尽所能,每个人都能发挥长处,避免自己的短处,那么这个集 体的实际组合能量是最优的。选择什么等级的语言就是关键,最后我决定运用 结构体,以及指针,去实现自己的构想。 班级成绩管理系统的设计有几个要求: 要能录入新的成绩,要能删除成绩,要能按照学号查找已有的成绩,要能按照 要求的顺序进行排序。我的理解是:必须建立一个文件,它既能够保存新的录 入文档,又能在提示语言的要求下读出文档。 然而,这只是万里长征的第一步。 后面的路还很长,困难还很多,可是我能成功的编译一个程序,能够在思路不卡壳的情况下,继续前进,我在此很想感谢那些给予我耐心解答的老师和同学,是他们为我小程序的成功起到了关键性的作用, 那么多个日夜,如此多的困难,同学们勤恳塌实,从开始到结束,没有显出一点倦意,始终热情高涨,我感谢这种氛围,感谢学校提供的良好条件。 回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体⋯⋯通 .专业 .整理 . 下载可编辑 过这次课程设计之后,一定把以前所学过的知识重新温故。 本次课程设计结束了, 对于我的影响很大。 我通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我知道自己哪些方面做得还不够。 但我出总结出了一点点的经验如下: 1、要对系统的功能和要求做出详细的分析,并合理分解任务。 2、把分解出来的子任务,做给一个相对独立的模块。 3、在设计一个模块之前,要简单构想一下总界面的显视情况。 4、针对构想出来的界面进行程序的编写。 附录 .专业 .整理 . 下载可编辑 源程序清单 : #include\"stdio.h\" #include\"stdlib.h\" #include\"string.h\" #include\"conio.h\" #include\"mem.h\" #include\"alloc.h\" #include\"ctype.h\" #include\"dos.h\" #define M 10 #define N 4 typedef struct z1 { char num[10]; char name[20]; int score[4]; float sum; float average; int order; struct z1 *next; }STU; STU stu[M]; STU *init(); STU *create(); void input(); void print(STU *h); void save(STU *h); STU *sort(STU *h); STU *Modify(STU *h); void computer(STU *h); .专业 .整理 . 下载可编辑 int D=0; void main() { STU *head;int a; void CAIDANG(); void color(); printf(\" 今天终于完成 !\"); head=init();clrscr(); color(); CAIDANG(); printf(\" 请选择以上几项功能 :\\n\"); for(;;) { scanf(\"%d\switch(a) {case 0: head=init();break; case 1: head=create();break; case 2: print(head);break; case 3: save(head); break; case 4: head=sort(head); break; case 5: head=Modify(head); break; case 6: computer(head);break; case 7: exit(0); } } } void CAIDANG() { printf(\"\\\( 欢迎使用本班级成绩管理系统 )\\\\\n\"); printf(\" 工程学院 0803 班 杜云龙 \\n \"); printf(\" 学生系统 .\\n\"); printf(\"*********************************************************** .专业 .整理 . 下载可编辑 ****\\n\"); printf(\"* *\\n\"); printf(\"* *\\n\"); printf(\"* 0. 执 行 初 始 化 1. 成 绩 录 入 2. 成 绩 显 示 *\\n\"); printf(\"* *\\n\"); printf(\"* *\\n\"); printf(\"* *\\n\"); printf(\"* *\\n\"); printf(\"* *\\n\"); printf(\"*********************************************************** ****\\n\"); } void color() { textbackground(8); textcolor(9); clrscr(); } .专业 .整理 . 3. 成 4. 成 5. 成 6. 成 7. 退 绩 保 绩 排 绩 修 绩 统 出 系 存 序 改 计 统 下载可编辑 void print(STU *h) {int i=0; STU *p; clrscr(); p=h; printf(\"\\n****************************************STUDENT********** ******************\\n\\n\"); printf(\"|rec|no | name | sc1 | sc2 |sc3 | sc4 | sum | ave | order |\\n\"); printf(\"|---|-------|---------|-----|-----|----|-----|-----|------| --------|\\n\"); while(p!=NULL) { i++; printf(\"|%3d|%-5s|%-6s|%4d |%4d |%4d |%4d |%6.2f|%6.2f | |\\n\>score [3],p->sum,p->average,p->order); p=p->next; } printf(\"**************************************End****************** ***************\\n\"); getch();clrscr(); .专业 .整理 . %3d 下载可编辑 } void save(STU *h) { FILE *fp; STU *p; char outfile[10]; clrscr(); printf(\" 输入文件名: \\n\"); scanf(\"%s\ if((fp=fopen(outfile,\"wb\"))==NULL) { printf(\"can not open file\\n\"); sleep(2);clrscr(); } p=h; while(p!=NULL) { fwrite(p,sizeof(STU),1,fp); p=p->next; } fclose(fp); printf(\"------ 保存成功! --------------\\n\"); getch();clrscr(); } STU *sort(STU *h) { int i=0; STU *p, *q,*t,*h1; clrscr(); .专业 .整理 . 下载可编辑 h1=h->next; h->next=NULL; while(h1!=NULL) { t=h1; h1=h1->next; p=h; q=h; while(t->sum { q=p; p=p->next; } if(p==q) { t->next=p; h=t; } else { t->next=p; q->next=t; } } p=h; while(p!=NULL) { i++; p->order=i; p=p->next; .专业 .整理 . 下载可编辑 } printf(\" 排序成功 !\\n\"); sleep(2); clrscr(); return h; } STU *Modify(STU *h) { STU *p,*q,*info; char s[11]; int s1,i; clrscr(); printf(\"\\n 请输入新记录 \\n\"); info=(STU *)malloc(sizeof(STU)); if(!info) { printf(\"\\n 存溢出 \");sleep(2);clrscr();return NULL;} inputs(\" 输入学号 :\{ clrscr();return h;} inputs(\" 输入 :\ printf(\" 请输入 %d 个分数 \\n\ s1=0; for(i=0;i .专业 .整理 . 下载可编辑 if(info->score[i]>100||info->score[i]<0) printf(\" 错误 , 请重输, \\n\"); s1=s1+info->score[i]; } info->sum=s1; info->average=(float)s1/N; info->order=0; info->next=NULL; p=h; while(strcmp(p->num,info->num)&&p!=NULL) { p=p->next; } if(!strcmp(p->num,info->num)) { strcpy(p->num,info->num); strcpy(p->name,info->name); p->score[0]=info->score[0]; p->score[1]=info->score[1]; p->score[2]=info->score[2]; p->score[3]=info->score[3]; p->sum=info->sum; p->average=info->average; p->order=info->order; printf(\"*** 修改成功 !***\\n\"); 请保存 \\n\"); printf(\" sleep(2); clrscr(); return h; } } void computer(STU *h) .专业 .整理 . 下载可编辑 { STU *p,*t,*q; float saverage[N]={0}; int i; clrscr(); for(i=0;i long s=0; p=h; while(p!=NULL) { s+=p->score[1]; j++; p=p->next; } saverage[i]=(float)s/j; p=h; while(p!=NULL) { if(p->score[i]>saverage[i]) {n++;p=p->next;} else p=p->next; } printf(\" 分数 %d 平均分是 %5.2f,%d.\\n\p=h; q=h; while(p!=NULL) .专业 .整理 . 大于平均分的人数是: 下载可编辑 { if(p->score[i] printf(\"\\n\\n****************************STUDENT******************** ****\\n\"); printf(\"|rec| no | name |sc1 | sc2 | sc3 | sc4| sum | ave | order |\\n\"); printf(\"|---|-------|----------|----|-----|-----|----|-----|-----|- ---------|\\n\"); printf(\"|%3d| %-10s| %15s|%4d|%4d|%4d|%4d| | %6.2f| %3d|\\n\e[2],q->score[3],q->sum,q->average,q->order); printf(\"\\n\\n******************************end********************** *****\\n\"); getch();clrscr(); } } STU *init() { clrscr(); return NULL; } .专业 .整理 . %4.2f 下载可编辑 STU *create() { int i; int s; STU *h=NULL,*info; clrscr(); for(;;) { info=(STU *)malloc(sizeof(STU)); if(!info) { printf(\"\\n 存溢出 \"); return NULL; } inputs(\" 输入学号 :\ if(info->num[0]==''){clrscr();return;} inputs(\" 输入 :\请输入 %d 个分数 \\n\ printf(\" s=0; for(i=0;i do { printf(\" 分数 %d:\ scanf(\"%d\if(info->score[i]>100) printf(\" 错误 , 请重输: \\n\"); }while(info->score[i]>100); s=s+info->score[i]; } info->sum=s; info->average=(float)s/N; info->next=h; .专业 .整理 . 下载可编辑 info->order=0; h=info; clrscr(); } return(h); } inputs(char *prompt,char *s, int count) { char p[225]; do{ printf(prompt); scanf(\"%s\ if(strlen(p)>count)printf(\"\\n 太 长 ! \\n\"); }while(strlen(p)>count); strcpy(s,p); } .专业 .整理 . 下载可编辑 .专业 .整理 . 下载可编辑 目 1. 系统需求分析 ...................................... 2. 总体设计 .......................................... 3. 详细设计 .......................................... 4. 系统调试 .......................................... 5. 结果分析 .......................................... 6. 总结 .............................................. .专业 .整理 . 错误 ! 未定义书签。错误 ! 未定义书签。错误 ! 未定义书签。错误 ! 未定义书签。错误 ! 未定义书签。错误 ! 未定义书签。 录 下载可编辑 计算机科学与技术系课程设计评分表 课程名称: C 语言程序设计 项 目 评 价 设计方案的合理性与创造性 设计与调试结果 .专业 .整理 . 下载可编辑 设计说明书的质量 答辩述与回答问题情况 课程设计周表现情况 综合成绩 教师签名: 日 期: .专业 .整理 . 因篇幅问题不能全部显示,请点此查看更多更全内容