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