软件工程课程设计重邮

时间:2019-05-13 00:31:16下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《软件工程课程设计重邮》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《软件工程课程设计重邮》。

第一篇:软件工程课程设计重邮

《软件工程》课程设计任务书

一.目的

软件工程课程设计是软件工程专业一个综合性的实践教学环节,其目的在于促进学生复习和巩固计算机软件设计知识,加深对软件设计方法、软件设计技术和设计思想的理解,并能运用所学软件设计知识和面向对象技术进行综合软件设计,提高学生的综合应用能力。通过这次课程设计,要掌握UML(统一建模语言),并能运用UML在Visio中建模。

二.要求:

1.两人一组。

2.熟悉Visio开发环境,认真分析题目。

3.掌握UML的基本模型元素(如角色、用例、类、数据模型等),准确把握所要开发系统的功能需求,认真完成系统前期的需求分析,绘制出系统的业务流程图。

4.建立完善的角色与用例的关系,绘制出系统的用例图。

5.分析用例为完成业务目标而进行的各项任务或活动及执行顺序,绘制出用例要求所要进行的活动以及活动间的约束关系的活动图。

6.分析各用例的可能状态及状态间的转移,描述状态变化序列的起点和终点,绘制出系统的状态图。

7.进行业务流的分析,根据系统所要完成的功能和所要处理的数据,画出反映系统逻辑模型的数据流程图。

8.通过分析系统的功能要求,抽象出系统的实体类,描述各实体类的属性,建立各个实体类及它们之间的关联,绘制系统的实体类图。

9.总结分析出系统的各功能模块,绘制系统各子模块的结构图。

10.模块的结构设计完成后,进行功能模块的界面风格和要求规范的设计,实现变量命名规范和模块命名规范的设计,根据设计结果撰写各模块说明书 11.进行检查,并提交设计报告。

三.报告要求:

1.实验题目 2.需求分析

3.系统总体设计:包括角色、用例关系说明与描述,用例状态流程的说明与描述等内容。4.系统详细设计:包括详细的业务流程的设计和数据流程图的设计、相关实体类图的设计与说明等。5.心得体会

四.参考资料:

1.Martin Fowler & Kendall Scott:UML Distilled Second Edition A Brief Guide to the Standard Object Modeling Language 2.UML参考手册

3.Jason T.Roff 著 张瑜 杨继萍 等 译《UML基础教程》 清华大学出版社 4.参见本中心服务器ftp:s@172.16.38.100《软件工程》 目录下的相关文档。

五.设计内容

可自选题目,但须经过指导教师审查。

可选题目:

1.房产管理系统:

在我国住房管理是一个关系到每个人切身利益的大问题。某大学拟开发一个用计算机进行房产管理的系统,要求系统具有分房、调房、退房和咨询统计等功能。

房产科把用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表系统会拒绝接受;对合法的申请表则根据其类型分别进行处理。

如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阈值分数时,按分数高低将申请表插到分房队列的适当位置。每月最后一天进行一次分房活动:从空房文件中读出空房信息(房号、面积、等级、单位面积房租等);把好房优先分配给排在前面的符合该等级住房条件的申请者,从空房文件中删除这个房号的信息,从分房队列中删除该申请者;把此房号的信息和住房信息一起写入住房文件中,输出住房分配单给住户,同时计算房租写入房租文件中。

如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。

如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。

住户可向系统询问分房的阈值分数,居住某类房屋的条件,某房号的单位面积房租等信息。房产科可要求系统打印出住房情况的统计表,或更改某类房屋的居住条件、单位面积房租等信息。

2.选票统计系统:

某学会下属的各个专业委员会经常需要改选或补选,因此希望开发一个选票统计系统。

一次选举最多有10组选票,每组用于一个委员会的选举。一个组内的所有选票都在第61至80列穿有该委员会的名字,以及该委员会候选人的名字。每个委员会最多可有25名候选人。选举人欲投某候选人的票,就在选票的第21至45列(对应候选人1~25号)的相应列上穿一个减号。一张选票上允许有多个减号,因为一个委员会可能有多个空缺名额。一包选票由若干张选票组成(一个委员会一张)。选举人每人一包选票,穿好记号后交给系统去统计票数。系统首先读入基本信息(委员会名、候选人数、该委员会需补选的人数),然后读入一张选票。若选票无效时则打印出选票内容。继续下一张选票的读取;若选票有效则处理该选票,然后继续下一张选票的读取。选票全部处理完后,打印出每个委员会的每名候选人的得票数。

选票的有效性判断步骤如下: ① 核对委员会名字(61至80列),若有此名则继续; ② 检查21至45列,若只有减号或空白,则继续;

③ 检查在最后一个候选人后面还有无记号,若无则继续;

④ 统计选票上记号的总数,若不超过允许的记号数,则此张选票有效。

若上述4项有一项不合格,则此张选票无效。3.旅馆客房管理系统:

某旅馆有客房若干,客房房间朝向分南、北两种,朝南的房间又分两人间、三人间两种;朝北的房间分三人间、四人间两种。每天住宿费因房间类型而异。每个房间、床位分别有房间号、床号。

