系统软件程序设计报告(linux下C语言程序课程设计报告).doc
《系统软件程序设计报告(linux下C语言程序课程设计报告).doc》由会员分享,可在线阅读,更多相关《系统软件程序设计报告(linux下C语言程序课程设计报告).doc(15页珍藏版)》请在三一办公上搜索。
1、一、 引言(简要说明设计题目的目的、意义、内容、主要任务等)1.1设计目的本次系统软件课程设计的主要目的有两个:一方面是分析设计linux源代码,另一方面是进行系统级的程序设计。1.2 题目与要求我计划编写的题目是:小学算术运算测试程序。制作一个可供小学数学运算的程序:10以内加减法,能根据输入题数出题,判断题是否正确,最后计算分数。并用make工程管理器编译,编写makefile文件。简单聊天程序。在linux下用C语言编写一个简单的网络聊天程序。实现网络传输功能。1.3内容及主要任务小学算术运算测试程序:要求完成 10 以内的加减运算。 能根据用户 输入的想要练习的题目数自行出题。用户输入
2、答案后可以判断正误,并能给出算对及算错的题目数,最后计算出分数。同时,对于用户算错的题目会发出报警声,提示用户注意,同时给出正确结果。做完一次测试后用户可决定是否继续进行下一次测试。简单聊天程序:本课题是建立聊天通信模型,设计一个聊天室软件, 包括服务器端和客户端, 主要功能为:、 服务器端功能:初始化 socket创建服务器端。维护一个链表,保存所有用户的 IP 地址、端口信息。接受用户传送来的聊天信息,然后向链表中的所用用户转发。接受用户传送来的连接判断命令,并向用户发出响应命令。、 客户端功能: 客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。当按下
3、“发送”按钮时将信息发送给服务器。1.4题目设计意义通过本课题的毕业设计,熟悉了关于linux下C语言的系统软件程序设计,可以比较深入的了解和掌握 WINSOCK 控件基本属性、方法和事件,理解 网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天通信程序的设计方法。 并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。随着计算机网络技术的快速发展,人们的交流方式越来越多,传统的通信方式在速度和可靠性方面已经很难满足人们的需要,即时通信系统已成为人们的新宠。同时,即时通信系统对现代企业也有着重大意义,它为诸企业开拓了网络应用的新领域。自从它诞生以来
4、,以实时交互、资费低廉等优点,受到广大个人用户的喜爱,已经成为网络生活中不可或缺的一部分。本着学以致用的原则,本人开发了这套多点聊天系统,以满足网络用户的通讯需求。该系统具有操作简单、界面友好、功能专一等特点。本报告就系统的开发过程做了详细的介绍,并对系统的原理、总体设计等方面做了深入细致的讨论。二、 正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。)任务一:小学数学运算程序2.1.1
5、主要内容 本程序共分为五个模块:出题模块、答题模块、检查计分模块、评分模块和评价模块;下面分别对这五个模块的算法做一下介绍。出题模块:一个答题系统自然而然首先就是要有题目且能够根据条件出题;在本模块中,首先设了一个含有15个指针的指针数组,指针数组里的每个指针都指向了相应题号的选择题,这样就实现了对题目的储存;然后用 scanf 函数来实现从键盘上输入题号,用 if 语句控制输题的范围;题号不在 1-15 的范围内就提示选题出错;在输入题号的过程中输入相同题号是在所难免的;但 是在答题系统中输入相同题号显然没有意义,所以另外设了一个静态一维数组来储存已输过的题号;且数组的第一个元素初始化为 0
6、,然后每输入一个题号就赋给这个数组,同时用 for 语句来使当前的题号一一与储存在一维数组中已输过的题号进行比较,如题号有相同,就提示重答,重答的功能是通过对出题模块函数的递归调用来实现的,如题号没有相同,就通过输入的题号借助指针数组里的指针找到与题号对应的选择题,用 puts 函数来实现对选择题的输出;最后用 return 语句将其他模块返回来每道题的小分数返回到主函数中(在主函 数中调用出题模块函数)。答题模块:出完题后自然是从键盘上输入答案了,在本模块中,提示输入答案后,用 scanf 函数来实现使从键盘上输入的一个答案选项(A、B、C、D) 赋给一个用来记录答案的字符变量;用 retu
7、rn 语句将这个变量返回到出题模块中。检查计分模块:输入答案选项后,就要判断答案的正确性和计分了,在本模块中,要设一个字符数组来储存每道题的正确答案;用 if 语句来控制在答题模块中输入的答案是否为 A、B、C、D 中的某一个;若不是,就提示选的答案不在答案范围内,若是,根据在出题模块中输的题号使在答题模块中输入的答案选项与储存正确答案数组中的相应答案选项相比较,若相同,就提示答案正确,与此同时用变量记录下这道题所得的小分,否则,就提示答案错误并给出当前题目的正确答案,不计分;用 return 语句将得分返回到出题系统中(在出题 模块函数中调用检查计分模块函数)。评分模块:做完题后,就要根据做
8、题的对错个数来评分;在本模块中,首先就要提示题目全做完,用switch语句根据总小分来选择性地选出11个不同的分数中的一个分数,并且打印出该分数 (在主函数中调用评分模块函数) 。评价模块:最后一步就是要根据不同的总得分段来给出不同的评语,在本模块中用 if 语句根据不同的总分数段来打印出不同的评语(在主函数中调 用评价模块函数) 。主函数将这五个模块直接地或间接地联系在一起,使它们构成本程序,现在就来介绍主函数的算法。主函数对出题模块函数、评价模块函数进行了调用;首先提示开始答题,为了要答 10 次题,就要设一个 for 语句来控制对出题模块函数调用的次数,即需要答一定次数的题,与此同时用一
9、个变量来累加由出题模块函数返回来每道题的小分数;接下来分别对评分模块函数和评价模块函数进行调用。以上就是对本程序算法的介绍。2.1.2 程序结构及主要过程本程序共包含了顺序结构、选择结构、循环结构三种在 C 程序中的主要结构,其中穿插了数组(一维数组、字符数组)、指针 (指针数组)、函数调用(递归调用)等知识,该程序覆盖了本学期所学的除结构体外的大部分知识。本程序结构和过程思路如下:为了要答题,首先要有题目,设一个指针数组来实现;把相应的题目调出,应用指针的功能实现;调出题目后,就要给用户答题了,用一个输入函数实现;再经过系统的判断,用一个字符数组储存正确答案结合判断语句实现;最后累加计分,用
10、循环结构实现。总之,该程序的总体结构和过程很好的体现了现在所提倡的对一个程序结构模块化的思想。2.1.3 程序模块功能说明 本程序一共有五个模块,它们分别是:出题模块(question_out(),答题 模块(answer(),检查计分模块(check(),评分模块(count(),评价模块 (assessment(),现在就来分别介绍这五个模块的功能。出题模块(question_out():这一模块主要负责对题目的储存和调出这两个功能。答题模块(answer():这一模块主要负责将用户端的答案通过键盘输入到系统。检查计分模块(check():这一模块主要负责检查判断用户所提供的答案是否正确并
11、根据它来记录每题所的总分。评分模块(count():这一模块主要负责统计总得分并打印。评价模块(assessment() :这一模块主要负责根据给出的总得分打印相应的评语。总之这五个模块都有着各自的功能且互相联系,五者在程序中缺一不可。2.1.4 makefile介绍Makefile文件介绍Makefile一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefi
12、le主要功能Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器-包括 Windows NT 下的编译器-维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。自动化编译Makefile带来的好处就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个
13、解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C+的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。2.1.5 makefile规则makefile中的规则是这样的:TARGET : DEPENDENCIES COMMAND目标(TARGET)程序产生的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean”。依赖(DEPENDENCIES)是用来产生目标的输入文件,一个目标通常依赖于多个文件。命令(COMMAND)是make执行的动作,一个可以有多个命令
14、,每个占一行。注意:每个命令行的起始字符必须为TAB字符!有依赖关系规则中的命令通常在依赖文件变化时负责产生target文件,make执行这些命令更新或产生target。规则可以没有依赖关系,如包含target “clean”的规则。规则解释如何和何时重做该规则中的文件,make根据依赖关系执行产生或更新目标;规则也说明如何和何时执行动作。有的规则看起来很复杂,但都符合上述模式。makefile中的规则描述如何生成特定的文件,即规则的目标。规则列出了目标的依赖文件,指定生成或更新目标的命令。规则的次序是不重要的,除非是确定缺省目标:缺省目标是第一个makefile中的第一个规则;如果第一个规则
15、有多个目标,第一个目标是缺省的。有两个例外:以.开头的目标不是缺省目标;模式规则对缺省目标没有影响。通常我们所写的地一个规则是编译整个或makefile中指定的所有程序。2.1.6 Makefile文件 main:main.o input.o chuti.ogcc main.o input.o chuti.o -o mainmain.o:main.c myhead.hgcc -c main.cinput.o:main.cgcc -c input.cchuti.o:main.cgcc -c chuti.c2.1.7 源程序#include #include void function( )int
16、 index,itest_total,N=200;int iflag,num1,num2,itotal,iarrsum200,iarranswer200,iarrop4;itotal=0;printf(请输入题数:n);scanf(%d,&itest_total);for(index=0;indexitest_total;index+)iflag=rand()%4+1;switch(iflag)case 1:num1=rand()%10;num2=rand()%10;iarrsumindex=num1+num2;printf(%d+%d=n,num1,num2);break;case 2:nu
17、m1=rand()%10;num2=rand()%10;iarrsumindex=num1-num2;printf(%d-%d=n,num1,num2);break;case 3:num1=rand()%10;num2=rand()%10;iarrsumindex=num1*num2;printf(%d*%d=n,num1,num2);break;case 4:num1=rand()%10;num2=rand()%10;iarrsumindex=num1/num2;printf(%d/%d=n,num1,num2);break;default:break;printf(依次输入每题的答案:n)
18、;for(index=0;indexitest_total;index+)scanf(%d,&iarranswerindex);getchar();if(iarranswerindex=iarrsumindex)itotal+;printf(正确率:%f%n,100.0*(itotal*1.0)/itest_total);int main()char flag; /开始有一轮测试,以后根据用户的输入开始新一轮测试或结束测试; dofunction();printf(请输入Y表示开始新一轮测试,其他字母表示结束测试:n);scanf(%c,&flag);while(flag!= Y); retu
19、rn 0; 2.1.8 试验过程及结果输入题数5得到计算式输入每题答案运行结果输入y重新开始,输入其他字母结束。2.1.6结果分析这是一个小学数学运算测试程序,要求完成 10 以内的加减运算。 能根据用户 输入的想要练习的题目数自行出题。用户输入答案后可以判断正误,并能给出算对及算错的题目数,最后计算出分数。同时,对于用户算错的题目会发出报警声,提示用户注意,同时给出正确结果。做完一次测试后用户可决定是否继续进行下一次 测试。该程序基本实现了以上功能,且计算结果合理正确,满足实验要求。任务二:linux下C语言设计简单聊天程序2.2.1实验题目熟悉linux操作系统下最简单实用的通信程序soc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统软件 程序设计 报告 linux 语言 程序 课程设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2385464.html