1、课程设计报告系统软件实践 2北京化工大学北方学院课程设计报告课程名称 系统软件实践 设计题目 Linux C 程序设计 专业、班级 软件工程1004 学 号 100220126 姓 名 祝 杰 指导教师 马睿老师 设计时间 2013年10月8日-2013年10月27日 2013年 10月 27 日 一、 引言(简要说明设计题目的目的、意义、内容、主要任务等)1、目的 (1)巩固和复习C语言的基础知识,进一步加深对C语言的理解和掌握; (2)熟悉Linux的基本操作,并能够在Linux环境下编写C语言程序; (3)掌握书写程序设计说明文档的能力; (4)将理论知识和实际操作结合,锻炼动手能力,提
2、高编程能力; (5)培养在项目开发项目中独立完成任务的能力,提高自己的程思想。2、意义 (1)掌握程序设计的一般方法,树立正确的设计思想,培养分析和解决问题的能力; (2)学会了从实际出发,选择合理的算法,培养了程序设计能力; (4)以实践巩固书面知识,更深刻地理解C的运用,并能学以致用; (3)学会运用查阅有关技术资料的能力。3、内容程序一: 输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息。并用make工 程管理器编译。(注意分割文件,可参考第一题的提示。)编写makefile文件。程序二: 设计一个C程序,完成文件的复制工作。要求通过使用read函数和write函数复制 “
3、/etc/passwd”文件到“test”文件中,文件名当程序运行时从键盘键入。程序三: 设计一个程序,要求用户进程复制出一个子进程,父进程向子进程发出信号,子进 程收到此信号,结束子进程。4、主要任务(1)分析题目的要求;(2)总结各个程序所涉及的相关知识点;(3)掌握涉及的各种算法;(4)画出部分模块的流程图;(5)程序代码的涉及与实现。二、 正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的
4、有关要求。)程序一: 1、程序介绍:输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息。 并用make工程管理器编译。(注意分割文件,可参考第一题的提示。)编写makefile 文件。 2、功能模块图 3、函数功能main()函数:这是主函数,完成最后的运行。Add()函数:求和函数,返回两数之和。Sub()函数:求差函数,返回两数之差。Mul()函数:求积函数,返回两数之积。Dev()函数:求商函数,返回两数之商。Show()函数:显示运行的结果。 4、主要源程序 #include common.h int get24(int a, int b, int *temp) int i
5、,j,k; for (i = 0; i 4; i += 1) for (j = 0; j 4; j += 1) for (k = 0; k 4; k += 1) switch(i) case 0: *temp = add(a0,a1); break; case 1: *temp = sub(a0,a1); break; case 2: *temp = mul(a0,a1); break; case 3: *temp = dev(a0,a1); break; switch(j) case 0: *temp = add(*temp,a2); break; case 1: *temp = sub(*
6、temp,a2); break; case 2: *temp = mul(*temp,a2); break; case 3: *temp = dev(*temp,a2); break; switch(k) case 0: *temp = add(*temp,a3); if (*temp=24) b0 = i; b1 = j; b2 = k; *temp=24; show(a,b,*temp);return 0; break; case 1: *temp = sub(*temp,a3); if (*temp=24) b0 = i; b1 = j; b2 = k; *temp=24; show(a
7、,b,*temp);return 0; break; case 2: *temp = mul(*temp,a3); if (*temp=24) b0 = i; b1 = j; b2 = k; *temp=24; show(a,b,*temp);return 0; break; case 3: *temp = dev(*temp,a3); if (*temp=24) b0 = i; b1 = j; b2 = k; *temp=24; show(a,b,*temp);return 0; break; printf(凑数失败!n); 5、运行结果程序二: 1、程序说明 设计一个C程序,完成文件的复制
8、工作。要求通过使用read函数和write函数复 制“/etc/passwd”文件到“test”文件中,文件名当程序运行时从键盘键入。2、功能模块图 3、函数功能main()函数:定义字符数组ch,buf,定义整型变量fd,fd1,len。open()函数:打开文件以及创建文件。read()函数:读取数据到管道中。write()函数:将管道的数据写入到fd1.close()函数:关闭文件及进程。 4、主要源程序 #include #include #include #include int main(void) char ch128; char buf32; int fd, fd1, len
9、= 128; printf(请输入文件名:); scanf(%s, ch); sprintf(buf, ./test/%s, ch); fd=open(/etc/passwd, O_RDONLY); fd1=open(buf, O_WRONLY | O_CREAT, 0777); while (len = read(fd, ch, 128) printf(%s,ch); write(fd1, ch, len); close(fd); close(fd1); return 0; 5、运行结果程序三: 1、程序说明设计一个程序,要求用户进程复制出一个子进程,父进程向子进程发出信号,子进 程收到此信
10、号,结束子进程。 2、功能模块图 3、函数功能 main()函数:定义整型变量ret. fork()函数:复制进程,返回值存在变量result中。 raise()函数:发送SIGSTOP使子进程暂停。 kill()函数:发送SIGKILL杀死子进程。 4、主要源程序 #include #include #include #include #include #include int main () pid_t result; int ret; result=fork(); int newret; if(result0) perror(创建子进程失败); exit(1); else if (res
11、ult=0) raise(SIGSTOP); exit(0); else printf(子进程的进程号(PID)是: %dn,result); if(waitpid(result,NULL,WNOHANG)=0) if(ret=kill(result,SIGILL)=0) printf(用kill函数返回值是:%d,发出的SIGKILL信号结束的进程 进程号:%dn,ret,result); elseperror(kill函数结束子进程失败); 5、运行结果三、 结论(应当准确、完整、明确精练;也可以在结论或讨论中提出建议、设想、尚待解决问题等。)为了争强我们的C程序的实际操作与设计能力我编写
12、了这个课程设计,从程序的暂停构思到程序的算法设计及程序的编写再到最后的调试,我绞尽脑汁。虽然有遇到很多困难,但是我都克服了,我运用学习到的LINUX知识攻克了所有难关。经过这次的锻炼,我学习到了比书本上的知识更重要的知识,那就是实践。在实践中不畏惧艰辛,勇往直前,同过上网查资料以及相关文献的查阅,向牛逼人士虚心请教,这样才能攻无不克,战无不胜!通过这次的课程设计,拓宽了我们的知识面,打破了课堂以及书本的局限,在一会工作的道路上也要保持这种积极向上的心态,只要坚持不懈地努力下去,人生道路上的任何艰难险阻都可以不足为惧。在互帮互助的过程中,我们交流着自己的思想,体会到了团队精神的主要性。在今后的工
13、作生涯中,更是生活在一个团体里,如果没有团队精神,工作将是乏味的,效率自然也是很差的。这次的锻炼为今后的毕业设计做了个完美的铺垫,让我熟悉了如何去完成一个项目。激发了我自学的能力,在设计时遇到的许多问题都通过自学的方式轻松解决,这不仅帮助我完成了一项作业,更是激励了我的自信心,让我更有把握,更有信心,更有兴趣继续学下去。虽然IT的道路并不是那么丰富多彩,但只要有兴趣的话,工作再苦再累也是值得的。在最后,我希望自己可以把专业知识把握得更透彻,勤加练习。在21世纪这个信息时代,我们就是时代的先驱,我们要比别人走得更艰难也更遥远。路漫漫其修远兮,吾将上下而求索;天降大任于斯人也,必将苦其心志,劳其筋骨,饿其体肤。做好吃亏的准备,迎接最美好的明天。我会继续我们的兴趣编写程序的,相信在越来越多的尝试之后,自己会不断进步和提高。4、 参考文献1 邱世华.Linux操作系统之奥秘.北京:电子工业出版社,20082 李洋,汪虎松.RedHatLinux9系统与网络管理教程.北京:电子工业出版社,20063 骆耀祖,刘远东,骆珍仪.Linux网络服务器管理教程.北京:电子工业出版社,20074 柳青.Linux应用教程.北京:清华大学出版社,20085 李成大.操作系统Linux篇.北京:人民邮电出版社,2005五、 指导教师评语 签名: 年 月 日课程设计成绩(五级分制)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1