系统根据房间已住旅客性别分配性别相同的旅客住进去,若是空房间则可分配给任意同一性别的旅客住。旅客住宿登记时需登记姓名、身份证号、住址、性别、住进日期;旅客退房时根据居住天数和住房规格结算住宿金额。

4.自动售货机系统:

自动售货机系统是一种无人售货系统。售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。有效的硬币是一元币、五角币、一角币、五分币和一分币。其它货币都被认为是假币。机器拒收假币,并将其从退币孔退出。当机器接收了有效的硬币之后,将之送入硬币储藏器。顾客支付的货币根据硬币的面值进行累加。

自动售货机装有货物分配器,每个分配器中包含0 个或多个价格相同的货物。顾客通过选择货物分配器来选择货物。如果有货,且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将找零返回到退币孔。如果无货,则和顾客支付的货币值相等的硬币将被送到退币孔。如果顾客支付的货币值小于所选货物的价格,机器将等待顾客投进更多的货币。如果顾客决定不买所选择的货物,他投放进的硬币将从退币孔中退出。

5.学校医疗费管理系统:

要求数据库中存放每个职工的职工号、姓名、所属部门。职工报销医疗费时需填写所属部门、职工号、姓名、日期。医疗费分校内门诊费、校外门诊费、住院费、子女医疗费四种。该校规定,每年每个职工的医疗费有一个限额,在年初时确定,一年内医疗费不超过限额时可全部报销;超额部分报销90%,其余10%由职工个人负担。职工子女的医疗费也另有限额。

系统每天记录当天报销的若干职工或职工子女的医疗费类别、金额,在当天下班前自动结账,统计当天报销的医疗费总额,供出纳员核对。每笔账要保存备查。每天报销的费用要和各个职工已报销的金额累计起来,以便检查哪些职工已超额。系统要配有适当的查询功能。年终结算后,下一年度开始时要对数据库文件进行初始化。职工调离、调入本单位、或在本单位内部部门间调动,数据库文件要及时修改。

6.路障跟踪与维修系统:

某市政部门欲开发计算机控制的路障与维修系统(PHTRS)。路障被发现上报后,系统赋予该路障一个识别号码,并存入其所在街道地址、大小(按1比10的比例)、位置(路中、人行道上等等)、所属街区(根据街道地址得出)、以及维修优先级(根据其大小确定)。对每个路障有一个施工命令,包括路障位置、大小、施工队编号、施工人数、配备工具、维修的工时数,路障状态(施工中、已修复、临时修复、未修复)、材料用量、维护费用(根据维修工时、人数、材料及工具等计算得出)。最后,系统建立一个损失报告文件,记录此路障造成的损失,包括市民的姓名、地址、电话、损失类型、以及损失量(以元为单位)。PHTRS是一个在线系统,可随时查询。

7.网上超市系统:NetSuperMarket

主要功能描述:用户通过浏览器访问网上超市系统,系统以分类的形式显示所有商品,帮助用户逐步找到所要的商品;系统也提供关键词检索功能;用户在浏览商品目录是可以点击察看商品的具体信息和价格;如果满意,用户可以将商品暂时放入“购物车“;也可以随时从“购物车“中取出商品。当用户选完后可以进行付款处理,这时用户输入信用卡号,系统联系对应的银行支付系统,开始支付。最后系统应能够向管理员提供查询界面和各类报表,统计商品的销售情况。

8.网上选课系统:

主要功能描述:系统首先维护校内所有课程的信息;课程分为研究生、本科生;也可以分为必修、选修、辅修。用户以学号和密码登陆,系统显示用户以选的课程、用户有权选但未选的其他课程,并显示具体信息(如学分)。用户选择后,系统根据规则检查用户是否进行正确的选课(如时间冲突、跨专业选课等);如果错误提示用户改,否则修改选课数据库。最后系统应能够向管理员提供查询界面和各类报表,统计每门课的选课情况。

9.电子邮件客户端产品:MailAgent

主要需求描述:为连接到Internet 的网络用户提供简便快捷的电子邮件收发系统。用户建立加密账号,并且一个账号可以对应多个pop3服务器的账号;信件输入时应该对输入的文本进行自动的语法检查;对所写的e-mail地址也有合法性检查;允许有多个附件;信件可以存储在硬盘上,并压缩、加密,连线时随时可以发出,收件人可以是一个人也可以是一个组;连线时可以一次性收取多封邮件,随时可以阅读。设有地址本功能,包括人、组的设置。安全与保密要求:同一台pc机上的不同用户,可以为自己建立账号,设定密码,互相之间不能访问。

10.在线数字图书馆系统:OnlineDigiLib

主要功能描述:用户通过浏览器远程登陆到服务器,通过身份认证后并且用户有足够的余额,进入系统。系统根据用户已有的爱好记录和查询权限,在界面上列出被允许查阅书以及具体信息和状态。用户可以点击具体书籍,从服务器中取得书本内容、解码显示。用户便可以察看该书的摘要信息以及具体内容。点击现实具体内容后,系统开始计费(按书的价格*系数记费),并且能够根据一段时间的借书纪录,统计出查阅的统计信息(如查阅书排行榜)。系统还应提供用户查询记费的界面。

