课程设计报告(系统软件实践)_第1页
课程设计报告(系统软件实践)_第2页
课程设计报告(系统软件实践)_第3页
课程设计报告(系统软件实践)_第4页
课程设计报告(系统软件实践)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 北京化工大学北方学院 课程设计报告 课程名称课程名称 系统软件实践系统软件实践 设计题目设计题目 LinuxLinux C C 程序设计程序设计 专业 班级专业 班级 软件软件 10041004 学学 号号 姓姓 名名 张雄飞张雄飞 指导教师指导教师 马睿马睿 设计时间设计时间 2013 年年 10 月月 8 日日 2013 年年 10 月月 27 日日 2013 年 10 月 27 日 2 一 一 引言 引言 简要说明设计题目的目的 意义 内容 主要任务等简要说明设计题目的目的 意义 内容 主要任务等 1 1 设计目的 本次系统软件课程设计的主要目的有两个 一方面是分析设计 linux 源代码 另一方 面是进行系统级的程序设计 1 2 主要任务 1 编写程序 输入一个十进制整数 将其变换为二进制后存储在一个数组中 并用 make 工程管理器编译 注意分割文件 可参考第一题的提示 编写 makefile 文件 2 设计一个程序 要求利用 read 函数读取系统文件 etc passwd 并在终端中显示输 出 3 设计一个程序 要求复制进程 子进程显示自己的进程号 PID 后暂停一段时间 父 进程等待子进程正常结束 打印显示等待的进程号 PID 和等待的进程退出状态 4 设计一个程序 要求创建一个管道 复制进程 父进程往管道中写入字符串 子进 程从管道中读取并输出字符串 1 3 题目设计意义 通过本课题的毕业设计 熟悉了关于 linux 下 C 语言的系统软件程序设计 可以比较 深入的了解和掌握基本 gcc vim 等编程软件的使用和对 makefile 文件的使用 掌握进程间的通信方式 进程控制 文件操作的方式 本报告就系统的开发过程做了详细的介绍 并对系统的原理 总体设计等方面做了深 入细致的讨论 二 二 正文 课程设计的主要内容 正文 课程设计的主要内容 包括实验与观测方法和结果 仪器设备 计算方法 编包括实验与观测方法和结果 仪器设备 计算方法 编 程原理 数据处理 设计说明与依据 加工整理和图表 形成的论点和导出的结论等 程原理 数据处理 设计说明与依据 加工整理和图表 形成的论点和导出的结论等 正文内容必须实事求是 客观真切 准确完备 合乎逻辑 层次分明 语言流畅 结正文内容必须实事求是 客观真切 准确完备 合乎逻辑 层次分明 语言流畅 结 构严谨 符合各学科 专业的有关要求 构严谨 符合各学科 专业的有关要求 任务一 十进制和二进制的转换 2 1 主要内容 2 1 1 本程序够分为两个模块 转换模块和数字输入模块 下面分别对这两个模块的算法做 一下介绍 1 转换模块 利用十进制转换二进制规则 也就是将输入的十进制数字除二取余 直到商为零为止 然后倒序输出余数 2 数字输入模块 利用 scanf 函数输入一个整数 然后传递给转换函数 以上为程序的模块说明 1 1 2 程序结构及主要过程 1 此成熟包含了循环结构 顺序结构等在 c 语言中的主要结构 其中穿插着函数调 用 数组等 linux c 语言的大部分知识 2 本程序结构和过程思路如下 由 main 函数接受一个十进制的整数 正整数 负 整数都可 再由转换函数进行转换和输出对应的二进制 1 1 3makefile 介绍 Makefile 文件介绍 Makefile 一个工程中的源文件不计数 其按类型 功能 模块分别放在若干个目录中 makefile 定义了一系列的规则来指定 哪些文件需要先编译 哪些文件需要后编译 哪些 文件需要重新编译 甚至于进行更复杂的功能操作 因为 makefile 就像一个 Shell 脚本 一样 其中也可以执行操作系统的命令 makefile 主要功能 3 Make 工具最主要也是最基本的功能就是通过 makefile 文件来描述源程序之间的相互 关系并自动维护编译工作 而 makefile 文件需要按照某种语法进行编写 文件中需要说 明如何编译各个源文件并连接生成可执行文件 并要求定义源文件之间的依赖关系 makefile 文件是许多编译器 包括 Windows NT 下的编译器 维护编译信息的常用方法 只是在集成开发环境中 用户通过友好的界面修改 makefile 文件而已 自动化编译 Makefile 带来的好处就是 自动化编译 一旦写好 只需要一个 make 命令 整 个工程完全自动编译 极大的提高了软件开发的效率 make 是一个命令工具 是一个解释 makefile 中指令的命令工具 一般来说 大多数的 IDE 都有这个命令 可见 makefile 都 成为了一种在工程方面的编译方法 2 1 4 makefile 规则 makefile 中的规则是这样的 TARGET DEPENDENCIES COMMAND 目标 TARGET 程序产生的文件 如可执行文件和目标文件 目标也可以是要执行的 动作 如 clean 依赖 DEPENDENCIES 是用来产生目标的输入文件 一个目标通常依赖于多个文件 命令 COMMAND 是 make 执行的动作 一个可以有多个命令 每个占一行 注意 每 个命令行的起始字符必须为 TAB 字符 有依赖关系规则中的命令通常在依赖文件变化时负责产生 target 文件 make 执行这 些命令更新或产生 target 规则可以没有依赖关系 如包含 target clean 的规则 规则解释如何和何时重做该规则中的文件 make 根据依赖关系执行产生或更新目标 规则也说明如何和何时执行动作 有的规则看起来很复杂 但都符合上述模式 makefile 中的规则描述如何生成特定的文件 即规则的目标 规则列出了目标的依 赖文件 指定生成或更新目标的命令 规则的次序是不重要的 除非是确定缺省目标 缺 省目标是第一个 makefile 中的第一个规则 如果第一个规则有多个目标 第一个目标是缺 省的 有两个例外 以 开头的目标不是缺省目标 模式规则对缺省目标没有影响 通 常我们所写的地一个规则是编译整个或 makefile 中指定的所有程序 2 1 5 Makefile 文件 main main o zhuanhuan o gcc o main main o zhuanhuan o main o main c gcc c main c zhuanhuan o zhuanhuan c gcc c zhuanhuan c echo echo this is a zhuanhuan clear rm main mian o zhuanhuan o 2 1 6 源程序 include int main 4 int i printf 清输入一个十进制数字 scanf d zhuanhuan i return 0 include int zhuanhuan int i int k l int a 30 for l 0 l0 int b 0 do k i 2 i i 2 a b k while i 0 for l b l 0 l printf d a l else int b 0 i i do k i 2 i i 2 a b k while i 0 a b 1 1 for l b 1 l 0 l printf d a l return 0 2 1 7 试验过程及结果 1 运行 make 5 2 输入十进制 6 2 1 8 结果分析 这是一个十进制转换二进制程序 能根据用户输入的十进制转换为对应的二进制数字 经过测试本程序能够实现以上功能 任务二 使用 read 函数读取系统文件 2 2 主要内容 2 2 1 本程序只有一个模块 下面分别对这个模块的算法做一下介绍 在 main 函数里面利用 read 函数读取系统文件 etc passwd 并在终端中显示输出 2 2 2 程序结构及主要过程 本程序共包含了顺序结构这种在 C 程序中的主要结构 指针 函数调用等知识 该程序覆盖了 linux c 语言所学的除结构体外的大部分知识 本程序结构和过程思路如下 在 main 函数里面利用 read 函数读取系统文件 etc passwd 并在终端中显示输出 2 2 3 程序源代码 include include include include include int main int fd size char buffer 80 fd open etc passwd O RDONLY size read fd buffer sizeof buffer close fd printf s buffer 6 return 0 2 2 4 运行结果 2 2 5 结果分析 这是一个利用 read 函数读取系统文件的程序 要求完成读取和显示 etc passwd 因为读取的是密码文件所以会出现加密乱码情况 经测试该程序基本实现了以上功能 且计算结果合理正确 满足实验要求 任务三 进程控制 2 3 1 主要内容 设计一个程序 要求复制进程 子进程显示自己的进程号 PID 后暂停一段时间 父进 程等待子进程正常结束 打印显示等待的进程号 PID 和等待的进程退出状态 2 3 2 程序结构及主要过程 1 本程序运用了顺序结构 选择结构等 c 语言主要结构 指针 函数调用等知识 该程序覆盖了 linux c 语言所学的除结构体外的大部分知识 2 本程序结构和过程思路如下 利用 fork 函数复制进程 再利用 getpid 函数获 取子进程的进程号 同时也利用了 wait 函数来等待进程 2 3 3 程序源码 include include include include int main pid t pid vpid int status i pid fork if pid 0 printf 子进程 pid d n getpid sleep 2 exit 3 else vpid wait i WEXITSTATUS status printf 父进程 pid d 退出状态 d n vpid i 7 2 3 4 试验过程及结果 abc localhost gcc 4 c abc localhost a out 子进程 pid 3047 父进程 vpid 3047 退出状态 3 abc localhost 2 3 5 结果分析 这是一个进程控制程序 要求完成复制进程 子进程显示自己的进程号 PID 后暂停一 段时间 父进程等待子进程正常结束 打印显示等待的进程号 PID 和等待的进程退出状态 经过测试 该程序基本实现了以上功能 且计算结果合理正确 满足实验要求 任务四 进程间通信 2 4 主要内容 2 4 1 程序要求 设计一个程序 要求创建一个管道 复制进程 父进程往管道中写入字符串 子进程从 管道中读取并输出字符串 4 4 2 程序结构及主要过程 1 本程序运用了顺序结构 选择结构等 c 语言主要结构 指针 函数调用等知识 该程序覆盖了 linux c 语言所学的除结构体外的大部分知识 2 本程序结构和过程思路如下 4 1 3 程序源码 include include include Int main void Int n fd 2 Pid t pid Char line 80 If pipe fd 0 Printf pepe error n Exit 1 Pid fork If pid0 Printf 子进程从管道读取 d 个字符 读取字符串是 s n n line 8 Close fd 0 Else Close fd 0 If write fd 1 hello 6 1 Printf 父进程向管道写入 hello n Close fd 1 Waitpid pid NULL 0 exit 0 2 4 4 运行结果 abc localhost gcc 4 c abc localhost a out 父进程向管道写入 hello 子进程从管道读取 6 个字符 读取字符串是 hello abc localhost 2 4 5 结果分析 这是一个进程控制程序 要求创建一个管道 复制进程 父进程往管道中写入字符串 子进程从管道中读取并输出字符串 经过测试 该程序基本实现了以上功能 且计算结果 合理正确 满足实验要求 三 三 结论 结论 应当准确 完整 明确精练 也可以在结论或讨论中提出建议 设想 尚待解应当准确 完整 明确精练 也可以在结论或讨论中提出建议 设想 尚待解 决问题等 决问题等 3 1 设计过程中的感受与体会 为了增强我们的 C 程序的实际操作与设计能力我编写了这个答题系统 下面就来谈下我 在这次程序设计过程中的感受与体会 从程序的整体构思到程序的算法设计及程序的编写 再到最后程序的调试 我经历了重重困难和考验 但是我并没有放弃 我运用本学期所学 到的知识和课外的一些知识 从想到查再到问 最后完成了该系统 在设计过程中 我不 仅仅是完成了若干个系统 更重要的是我在这次设计中巩固了 linux c 所学到的知识 锻 炼了自己的实践能力 另外在这次设计的过程中 我懂得了在设计遇到困难的时候怎样去 解决这个困难 从书上网上查阅资料 向比我们知识丰富的人虚心请教 这是我们解决问题 的主要方法 这样也同时扩宽了我们的知识面 打破了课堂的局限 在以后的人生道路中 我们也应该保持住这种精神 只要这样我们相信今后我们的人生道路会像这次程序设计一 样取得成功 以上就是我在这次程序设计过程中的感受与体会 3 2 遇到的问题与解决方法 在设计本系统的过程中 并不是一帆风顺的 设计与调试期

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论