




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录一 概述2二 方案设计3三 流程图4四 程序的调试与运行结果说明6五 课程设计总结11六 参考文献11七 附录(源代码)12一 概述1. 课程设计的目的(1)通过课程设计,使学生理论联系实际,在程序设计实践中进一步了解操作系统的原理和算法的实现,了解设计系统时应考虑的因素;(2)了解c应用程序编写;(3)培养学生分析、解决问题的能力,提高学生的论文写作能力。2. 课程设计的要求(1)熟悉c语言的运用,掌握和理解操作系统中的原理和算法;(2)结合操作系统的基本原理,进行程序设计;(3)对操作系统的设计和实现有进一步认识和理解;(4)独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝;(5)做好上机准备:上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件;(6)课程设计报告:根据编程实现的结果,按课程设计报告的撰写规范完成操作系统课程设计报告(课程设计报告中必须有相关原理分析、程序设计、程序实现和程序调试等内容,一人一份,绝对不能雷同);(7)电子文档:每组实现的结果必须进行检查和演示;程序源代码和可执行程序必须上交,作为考核内容的一部分;(8)电子文档和报告一起由学习委员按规定时间统一上交,迟交者无成绩。3. 课程设计的主要设计思想本设计的目的是解决生产者消费者问题。设计目的是让有界缓冲区内设有个存储单元,放入取出的数据项设定为这个整形数。要求每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前指针位置和生产者消费者标识符.二 方案设计1. 设计方案 本系统一共建立了administrator 和guest两个用户,每个用户拥有一个结构体数组为struct flie fa8和 struct flie fg8每个用户最多可一建立8个文件,每个文件对应一个文件模块; 文件模块: struct flie int ed; /判断是否正存放文件 char f_name8; /文件名 char f_c8; /存放文件内容 int att ; / 文件属性 0为只读 1为只写 ; 文件模块示意图(如图1):ed f_name8 att f_c8 图1分别设计主函数和子函数,通过主函数分别调用子函数来实现相应的功能。在进入主函数之后,首先进入用户登陆界面,通过调用check()函数来对用户输入的密码进行验证,验证通过后,则进入文件管理的界面。进入文件管理的界面之后,系统则通过一个switch()语句来实现文件管理系统的各个功能的。 各个子函数如表1:系统调用原型功能主要参数说明void check()密码认证admin为函数出口int init()初始化操作界面返回i执行相应的操作void createfile()创建文件name文件名-fa.f_namevoid deletefile()删除文件void openfile()打开文件void exit()退出系统void writefile()书写文件c为文件内容-fa.f_cvoid copyfile()复制文件void modifyfile()修改属性a为文件属性-fa.attvoid catalogue()目录管理 表1三 流程图1. 整体框图(如图2):消注?成功? 开始用户登陆ny接收命令 解析命令实现命令 结束n选择用户退出nyy 图22. 系统原理框图(如图3):administratorguestflie1 flie2 flie1 flie2 ed f_name att f_c文件名文件属性文件内容判断存储状态ed f_name att f_c判断存储状态判断存储状态判断存储状态判断存储状态 图3四 程序的调试与运行结果说明1程序调试通过后运行出现登陆界面,如图4所示: 图42选择1(即选择administrator)后,要求输入密码,如图5所示: 图53输入错误密码后提示“输入错误,请重新输入”如图6所示: 图64输入正确密码“ admin”后,进入初始界面,如图7所示: 图75选择1(创建文件)后,如图8所示: 图86输入文件名称“byf”后回车,提示“请选择文件属性(0.只读 - 1.只写):1”,输入1(即只写)后提示“创建文件成功”如图9所示: 图97再选择1创建相同的文件后提示“创建错误!文件已经存在!”如图10所示: 图108选择4(书写文件)后提示“请输入要书写的文件的名称”输入文件内容后提示“书写文件成功”,如图11所示: 图119选择3(打开文件)后提示“请输入您所要打开文件的名称”输入“byf”后显示byf文件的内容,如图12所示: 图1210选择3(打开文件),如果输入的文件不存在则提示“文件不存在”,如图13所示: 图1311选择5(复制文件),如图14所示: 图1412选择6(修改属性),如图15所示: 图1513选择7(目录管理),如图16所示: 图1614选择2(删除文件),如图17所示: 图1715选择8(注销)后,返回初始界面,如图18所示: 图1816最后选择“退出系统”,如图19所示: 图19五 课程设计总结一个星期以来,我想了好多好多的方法来做这个课程设计,上网查了一些资料,参考网上的程序,终于把课程设计弄完了,感觉收获很大。 当然这一个星期来,对课程设计有了更多的认识和了解.如何真正检测自己对所学知识的掌握应用。课程设计时每一句程序代码的书写都要遵循规则,一定要保证一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。任何一点的失误,都有可能在成严重的后果.课程设计不同于平时的编程,平时的编程,针对的只是短期内的知识点,内容要求较低,难度也比较低。而此时,我们必须综合考虑整个程序框架,可以说要想做好课程设计,第一件事必须对所学知识事先进行全面的回顾,弄懂每一个知识点,弄清楚自己以前不大清楚的问题,只有这样才不至于编程时摸不着头脑。程序设计对程序的内容功能的要求远远要超出我们课堂所学的内容,为了让自己的设计功能更加完善,更加符合要求,上网查资料。 在次过程中。对操作系统的文件管理有了更深一层的理解,这就让我明白了一个道理,那就是任何一个微不足道的细节豆油可能会影响到整个的设计,必须将这个问题时刻牢记在心。在程序调试的过程中很多时候可能出现一些自己想不到的结果. 总的来说,本次课程设计让我学到了很多的东西,不仅仅是书本上的知识,更多的书本上所没有的知识, 起到串起所学知识,提升了我的综合能力、动手能力、将所学知识应用于实践的能力。 这次时间比较紧。我做的不好。没办法。等有机会我还会把这做的更好。因为我是一个追求完美的人,所以我会尽力做的更好。再追求最好。还好,这次的目的基本上达到了.最后,还想感谢指导老师,谢谢!六 参考文献(1)汤子瀛. 计算机操作系统m. 西安电子科技大学出版社. 2006.9 (2)钱能.c+程序设计教程m.清华大学出版社.2005.5七 附录(源代码)ok equ 20h ;抢答开始标志位;将p1口与p2口互换,p3.0-p1.0,p3.1-p1.7 ring equ 22h ;响铃标志位 org 0000h ajmp main org 0003h ajmp int0sub org 000bh ajmp t0int org 0013h ajmp int1sub org 001bh ajmp t1int org 0040h;=-;主程序;=main: mov r1,#0fh ;初设抢答时间为15s mov r2,#0ah ;初设答题时间为10s mov tmod,#11h ;设置未定时器/模式1 mov th0,#0f0h mov tl0,#0ffh ;越高发声频率越高,越尖 mov th1,#3ch mov tl1,#0b0h ;50ms为一次溢出中断 setb ea setb et0 setb et1 setb ex0 setb ex1 ;允许四个中断,t0/t1/int0/int1 clr ok clr ring setb tr1 setb tr0 ;一开始就运行定时器,以开始显示fff.如果想重新计数,重置th1/tl1就可以了;=查询程序=start: mov r5,#0bh mov r4,#0bh mov r3,#0bh acall display ;未开始抢答时候显示fff jb p1.0,next ;ddddddd acall delay jb p1.0,next ;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询 acall bark ;按键发声 mov a,r1 mov r6,a ;送r1-r6,因为r1中保存了抢答时间 setb ok ;抢答标志位,用于count只程序中判断是否查询抢答 mov r3,0ah ;抢答只显示计时,灭号数 ajmp count ;进入倒计时程序,查询有效抢答的程序在count里面next: jnb p1.1,false1 jnb p1.2,false2 jnb p1.3,false3 jnb p1.4,false4 jnb p1.5,false5 jnb p1.6,false6 ajmp start;=非法抢答处理程序=false1: acall bark ;按键发声 mov r3,#01h ajmp errorfalse2: acall bark mov r3,#02h ajmp errorfalse3: acall bark mov r3,#03h ajmp errorfalse4: acall bark mov r3,#04h ajmp errorfalse5: acall bark mov r3,#05h ajmp errorfalse6: acall bark mov r3,#06h ajmp error;=int0(抢答时间r1调整程序)= int0sub:mov a,r1 mov b,#0ah div ab mov r5,a mov r4,b mov r3,#0ah acall display ;先在两个时间led上显示r1 jnb p3.4,inc0 ;p3.4为+1s键,如按下跳到inco jnb p3.5,dec0 ;p3.5为-1s键,如按下跳到deco jnb p1.7,back0 ;p3.1为确定键,如按下跳到backo ajmp int0subinc0: mov a,r1 cjne a,#63h,add0 ;如果不是99,r2加1,如果加到99了,r1就置0,重新加起。 mov r1,#00h acall delay1 ajmp int0subadd0: inc r1 acall delay1 ajmp int0subdec0: mov a,r1 jz setr1 ;如果r1为0, r1就置99, dec r1 acall delay1 ajmp int0subsetr1: mov r1,#63h acall delay1 ajmp int0subback0: reti ;=int1(回答时间r2调整程序)=int1sub: mov a,r2 mov b,#0ah div ab mov r5,a mov r4,b mov r3,#0ah acall display jnb p3.4,inc1 jnb p3.5,dec1 jnb p1.7,back1 ajmp int1subinc1: mov a,r2 cjne a,#63h,add1 mov r2,#00h acall delay1 ajmp int1subadd1: inc r2 acall delay1 ajmp int1subdec1: mov a,r2 jz setr2 dec r2 acall delay1 ajmp int1subsetr2: mov r2,#63h acall delay1 ajmp int1subback1: reti ;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=count: mov r0,#00h ;重置定时器中断次数 mov th1,#3ch mov tl1,#0b0h ;重置定时器recount: mov a,r6 ;r6保存了倒计时的时间,之前先将抢答时间或回答时间给r6 mov b,#0ah div ab ;除十分出个位/十位 mov 30h,a ;十位存于(30h) mov 31h,b ;个位存于(31h) mov r5,30h ;取十位 mov r4,31h ;取个位 mov a,r6 subb a,#07h jnc larger ;大于5s跳到larger,小于等于5s会提醒 mov a,r0 cjne a,#0ah,full;1s中0.5s向下运行 clr ring ajmp checkfull: cjne a,#14h,check;下面系1s的情况,响并显示号数并清r0,重新计 setb ring mov a,r6 jz quit ;计时完毕 mov r0,#00h dec r6 ;一秒标志减1 ajmp checklarger: mov a,r0 cjne a,#14h,check;如果1s向下运行,否者跳到查停/显示 dec r6 ;计时一秒r6自动减1 mov r0,#00hcheck: jnb p1.7,quit ;如按下停止键退出 acall display jb ok,accout ;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) ajmp recountaccout:jnb p1.1,true1 jnb p1.2,true2 jnb p1.3,true3 jnb p1.4,true4 jnb p1.5,true5 jnb p1.6,true5 ajmp recountquit: clr ok ;如果按下了停止键执行的程序 clr ring ajmp start;=正常抢答处理程序=true1: acall bark ;按键发声 mov a,r2 mov r6,a ;抢答时间r2送r6 mov r3,#01h clr ok ;因为答题的计时不再查询抢答,所以就锁了抢答 ajmp counttrue2: acall bark; mov a,r2 mov r6,a mov r3,#02h clr ok ajmp counttrue3: acall bark; mov a,r2 mov r6,a mov r3,#03h clr ok ajmp counttrue4: acall bark; mov a,r2 mov r6,a mov r3,#04h clr ok ajmp counttrue5: acall bark; mov a,r2 mov r6,a mov r3,#05h clr ok ajmp counttrue6: acall bark; mov a,r2 mov r6,a mov r3,#06h clr ok ajmp count;=犯规抢答程序=error: mov r0,#00h mov th1,#3ch mov tl1,#0b0h mov 34h,r3 ;犯规号数暂存与(34h)here: mov a,r0 cjne a,#0ah,flash ;0.5s向下运行-灭并停响 clr ring mov r3,#0ah mov r4,#0ah mov r5,#0ah ;三灯全灭 ajmp check1flash: cjne a,#14h,check1 ;下面系1s的情况,响并显示号数并清r0,重新计 setb ring mov r0,#00h mov r3,34h ;取回号数 mov r5,#0bh mov r4,#0bh ;显示ff和号数 ajmp check1check1:jnb p1.7,quit1 acall display ajmp herequit1: clr ring clr ok ajmp start;=显示程序=display: mov dptr,#dat1 ;查表显示程序,利用p0口做段选码口输出/p2低三位做位选码输出, mov a,r5 movc a,a+dpt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电池电源行业当前竞争格局与未来发展趋势分析报告
- 2025年检验检测行业当前市场规模及未来五到十年发展趋势报告
- 支委会的召开课件
- 操作安全知识培训课件
- 2025年部编版新教材语文七年级上册期末复习计划
- (2025)中小学教师资格证考试教育学心理学试题库及参考答案
- 2025全国企业员工全面质量管理知识考试试题库及参考答案
- (2025)物权法试题库及参考答案
- 2025年保育员(中级)操作证考试试题及答案
- 2024年土木工程师:“房屋建筑及施工”专业知识试题及答案
- 诊断与评估课件 第十六章 功能性评估学习资料
- 代建管理工作程序
- 继发性颅脑损伤的护理
- 便秘的中医护理
- 机电设备安装工艺细部节点做法
- 17025实验室管理体系
- 多模态技术在智能养鸡工厂中的研究现状与展望
- 《美国司法体系》课件
- 《基于深度强化学习在游戏上的应用》
- 小学信息技术试题(附答案)
- 《异常子宫出血诊断与治疗指南(2022更新版)》解读
评论
0/150
提交评论