11.机器人足球比赛中机器人的决策控制软件: FootballPlayer

主要功能描述:在轮式机器人足球比赛中,需要你开发一个机器人行为控制软件。该软件通过由机器人眼睛中的摄像机传来的图像,解码、分析后判断出当前场上的局势(如同伴的位置、对手的位置、球的位置),并向马达控制器发出行为信号(如前进)。对违反规则的行为应该能够识别。该软件也可以连上主机,灌输有关比赛规则、进攻策略等知识。

12.防止黑客和病毒攻击的防火墙软件:FireWall

主要功能描述:该系统实时监控本主机的各个ip端口,监视每个端口的访问模式;并且维护一个攻击模式数据库;如果发现某个端口出现与攻击模式数据库相匹配的攻击时,报警,并且在2分钟后,自动关闭改端口,并保留攻击信息(如ip地址、mac地址)以备追查。用户可以通过控制面板设定对该系统更新攻击模式数据库、设置对各端口的屏蔽、对系统的开关、报警参数等;也可以察看指定时间段中的攻击行为信息。

13.机票预订系统:

为方便旅客,某航空公司拟开发一个机票预订系统。旅行社把预订机票的旅客信息(姓名、工作单位、身份证号码、旅行时间、旅行目的地等)输入该系统,系统为旅客安排航班,印出取票通知和账单。旅客在飞机起飞的前一天凭取票通知和账单到旅行社交款取票,系统校对无误即出机票给旅客。

14.患者监护系统:

目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院拟开发一个以计算机为中心的患者监护系统,基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志。当某个病人的生理信号超出医生规定的安全范围时,向值班护士发出警告信息。此外,护士在需要时还可以要求系统打印出某个指定病人的病情报告。

15.技术资料管理系统:

某大学软件工程研究中心的资料室中目前大约存有1000份技术报告、论文、图书和杂志,每份资料在目录柜中都有一张索引卡。预计资料室中最终会增加到有10000份资料。为改善对资料的管理工作,打算为每份资料建立两张穿孔卡片,并且开发一个程序以完成各种检索、排序和输出的工作。

数据结构要求:为每份资料建立的一对穿孔卡片上都有4个固定格式的字符域,Ⅰ、Ⅱ域在第一张卡片上,Ⅲ、Ⅳ域在第二张卡片上。第Ⅰ域宽30个字符,包含作者(们)的姓名;第Ⅱ域宽50个字符,包含完整的或缩写的标题;第Ⅲ域宽50个字符,包含此份资料的关键字;第Ⅳ域宽30个字符,指明此份资料的出处(杂志或会议录的名字、期数、出版社等)。

功能要求:

① 读入不定长的一叠资料卡并储存它们;

② 按第一作者名字的字母顺序排列读入的数据; ③ 印出上述数据;

④ 根据卡片第Ⅲ域的内容建立关键字表,删除重复的关键字,按字母顺序排列并打印;

⑤ 在作者名字域中搜索给定的作者名字,印出此作者的著作清单; ⑥ 搜索关键字域,找出包含指定的1个、2个、或3个关键字的资料; ⑦ 对标题域中的字提供与第⑥项类似的检索功能。

输入的卡片叠中的第一张卡片指明系统应该完成的任务(可能是一串任务),因此,这张卡片实际上是程序的控制卡。程序应能在一次运行中完成多个任务。

16.房产经营管理系统:

系统中存放经营公司现有房产的地点、楼房名称、楼房总层次、房间的层次、朝向、规格(一室一厅或二室一厅或三室一厅)、面积。房间可以出售或租用,分别写出每平方米的单价和总价。客户可能随时查询未出售或未出租的房间的上述基本情况。房产经营商可随时查询已售出或出租的房产的资金回收情况及未出售或未出租的房产的资金占用情况。

17.航空交通控制系统

某小岛国决定为自己的一个飞机场建一个航空交通控制(ACT)系统。系统描述如下:

所有在该机场降落的飞机都须配有一部自动应答器,将该机的机型和航行数据以高密度打包的格式发送至ATC地面站。ATC地面站可向飞机进行信息查询。ATC地面站收到数据后,即进行解包并存入飞机数据库,系统可根据贮存信息向航空交通控制员进行计算机图形显示,该显示每10秒更新一次。所有信息经分析以确定是否存在“危险性”。航空交通控制员可就荧屏上显示的任何飞机向数据库查询有关信息。

18.文档管理系统

面向企业用户,研制开发一套文档管理系统,实现企业文档的存储、分类、维护、检索、授权等过程的全面管理。为用户主要提供如下功能:

1)登陆:用户通过浏览器登陆到系统,输入用户名和密码,登陆到系统,看到本用户所能看到的各类信息,包括文档分类树、文档的基本信息等。

2)人员组织角色管理与授权管理:创建和维护企业的人员、组织和角色,人员具有登陆名、名称、密码、邮件、手机等一些基本的属性,人员从属与一个或多个组织,具有一个或多个角色,组织间具有层次关系。提供文档按照人员与角色两种方式的授权模式。

