《课程设计报告(系统软件实践).doc》由会员分享,可在线阅读,更多相关《课程设计报告(系统软件实践).doc(11页珍藏版)》请在金锄头文库上搜索。
1、北京化工大学北方学院课程设计报告课程名称 系统软件实践 设计题目 Linux C 程序设计 专业、班级 软件工程1004 学 号 100220126 姓 名 祝 杰 指导教师 马睿老师 设计时间 2013年10月8日-2013年10月27日 2013年 10月 27 日 一、 引言(简要说明设计题目的目的、意义、内容、主要任务等)1、 目的 (1)巩固和复习C语言的基础知识,进一步加深对C语言的理解和掌握; (2)熟悉Linux的基本操作,并能够在Linux环境下编写C语言程序; (3)掌握书写程序设计说明文档的能力; (4)将理论知识和实际操作结合,锻炼动手能力,提高编程能力; (5)培养在
2、项目开发项目中独立完成任务的能力,提高自己的程思想。2、意义 (1)掌握程序设计的一般方法,树立正确的设计思想,培养分析和解决问题的能力; (2)学会了从实际出发,选择合理的算法,培养了程序设计能力; (4)以实践巩固书面知识,更深刻地理解C的运用,并能学以致用; (3)学会运用查阅有关技术资料的能力。3、 内容程序一: 输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息。并用make工 程管理器编译。(注意分割文件,可参考第一题的提示。)编写makefile文件。程序二: 设计一个C程序,完成文件的复制工作。要求通过使用read函数和write函数复制 “/etc/passwd”
3、文件到“test”文件中,文件名当程序运行时从键盘键入。程序三: 设计一个程序,要求用户进程复制出一个子进程,父进程向子进程发出信号,子进 程收到此信号,结束子进程。4、 主要任务(1)分析题目的要求;(2)总结各个程序所涉及的相关知识点;(3)掌握涉及的各种算法;(4)画出部分模块的流程图;(5)程序代码的涉及与实现。二、 正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。)程序一:
4、1、程序介绍:输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息。 并用make工程管理器编译。(注意分割文件,可参考第一题的提示。)编写makefile 文件。 2、功能模块图CALCULATE取得运算符优先级 无效值与有效值回归主函数确定运算顺序赋值符号,运行基本运算主函数运行输出函数值 3、函数功能main()函数:这是主函数,完成最后的运行。Add()函数:求和函数,返回两数之和。Sub()函数:求差函数,返回两数之差。Mul()函数:求积函数,返回两数之积。Dev()函数:求商函数,返回两数之商。Show()函数:显示运行的结果。 4、主要源程序 #include com
5、mon.h int get24(int a, int b, int *temp) int i,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);
6、break;case 1:*temp = sub(*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(
7、a,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程序,完成文件的复制工作。要求通过使用read函数和wr
8、ite函数复 制“/etc/passwd”文件到“test”文件中,文件名当程序运行时从键盘键入。2、 功能模块图 开 始 创建test文件夹打开passwd文件复制文件到test 结 束 3、函数功能main()函数:定义字符数组ch,buf,定义整型变量fd,fd1,len。open()函数:打开文件以及创建文件。read()函数:读取数据到管道中。write()函数:将管道的数据写入到fd1.close()函数:关闭文件及进程。 4、主要源程序 #include #include #include #include int main(void) char ch128; char buf3
9、2; int fd, 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); return 0; 5、运行结果程序三: 1、程序说明设计一个程序,要求用户进程复制出一个子进程,
10、父进程向子进程发出信号,子进 程收到此信号,结束子进程。 2、功能模块图 开始调用fork函数复制进程 打印输出通过result的值判断返回情况调用kill函数,发送SIGKILL杀死子进程While(0)While(1)调用raise函数,发送SIGSTOP结束子进程 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 (result=0) raise(SIGSTOP); exit(0); else printf(子进程的进程号(PID)是: %dn,result); if(waitpid(result,NULL,WNOHANG)=0) if(ret=kill