3)文档分类管理:用户可以增删改文档的分类,文档分类间可以建立层次关系。4)文档维护:用户可以增删改文档,文档包括基本的描述信息(如文档编号、文档名、文档创建时间、创建人、大小等)及文档对应的文件列表。

5)文档检索:用户可以方便的按照文档的名称、编号、创建时间、创建人等信息进行检索。

19.客户关系管理系统

“以客户为中心”的客户关系管理成为网络时代电子商务制胜的重要因素,愈来愈受到企业的重视。客户关系管理系统,简称CRM(Customer Relationship Management),是指公司在做营销策略时关注于顾客发展,给客户以最优的管理:通过完善的客户支持平台、客户交互平台、企业生产平台、最大限度地实现顾客支付价值、顾客终身价值,这样让公司的潜在客户变成现实客户、现实客户变成忠诚客户,通过满足每个客户特殊需求,与客户建立长期稳定的关系。项目拟研制一个基于B/S架构的客户关系管理系统,实现对客户数据的管理,系统提供的主要功能如下:

1)客户资料管理:主要实现客户资料的录入、修改、保存、删除、以及查询等功能。客户资料的主要内容包括:用户编码、用户单位名称、用户单位法人代表、邮政编码、用户单位的联系地址、用户单位的联系部门、用户单位的代理人、用户单位的银行账号、电话挂号、相关销售员编码、联系电话、开户行、税号、用户单位所在区域、购买产品类型、购买日期、购买合同编号等资料。客户资料的查询功能提供根据客户名称、地域、客户代码、客户的单位地址等属性进行查询的功能。

2)客户支持管理:由客户使用支持、技术服务培训及顾客联系提醒两个部分。技术支持:将公司对产品使用培训文档转换成电子文档,由客户自己上网了解产品的性能。技术服务培训:实现公司的培训计划、培训对象的录入、修改、删除、保存功能以及将公司对公司技术人员的培训内容作成电子文档,在局域网内由公司的技术人员自由阅读,除此之外还提供培训提醒功能。顾客联系提醒:根据服务部门的条件设定实现服务人员对顾客的联系的定期提醒。

3)售后服务管理:由服务质量检查考核管理、走访顾客管理二个部分组成。服务质量检查考核管理:实现服务质量检查考核单的生成、录入、删除、存档等功能。走访顾客管理:实现走访顾客记录单的生成、录入、删除、存档等功能,并根据提供的测评方法自动产生测评结果。

4)投诉管理子模块由正常信息反馈、客户投诉、信息处理三个部分组成。正常信息反馈:根据客户的信息反馈生成信息反馈单,并实现对客户的信息反馈单的维护功能。客户投诉:根据基础数据管理中对投诉的分类生成顾客投诉单,并实现对顾客投诉单的维护功能。信息处理:根据公司的规定,对顾客的反馈信息及客户投诉进行处理,并生成信息处理单,以及实现对信息处理单的保存、删除、存档等维护功能。

5)新品市场反馈:结合客户新品开发档案,输入市场反馈情况,并通过量化来对比所有新品的反馈分,进而分析新品的市场销售趋势。

20.设备管理系统

生产型企业中存在大量的设备,如何对这些设备进行全面管理是企业管理的重要内容。项目拟研发基于B/S架构的设备管理系统,包括设备申购、设备台账、车间设备使用、使用状况查询分析四部分组成。其中设备申购是一个过程,包括设备申请采购、启用和封存、报废过程。设备台账是对所有的设备建立的一个台账,并提供设备查询功能。车间设备使用主要是记录设备使用过程中的各种情况,包括日常维修、设备交接班记录等。使用状况查询分析是根据设备台账,来查询车间设备使用的各种情况,进行一定的分析。

设备管理涉及多个表单,其中主要表单如下:

1)设备的基本信息表:设备名称、规格/型号、产地、价格、原台账数、购入时间、是否在建、整机、使用时间、折价年限、设备存放车间、现台账数、车间号、新开发、性能、凭证号数、设备原号、备注。

2)设备购置申请表:设备名称、型号规格、数量、要求进货时间、申请理由、申请部门、申请时间、主要技术要求。

3)设备启用和封存表:设备名称、设备编号、型号/规格、封存地点、封存日期、启封日期、技术状况随机附件、备注,申请设备封存理由(启封)原因、使用部门意见、设备科意见、制造部意见、副总经理批准、申请单位负责人。4)设备报废表:设备名称、设备编号、型号/规格、安装地点、申请设备报废原因、备注,报废设备处置方案、使用部门负责人、设备科、制造部、副总经理审批。

5)日常维修表:日期、机床编号、责任人、检查人。输入完成后,自动生成上月21日到本月20日的监督内容子表,并逐条输入每日监督内容,分成包洁区卫生(生产区域卫生)类:地面、墙壁、玻璃、工具箱;设备类:机床外表、导轨丝杆清洁无拉伤加油、其他;定置摆放类:工装刀量具摆放、余料摆放、其他;及其他规章制度遵守情况、处置措施、检查人、监督人。

6)设备交接记录:输入设备编号,自动根据设备检查项目表中得到所有项目及分数生成多条记录,自动记录日期、设备编号、检查项目及状况、标准、分数,选择班次(两班制的,1表示白班,2表示夜班;三班制的,1表示白班1,2表示白班2,3表示夜班),输入各项目的班组自查结果,自动生成每日评分,记录交班人、接班人,如果每日评分低于合格分数的,需要输入车间处理结果和监督抽查结果。

21.宠物医院

为宠物主人和宠物医院间建立一个沟通的平台,主要提供如下功能。

医院管理:医院的注册申请需要提供营业执照、资质证书等材料,经由管理员审核通过后,该医院才能成为网站的会员,并且根据医院的医疗条件,医院会被评定有不同的星级水平。医院申请的时候需提供一个密码,以后医生要申请成为该医院的医生必须输入该密码。

医生管理:可以申请某个医院的医生,申请加入时需输入该医院的密码,当成为医生之后,就可以对用户提出的问诊进行诊断。用户可以通过网站,查找到所以医生的信息

在线问诊:每个个人会员都可以进行问诊,用户输入病症的一些基本描述,这个描述有一个特定格式,类似于病历。医生对每一个为诊断的问诊都可以做出诊断。对于之前的一些问诊,用户都可以查询得到。

22.基于B/S架构的网络论坛

为各类门户网站提供一个可定时开放的、安全高效的BBS论坛系统,使之成为公众就关心的重大问题和疑难问题交流的平台。论坛具有以下功能:

1)用户注册登陆:用户可自定义用户名、密码、密码提示问题和答案、个人头衔、门派、签名、自我简介等信息,可以自定义个性头像和登陆风格; 2)发帖回复功能:可以发新信息(新帖)、回复(跟随)等,可以发起投票统计并自动统计调查结果,可提供图形化显示功能;

3)短消息功能:用户可以在论坛内部相互发送短消息,系统自动提示未读短消息;

4)论坛公告功能:管理员可以发布各类论坛公告,最新公告以滚动条的形式出现在论坛最上方;

5)设定分论坛功能:管理员可自由设定分论坛的主题,可同时设置多个论坛,每个分论坛都具有定时开通功能。可为每个分论坛配置版主(分论坛管理员); 6)内容安全过滤:系统对网友的发言进行过滤,系统可设定某些关键字(例如“法轮功”)进行报警或自动用“*”号替换,系统对报警的信息自动添加特别记号重点标明; 7)人工审核功能:所有的网友发言信息必须经过管理员审核通过才能发布,提供“控制开关”,即如果审核通过,点“通过”按钮即可,需要删除的点“删除”按钮即可;

8)论坛检索功能:可以根据发帖的主题、内容关键字、作者、分论坛等信息搜索论坛内已有的文章;

9)定时开通功能:管理员可控制论坛的开通和关闭,可设定关闭后不可再发帖或不可再访问;

10)用户系统检测:系统可自动检测在线用户IP地址、操作系统、浏览器版本并可显示所有在线用户; 11)生日提醒功能:根据注册用户填写的注册信息,在用户生日到来时自动提醒; 12)论坛在线统计:自动统计在线用户数并列表显示在线用户;自动统计用户的发帖数、跟帖数(回复数)、访问次数和点击量。

第二篇:重邮操作系统课程设计报告

操作系统课程设计

班级:

姓名:

学号:

时间: 年 月 日

指导教师:

实验题目:

操作系统课程设计

实验目的:

1、掌握Linux操作系统安装的一般方法

2、掌握Linux 内核升级一般方法

3、掌握系统引导管理器Grub的使用

4、学会编写简单的模块化的字符设备驱动程序。

实验内容:(叙述自己编写的程序)

1.安装Linux操作系统: 在虚拟机平台上安装CentOS6.5:

2.实现操作系统内核的升级:

使用命令uname –r 查看系统内核版本:

到http://www.xiexiebang.com下载新内核并解压缩:

在终端进入源码目录 输入命令:

make mrproper(清除当前目录下残留的.config和.o文件)make clean(清除编译中间文件)make menuconfig(配置编译选项)开始编译内核: make bzImage make modules make modules_install 配置系统引导:

编辑文件/boot/grub/grub.conf default=0 所得结果如下:

3.编译并安装一个简单的模块化字符设备驱动程序:(1)编写驱动程序 文件memdev.c #include #include #include #include #include #include #include #include #include #include #include #include

#include “memdev.h”

static mem_major = MEMDEV_MAJOR;

module_param(mem_major, int, S_IRUGO);

struct mem_dev *mem_devp;/*设备结构体指针*/

struct cdev cdev;

/*文件打开函数*/ int mem_open(struct inode *inode, struct file *filp){

struct mem_dev *dev;

/*获取次设备号*/

int num = MINOR(inode->i_rdev);

if(num >= MEMDEV_NR_DEVS)

return-ENODEV;

dev = &mem_devp[num];

/*将设备描述结构指针赋值给文件私有数据指针*/

filp->private_data = dev;

return 0;}

/*文件释放函数*/ int mem_release(struct inode *inode, struct file *filp){

return 0;}

/*读函数*/ static ssize_t mem_read(struct file *filp, char __user *buf, size_t size, loff_t *ppos){

unsigned long p = *ppos;

unsigned int count = size;

int ret = 0;

struct mem_dev *dev = filp->private_data;/*获得设备结构体指针*/

/*判断读位置是否有效*/

if(p >= MEMDEV_SIZE)

return 0;

if(count > MEMDEV_SIZEp;

/*读数据到用户空间*/

if(copy_to_user(buf,(void*)(dev->data + p), count))

{

ret =p)

count = MEMDEV_SIZEEFAULT;

else

{

*ppos += count;

ret = count;

printk(KERN_INFO “written %d bytes(s)from %dn”, count, p);

}

return ret;}

/* seek文件定位函数 */ static loff_t mem_llseek(struct file *filp, loff_t offset, int whence){

loff_t newpos;

switch(whence){

case 0: /* SEEK_SET */

newpos = offset;

break;

case 1: /* SEEK_CUR */

newpos = filp->f_pos + offset;

break;

case 2: /* SEEK_END */

newpos = MEMDEV_SIZE-1 + offset;

break;

default: /* can't happen */

return-EINVAL;

}

if((newpos<0)||(newpos>MEMDEV_SIZE))

return-EINVAL;

filp->f_pos = newpos;

return newpos;}

/*文件操作结构体*/ static const struct file_operations mem_fops = {.owner = THIS_MODULE,.llseek = mem_llseek,.read = mem_read,.write = mem_write,.open = mem_open,.release = mem_release, };

/*设备驱动模块加载函数*/ static int memdev_init(void){

int result;

int i;

dev_t devno = MKDEV(mem_major, 0);

/* 静态申请设备号*/

if(mem_major)

result = register_chrdev_region(devno, 2, “memdev”);

else /* 动态分配设备号 */

{

result = alloc_chrdev_region(&devno, 0, 2, “memdev”);

mem_major = MAJOR(devno);

}

if(result < 0)

return result;

/*初始化cdev结构*/

cdev_init(&cdev, &mem_fops);

cdev.owner = THIS_MODULE;

cdev.ops = &mem_fops;

/* 注册字符设备 */

cdev_add(&cdev, MKDEV(mem_major, 0), MEMDEV_NR_DEVS);

/* 为设备描述结构分配内存*/

mem_devp = kmalloc(MEMDEV_NR_DEVS * sizeof(struct mem_dev), GFP_KERNEL);

if(!mem_devp)/*申请失败*/

{

result =-ENOMEM;

goto fail_malloc;

}

memset(mem_devp, 0, sizeof(struct mem_dev));

/*为设备分配内存*/

for(i=0;i < MEMDEV_NR_DEVS;i++)

{

mem_devp[i].size = MEMDEV_SIZE;

mem_devp[i].data = kmalloc(MEMDEV_SIZE, GFP_KERNEL);

memset(mem_devp[i].data, 0, MEMDEV_SIZE);

}

return 0;

fail_malloc:

unregister_chrdev_region(devno, 1);

return result;}

/*模块卸载函数*/ static void memdev_exit(void){

cdev_del(&cdev);/*注销设备*/

kfree(mem_devp);/*释放设备结构体内存*/

unregister_chrdev_region(MKDEV(mem_major, 0), 2);/*释放设备号*/ }

MODULE_AUTHOR(“Mac.Zhong”);MODULE_LICENSE(“GPL”);

module_init(memdev_init);module_exit(memdev_exit);

文件memdev.h #ifndef _MEMDEV_H_ #define _MEMDEV_H_

#ifndef MEMDEV_MAJOR #define MEMDEV_MAJOR 88 /*预设的mem的主设备号*/ #endif

#ifndef MEMDEV_NR_DEVS #define MEMDEV_NR_DEVS 2 /*设备数*/ #endif

#ifndef MEMDEV_SIZE #define MEMDEV_SIZE 4096 #endif

/*mem设备描述结构体*/ struct mem_dev {

char *data;

unsigned long size;};

#endif /* _MEMDEV_H_ */

(2)为include创建连接文件

(3)输入如下命令:

cd /usr/include rm-rf asm linux scsi ln-s /usr/src/linux-3.2.2/include/asm-generic asm ln-s /usr/src/linux-3.2.2/include/linux linux ln-s /usr/src/linux-3.2.2/include/scsi scsi

(4)建立相应文件: cd /root mkdir firstdriver touch memdev.c #建立驱动程序文件 touch memdev.h #头文件

touch Makefile #编写Makefile Makefile: ifneq($(KERNELRELEASE),)

obj-m:=memdev.o else

KERNELDIR:=/lib/modules/$(shell uname-r)/build

PWD:=$(shell pwd)

default:

$(MAKE)-C $(KERNELDIR)M=$(PWD)modules

clean:

rm-rf *.o *.mod.c *.mod.o *.ko

endif

(5)编译驱动程序:

make-C /lib/modules/2.6.32-generic/build M=/root/firstdriver modules

(6)找到memdev.ko,将它装入内核 imsmod memdev.ko

(7)创建文件节点,mknod memdev0 c 88 0

(8)编写测试程序,测试驱动 文件test.c #include int main(){ FILE *fp0 = NULL;char Buf[4096];fp0 = fopen(“/dev/memdev0”, “r+”);if(fp0 == NULL){ printf(“Open Memdev0 Error!n”);return-1;} else { printf(“打开Memdev0成功啦!n”);} strcpy(Buf, “Mem is char device!”);printf(“写入内容BUF: %s n”, Buf);fwrite(Buf, sizeof(Buf), 1, fp0);fseek(fp0, 0, SEEK_SET);strcpy(Buf, “Buf is NULL!”);printf(“现在清空BUF: %s n”, Buf);fread(Buf, sizeof(Buf), 1, fp0);printf(“读回内容BUF: %s n”, Buf);return 0;}

遇到的问题及解决:(程序编写调试过程中出现的错误及解决方法)

1.虚拟机不会使用,听老师讲解以及百度解决;

2.linux系统命令不会使用,询问老师以及百度解决; 3.字符设备驱动程序不会编译和安装,百度解决。

心得体会:

掌握了Linux操作系统安装的一般方法,掌握了Linux 内核升级一般方法,掌握了系统引导管理器Grub的使用,学会了编写简单的模块化的字符设备驱动程序。

第三篇:重邮51单片机课程设计报告(推荐)

重邮专用

51单片机课程设计报告

学院:

专业班级:姓名:

指导教师:

设计时间:

51单片机课程设计

一、设计任务与要求

1.任务:制作并调试51单片机学习板 2.要求:

(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会看电路原理图;

(3)制作51单片机学习板;

(4)学会使用Keil C软件下载调试程序;

用调试程序将51单片机学习板调试成功。

二、总原理图及元器件清单

1.总原理图

要求:用铅笔在A4纸整页绘制

2.元件清单

三、模块电路分析

1.最小系统:

单片机最小系统电路分为振荡电路和复位电路,振荡电路选用 12MHz 高精度晶振, 振荡电容选用 22p和30p 独石电容;

晶振为单片机提供时钟激励,保证单片机内部和外部电路的时序逻辑电路协调动作,课程中使用的是12M的晶振,可以产生每秒12M频率的激

励。而构成振荡回路的俩个电容为负载电容,可以影响晶振的谐振频率和振荡幅度。

图 1图

2复位电路使用 RC 电路,使用普通的电解电容与金属膜电阻即可;

3当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST为高电平,之后随着时间推移电源负极通过电阻对电容放电,放完电时RST为低电平。正常工作为低电平,高电平复位。(分析振荡电路:测振荡频率; 分析复位电路:高或低电平复位?)

2.显示模块:

发光二极管显示电路:

Usb的为系统加电时,power的发光二极管处于高电位,发光。当程序控制其余四个脚的电位为低电位,输出端口为高电位,剩下的四个发光二极管发光

4数码管显示电路

本课程使用数码管显示状态为静态显示。静态显示就是显示驱动电路具有

输出锁存功能。单片机将所要显示的数据输出后,数码管显示数据不变。Cpu不再控制led。静态显示的接口电路采用一个并行口接一个数码管。数码管的公共端按共阴极或共阳极分别接地或

VCC

5四、硬件调试

1、是否短路

用万用表检查P2两端是短路。电阻为0,则短路,电阻为一适值,电路正常。

2、焊接顺序

焊接的顺序很重要,按功能划分的器件进行焊接,顺序是功能部件的焊接--调试--另一功能部件的焊接,这样容易找到问题的所在。

3、器件功能

1)检查原理图连接是否正确

2)检查原理图与PCB图是否一致

3)检查原理图与器件的DATASHEET上引脚是否一致 4)用万用表检查是否有虚焊,引脚短路现象

5)查询器件的DATASHEET,分析一下时序是否一致,同时分析一下命令字是否正确

6)通过示波器对芯片各个引脚进行检查,检查地址线是否有信号的7)飞线。用别的的口线进行控制,看看能不能对其进行正常操作,多试验,才能找到问题出现在什么地方。

六、软件调试

1、设置硬件仿真环境

单片机应用系统程序的编译和仿真在KeilμVision环境下进行,在调试程序之前,需要对工程进行Debug设置,选择软件仿真或硬件仿真。软件仿真使用计算机来模拟程序的运行,不需要建立硬件平台就可以快速得到某些运行结果;硬件仿真是最准确的仿真方法,必须建立硬件平台,通过PC机→硬件仿真器→用户目标系统进行系统调试。采用硬件仿真的方法,硬件平台即为带有图1所示接口电路的单片机应用系统,设置硬件仿真环境的具体操作步骤如下:

首先,点击所建工程:Project菜单中的Options for Target„Targer 1‟,出现工程的配置窗口,点击Debug设置,选择KeilMcmitor-51 Driver,具体参数设置如图6所示。

图 6

然后,设置仿真器参数。建议波特率设置范围300~38 400。为避免程序中的中断和Keil硬件仿真环境中的中断互相冲突,不选择“Stop ProgramExecution with SerialInterrupt”。仿真器参数的设置如图7所示。

图7

完成51单片机在Keil μVision环境中的硬件仿真环境设置后,可以进行程序的调试仿真。

2、调试仿真

1)导入测试代码:文件→打开→key and display.Uv2 2)重建全部工程:工程→重建全部目标文件

重建结果为,“DA_5615” – 0 Error(s), 0 Warning(s).3)调试:调试→Start/Stop Debug session(Ctrl + F5)

调试结果为:Connected to Monitor_51 V3.4Load “C:......DA_56511、详细描述软件调试步骤。及各模块调试结果。

2、详细描述调试过程中出现的故障现象,并作故障分析,及解决方法

七、心得

自己写啦~~

第四篇:软件工程课程设计

软件工程课程设计实验心得

经过一个星期的软件工程课程设计,本人在老师的指导下,顺利完成该课程设计。通过该课程设计,收获颇多。

一、对实验原理有更深的理解

通过该课程设计,掌握了什么是软件程序,软件程序工作的基本过程及其各阶段的基本任务,熟悉了软件程序总流程框图,了解了软件程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识师机械的,表面的。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。

二、对该理论在实践中的应用有深刻的理解

通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。

三、激发了学习的积极性

通过该课程设计,全面系统的理解了软件工程程序构造的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的软件工程的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对与计算机操作系统的认识是模糊的,概念上的,现在通过

自己动手做实验,从实践上认识了操作系统是如何处理命令的,如何协调计算机内部各个部件运行,对软件工程的认识更加深刻。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。在这次课程设计中,我就是按照实验指导的思想来完成。加深了理解文件系统的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。

四、理解了该知识点以及学科之间的融合渗透

本次课程设计程序部分是用C语言编写的,把《计算机操作系统》,《软件工程》,《算法分析与设计》《C语言》四门学科联系起来,把各个学科之间的知识融合起来,把各门课程的知识联系起来,对计算机整体的认识更加深刻。使我加深了对《计算机操作系统》,《软件工程》,《算法分析与设计》《C语言》四门课程的认识。

第五篇:软件工程课程设计封面

淮南师范学院 计算机与信息工程系

《软件工程》课程设计

工资管理项目软件工程报告

专业班级: 计算机科学与技术08(1)班 项目组号: 组

长:程亮

员:吴腾、徐罗敬 指导老师:孙淮宁(教授)

2011年6月24日

工资管理软件工程分工安排

1、需求分析

负责人:程亮

参与人:吴腾

2、软件设计

负责人:吴腾

参与人:

3、编码工作

负责人:

参与人:

4、测试工作

负责人:

参与人:

工资管理项目软件需求分析报告

负 责 人: 参 与 人: 功能模型: 数据模型: 行为模型: 数据词典: 审 核 人:

2011年6月24日

工资管理项目软件结构设计报告

负 责 人: 参 与 人: 总体结构: 内部结构: 数据结构: 借 接 口: 界

面: 审 核 人:

2011年6月24日

工资管理软件编码工作报告

负 责 人: 参 与 人: 主控模块: 子控模块: 原子模块: 审 核 人:

2011年6月24日

工资管理软件系统测试报告

负 责 人: 参 与 人:, 单元测试: 组装测试: 确认测试: 审 核 人:

2011年6月26日

下载软件工程课程设计重邮word格式文档
下载软件工程课程设计重邮.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《软件工程》课程设计要求

    《软件工程》课程设计要求 一、课程设计目的 《软件工程》是一门实践性极强的课程。课程设计通过一个实际的项目,培养学生分析问题和解决实际问题的能力,培养学生综合应用软件......

    软件工程课程设计任务书

    抽奖程序设计说明书 1 概述 1.1 系统简述 学院将举行庆元旦暨迎新春联欢晚会,其中有抽奖活动,需要一个抽奖程序。首先将班级同学分发抽奖券,奖券号码与学号、姓名绑定,联欢会上......

    软件工程课程设计选题

    软件工程课程设计选题 1、俄罗斯方块 设计俄罗斯方块游戏程序,用户可以通过平移和转动自动落下的不同形状物体,填满一行来得分。开发智力和反应能力。 要求 (1)界面的左侧是游戏......

    软件工程课程设计题目

    软件工程设计题目 1.个人通讯录管理系统 要求:增加记录、删除记录、显示所有记录、查询记录、退出。通讯录记录信息包括:姓名,电话,email等。(其中,用户输入正确的用户名和密码才......

    《软件工程》课程设计指导书

    《软件工程》课程设计指导 课程设计名称 :软件工程 课程设计周(时)数: 2014.03.12-2014.06.10 (3个月) 一、 课程设计教学目的及基本要求: 1. 课程设计教学目的 按照关系型数据库......

    软件工程课程设计题目

    软件工程设计题目 1. 学生学籍管理系统 要求: 1)包括基本需求: 主要对学生的学籍进行管理。学籍管理包括各种信息的录入、修改、删除等操作;此外还有对各种信息的查询,便于老师和......

    软件工程课程设计总结

    软件工程课程设计总结 我们所选择的图书管理系统的课程设计对我们是新的挑战和尝试的过程,利用所学习的软件设计知识并制作一个关于图书管理系统,在具体的设计与实施中,我们看......

    软件工程课程设计教学大纲

    专业实践教学大纲 《软件工程课程设计》教学大纲 英文名称 课程代码:学分:1 分 执笔人:金霜 审定人: 一、前言 《软件工程课程设计》是一个综合的设计性实验,是在学习完核心课程......