网络编程课程设计题目(网络编程技术课后题)

http://www.itjxue.com  2023-02-26 13:08  来源:未知  点击次数: 

你好,请问网络编程聊天室程序运行后出错,服务器端显示 accept:invalid argument.这个问题你解决了吗?

这样的写法有点问题:1)服务器端既然采用了异步方式Accept,就没有必要再启线程2)估计allDone是一个ManualResetEvent。用ManualResetEvent的目的什么呢?服务器端采用异步Accept的代码其实很简单,也不需要ManualResetEvent同步 public class AppTCPServer { public AppTCPServer(string localIP, int port) { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); EndPoint localEP = new IPEndPoint(IPAddress.Parse(localIP), port); socket.Bind(localEP); socket.Listen(100); socket.BeginAccept(AcceptAsync, socket); } private void AcceptAsync(IAsyncResult ar) { Socket socket = ar.AsyncState as Socket; try { Socket client = socket.EndAccept(ar); Console.WriteLine("客户端连接成功!客户端:{0}", client.RemoteEndPoint.ToString()); if (OnConnected != null) { OnConnected(this, new ClientConnectedEventArgs(client)); } } catch (Exception e) { Console.WriteLine("AcceptAsync发生异常,异常信息:\n{0}", e.Message); } finally { //继续异步Accept socket.BeginAccept(AcceptAsync, socket); } } //客户端连接后的事件 OnConnect public event EventHandler OnConnected; } /// /// 事件参数:接收客户端连接后的事件参数 /// public class ClientConnectedEventArgs : EventArgs { public ClientConnectedEventArgs(Socket clientSocket) { ClientSocket = clientSocket; } public Socket ClientSocket { get; private set; } } class Program { static void Main(string[] args) { AppTCPServer server = new AppTCPServer("127.0.0.01", 8000); server.OnConnected += server_OnConnected; Console.WriteLine("按任意键结束程序……"); Console.ReadKey(); } static void server_OnConnected(object sender, ClientConnectedEventArgs e) { Socket client = e.ClientSocket; string hello = "Hello from AppTCPServer"; client.Send(Encoding.Default.GetBytes(hello)); } } 客户端测试程序 class Program { static void Main(string[] args) { //模拟100个客户连接服务器 for (int i = 0; i 100; i++) { Socket socket = ConnectToServer("127.0.0.1", 8000); byte[] buffer = new byte[1024]; int bytesRecevied = socket.Receive(buffer, buffer.Length, SocketFlags.None); byte[] messageBytes = new byte[bytesRecevied]; Array.Copy(buffer, messageBytes, bytesRecevied); Console.WriteLine(Encoding.Default.GetString(messageBytes)); socket.Disconnect(false); socket.Close(); } Console.ReadKey(); static Socket ConnectToServer(string serverIP, int serverPort) { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); EndPoint localEP = new IPEndPoint(IPAddress.Any, 0); socket.Bind(localEP); socket.Connect(new IPEndPoint(IPAddress.Parse(serverIP), serverPort)); return socket; } }

网络工程学哪些课程?

1、公共基础课程: 主要包括《高等数学》、《大学物理》、《英语》、《体育》、《政治理论》、《计算机文化基础》、《C语言》 等课程。

2、专业基础课程: 线性代数、概率论、电路分析基础、电子电路基础、数字电路基础、电子线路CAD 、电子技术实验、电子技术课题设计、离散数学、汇编语言程序设计、计算机组成原理与系统结构、单片机原理、接口技术、操作系统原理、数据结构、面向对象程序设计、计算机网络、现代通信技术、数据库系统原理、计算机图形学、编译原理、科技英语等。

3、专业课程: 网络设备、综合布线技术、网络的组建与设计、计算机安全技术等课程 。

4、专业限选课: lotus、Java程序设计、网页制作技术、VB程序设计等课程。

5、实践类课程: 重点应包括每年的一次的教学实践和最后的毕业设计。

三、修业年限及授予学位

1、修业年限: 四年制本科、三年全日制大专

2、授予学位: 工学学士、大学专科

招生对象:初中以上文化程度者,有志于从事计算机硬件维护、网络工程等相关工作;希望拥有高薪和令人敬慕的稳定的职业的一切毕业生或社会各界人士。

培养目标:掌握常用操作系统的使用、网络设备的配置,深入了解网络的安全问题,具有综合性的网络管理能力。可以胜任中小企业的网络管理工作,并具备发展成为网络工程设计专家的能力。

计算机网络技术,需要学会哪些技术?

计算机网络技术专业教学计划

培养目标

本专业培养能从事计算机网络系统的工程技术应用型人才.学生能系统掌握数据通信与计算机网络技术所必需的基本知识,掌握计算机网络应用和管理的基本技能.学生具有规划,设计和应用计算机网络系统的能力;能自主组建企事业网络系统,具有局域网,Intranet网络的规划设计,管理维护及组网的实现能力,网络应用编程能力,多媒体电子商务应用处理能力;能进行网络化管理信息系统的设计与开发.

人才培养规格要求和知识,能力,素质结构

知识要求

熟悉计算机硬件与软件的相关知识,特别对计算机网络有比较深刻的了解.熟练掌握计算机网络实用技术的高级应用型人才.能将计算机网络应用到实际工作中去.能进行全方位的网站设计开发和进行电子商务活动.掌握本方向所必需的数据通信和计算机网络,组网和网络管理,网络操作系统,Internet和Intranet应用以及网络应用等程序设计语言;能独立开发动态网站,具有一定的网络安全知识.

能力素质

能进行计算机操作维护,网络技术,网页设计,网站维护,网络程序设计,网络工程等工作,能够进行计算机局域网的设计,安装,调试;计算机网络通信产品的系统集成;广域网的管理,维护;网络管理信息系统的设计,开发及应用,网站设计与开发等.可在软件园,光通信园,高新技术园区,各大电脑公司,网络公司,网站,高新技术企业,公司,企事业单位和信息部门中从事网络管理,网站维护,网页设计与创意和电子商务等工作.能从事计算机网络通信软硬件产品的销售,技术支持及售后服务等岗位,有着非常广阔的就业前景.

职业资格证书

江苏省计算机维修(中级)技能证书

江苏省网页设计(中级)技能证书

英语应用能力考试证书或CET-4等级证书

4.素质和能力结构

主要课程简介

(一)按岗位职业能力构建的课程链路图

(二)主要课程内容简介

(1)课程编号:05133

(2)课程名称:计算机组成原理及汇编

(3)课程性质:职业技术课, 64 学时,4学分

(4)先修课程:计算机应用基础

(5)课程内容:计算机系统概述,计算机中数 据的表示,运算方法和运算器,指令系统,控制器,存贮器组织,输入输出系统;汇编语 言 ,汇编语言基本程序设计,程序设计举例(输入输出程序设计,中断程序设计,系统调 用及 程序设计).

(1)课程编号:05131

(2)课程名称:数据库原理与Access应用

(3)课程性质:职业基础课 54学时,3.5学分

(4)先修课程:无

(5)课程内容:数据库系统的概念,组成和主要功能,数据库保护和数据模型,关系 模 型和各种关系运算,利用SQL进行数据库的定义,查询,更新,插入和删除数据,关系规 范 化和函数依赖,第一,二,三范式和BCNF范式,数据库的概念结构设计,逻辑结构设计和物理结构设计,数据库的建立,显示,修改,查询,统计,复制,索引,排序, 更新, 关联等,数据库应用程序设计和用户界面设计.

(1)课程编号:05065

(2)课程名称:操作系统应用

(3)课程性质:职业基础课54学时,3.5学分

(4)先修课程:计算机基础

(5)课程内容: 操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口.学生通过本课程的学习,理解操作系统的基本概念 和主要功能,掌握常用操作系统的使用和一般管理方法,从而为今后的学习和工作打下基础.

(1)课程编号:05114

(2)课程名称:计算机网络安全

(3)课程性质:专业选修课 48学时,3学分

(4)先修课程:组成原理,操作系统,数据结构

(5)课程内容:从安全模型,安全服务,安全分析,安全技术以及安全策略入手,全面介绍保障网络环境安全的各要素.通过对加密和认证,虚拟专用网的技术,防火墙,入侵检测,防病毒等安全方面的技术的介绍,使学员掌握各种安全漏洞,不同类型的黑客活动,黑客的攻击范围和防止与控制黑客侵入的方法,熟悉加密和身份验证方法及过程,防火墙的体系结构和与Internet服务的结合,安全审核的不同阶段,审计及日志分析的方法和基于主机及网络的入侵检测的方法及软件的使用,保护网络系统免于受到攻击,提高安全性能的机制,构建计算机网络及信息安全的安全策略,掌握建立有效的安全机制.

(1)课程编号:05124

(2)课程名称:Visual Basic程序设计

(3)课程性质:职业基础课 64 学时,4学分

(4)先修课程:计算机基础

(5)课程内容: 通过本课程的学习,使学生熟悉VB这一集应用程序开发,设计,编辑,编译和调试为一体 的集成化开发环境,掌握VB的基本语言和语法,培养学生使用VB进行程序设计的技能.

(1)课程编号:05113

(2)课程名称:网络操作系统

(3)课程性质:专业选修课 48学时,3学分

(4)先修课程:操作系统,计算机网络

(5)课程内容: 本课程是计算机应用专业计算机网络方向的一门必修课.主要内容包括:网络操作系统 概论(网络操作系统概念,功能描述),网络操作系统比较(UNIX,Windows 2000 Server和Netware 网络操作系统性能价格比较),网络操作系统的发展预测,UNIX操作系统及使用,Windows 2000 Server操作系统及使用,Netware网络操作及使用.

(1)课程编号:05111

(2)课程名称:计算机专业英语

(3)课程性质:专业选修课 36学时,2学分

(4)先修课程:组成原理,数据结构,操作系统,计算机网络

(5)课程内容:本课程涉及到与计算机技术相关的许多方面的英语术语与词汇.比如对电子邮件,电子商务,网络技术,计算机模拟,通信卫星,虚拟现实,人工智能,光纤通信,视像会议,数据库,软件工具等均从专业角度作了简明扼要的介绍.在《大学英语》基础上,通过本课程的学习,使学生熟悉了解计算机专业英语的语言特点,扩展学生的专业知识面,使学生掌握一定数量的计算机专业英语术语与词汇,提高阅读能力和速度,从而达到借助有关工具书,能够比较顺畅地阅读本专业英语文献资料及浏览网上资源的目的.

(1)课程编号:05117

(2)课程名称:JAVA程序设计

(3)课程性质:专业选修课 54 学时,3.5学分

(4)先修课程:网页制作

(5)课程内容:Java语言的语法;面向对象的JAVA语言;JAVA的布局设计;JAVA接口,异常处理;JAVA的输入与输出;JAVA小程序;多媒体程序设计技术;多线程程序设计;JAVA网络编程;Java与HTML,数据库的接口等.使用学生全面了解JAVA语言的功能,掌握JAVA语言和程序设计技术,并能独立开发网络应用软件.

(1)课程编号:05109

(2)课程名称:网络数据库(二)

(3)课程性质:职业技术课 60 学时,4学分

(4)先修课程:数据库原理,计算机网络,网络操作系统

(5)课程内容: 本课程从数据库系统理论与具体的实践紧密结合入手,系统介绍了数据库基础理论,事务处理,数据库安全等方面的知识,并通过对SQL Server 2000系统管理,结构化查询语言SQL,数据库管理系统SQL SERVER的详细介绍.使学生熟练掌握数据库的开发,SQL语句的使用,SQL server2000系统管理技能.

(1)课程编号:05118

(2)课程名称:高级网络程序设计

(3)课程性质:专业选修课 54学时,3.5学分

(4)先修课程:网络数据库

(5)课程内容: 本课程强调理论与实例结合,以实际案例的应用与实施为切入点,详细介绍了网络设计的基本概念和应用,依次讲解分析实际需求,满足功能需求,网络的设计方法,分类原则和实现原理.并通过介绍典型网络案例的项目实施过程,使学员掌握网络设计的基本概念,主要内容和设计过程,各种网络的设计原理和方法,需求分析,概要设计,详细设计,加深理解项目实现的重要性和实施方法.

主要实践教学与技能训练要求

计算机组装与维护

VB课程设计

计算机网络集成技术

网络数据库程序设计

局域络技术与组网工程

网页设计与网站建设

毕业设计

学制

全日制三年

课程结构

必修课: 1252 学时, 76.5 学分

选修课: 428 学时,25学分(含专业选修课和任意选修课)

理论教学总课时: 1680 学时(含实验课时)

实践教学 30.5 周, 28.5学分

总学分(毕业最低学分) 130 学分

总学分结构:必修课 76.5 学分,选修课 25学分,实践性环节 28.5 学分

教学安排表

附表一:专业必修课教学安排表

附表二:专业选修课教学安排表

附表三:实践教学安排表

附表四:职业资格培训与考核安排表

附表五:学期学周安排表

附表六:学期学分安排表

附表七:学时学分分配表

第 页 共 4 页

政治理论素质

身 体 素 质

信息交流素质

工程技术素质

1. 计算机网络的组建与

维护能力

2. 参与网络应用开发(基于网络的程序设计和数据库开发能力)

3. 网页的设计制作能力

公共素质

职业核心能力

关键岗位能力

计算机网络组建

计算机网络管理与维护

网络应用开发

网络安全

网页设计能力

基本职业素质

计算机组装与维护

图像处理技术

网络数据库

VB程序设计

数据库技术

网页制作

(三剑客)

高级网络程序设计语言

网络程序设计与开发

数据库原理与应用(Access

网页制作

(三剑客)

动态网页设计(ASP,JSP)

网站设计,维护与管理

计算机网络

网络操作系统

网络实用技术

计算机网络组建,维护与管理

C语言课程设计报告要求

一 、 设计题目

万年历的设计

二 、设计要求

1、能够显示星期;

2、能够显示年月日;

3、能够修改;

4、当系统时间变动时,能自动跳到相应的时间。

三 、 设计目的

1. 通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!

2. 通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。

四 、设计思想及过程

【一】由于万年历具有以下特点:

1。平年365天(52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。

由于公元1月1日设为星期六,故3月1日为星期三。 ——注意这个“三”

为使算法达到最简,故本算法以“星期”为计算单位。且选3月1日为基月。

2。每400年整一闰,或每4年且不为百年的一闰。(原因:地球绕太阳一周的时间是365天5小时46秒,为了使一年的天数为整数,将一年的天数定为365天,余下的时间积累起来,四年就是23小时15分4秒,将近一天,把这一天加在某年的二月而成29天,该年称为闰年,其它年称为平年。但四年加一天又多用了44分56秒,这个数积满400年为三天。因此400年中只能有97个闰年,所以凡能被400整除,或不能被100整除但能被4整除的年份为闰年。)

所以百年%4=0闰或(年%4=0并且年0)闰。

3。每 4年(3个平年+1个闰年)共208周+5天 ——注意这个“5天”

每百年共100*(208周+5天)-1天=5217周+5天 ——注意这个“5天”(整百年暂设为平年)

每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天——注意这个“0天”和

“1天”(4个整百年只有一个闰年)

即400年一轮回!(原来万年历400年前是一家)

【二】根据万年历以上特点进行编写:

首先对万年历年、月、日进行编写,编写程序先定义每月的天数为28天,如月份为1、3、5、7、8、10、12就定义天数为31天反之如果月份为4、6、9、11就输出天数为30天,由上可见2月份为28天但是如果为闰年就有29天就要定义另一个函数#define Year(x) (x%4==0x%100!=0||x%400==0) ? 1:0当为闰年时可得1加上该程序便可得到每月的天数。 具体程序见(五、万年历程序)

再对其中的星期进行编写:由于公元1月1日设为星期六,故3月1日为星期三,可以用万年3月1日星期算法(特别是那个三)

由于其公式为:

某年3月1日星期几=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7

某年3月1日星期几=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7

或 某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

闰4百年3月1日星期算法(百年%4=0)

其公式为:

某年3月1日星期几=(年+年/4+月星期表+日+2天)%7

例:0000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

1600年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

2000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

2001年3月1日星期几=(1+1/4+0+1+2)%7=4%7=星期四

2004年3月1日星期几=(4+4/4+0+1+2)%7=8%7=星期一

2008年3月1日星期几=(8+8/4+0+1+2)%7=13%7=星期六

2042年3月1日星期几=(42+42/4+0+1+2)%7=55%7=星期六

平4百年3月1日星期算法(百年%40)

其公式为:

某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

例:1700年3月1日星期几=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平年)

1800年3月1日星期几=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平年)

1900年3月1日星期几=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平年)

1901年3月1日星期几=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五

1918年3月1日星期几=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五

1958年3月1日星期几=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六

1988年3月1日星期几=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二

1999年3月1日星期几=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一

2100年3月1日星期几=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:2100年是平年)

2101年3月1日星期几=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二

2102年3月1日星期几=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三

2103年3月1日星期几=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四

2104年3月1日星期几=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:2104年是闰年)

9999年3月1日星期几=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一

注:按400年一轮回!(400年前是一家)的说法

1600年,2000年是一样的;

1700年,2100年是一样的;

1800年,2200年是一样的;

1900年,2300年是一样的。

其中万年某日星期算法

其公式为:

某日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

通同星期偏差表

闰年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天数 31 29 31 30 31 30 31 31 30 31 30 31

星期 3 6 0 3 5 1 3 6 2 4 0 2

平年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天数 31 28 31 30 31 30 31 31 30 31 30 31

星期 4 0 0 3 5 1 3 6 2 4 0 2

为对以上的万年历星期的算法是正确的对其进行了以下的计算:

⒈对于二十世纪任意日期可以用公式某日星期几=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根据上面对其进行的计算:

1900年元旦 1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4

1月表=4(平年) 故 4+4=1 即1900年元旦是星期一

1949年国庆 1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2

10月表=4(平年) 故 4+2=6 即1949年国庆是星期六

1999年12月31日 31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3

12月表=2(平年) 故 2+3=5 即1999年12月31日是星期五

⒉对于二十一世纪新前年虫算法(20%4*5=0)可以用公式:某日星期几=(百年%4*5天+年+年/4+闰年月星期表+日+2天)%7 =(20%4*5天+年+年/4+闰年月星期表+日+2天)%7以下就是根据上面对其进行的计算:

2000年元旦 1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3

1月表=3(闰年) 故 3+3-6 即2027年元旦是星期六

2018年春节 16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5

2月表=0(平年) 故 0+5=5 即2018年春节是星期五

2099年12月31日 31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2

12月表=2(平年) 故 2+2=4 即2099年12月31日是星期四

对于上面的分析以及公式的推论和计算证明可以对万年历中的星期进行了编写具体编写程序见(五 、万年历程序)中。

五 、万年历源程序

#include"stdio.h"

#include"dos.h"

#include"conio.h"

#include"stdlib.h"

#define Year(x) (x%4==0x%100!=0||x%400==0) ? 1:0 /*判断闰年*/

int numofMonth(int y,int m){

int day,t=28;

if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

day=31; /*定义以上月份为31天*/

else if(m==4||m==6||m==9||m==11)

day=30; /*定义以上月份为30天*/

else{t+=Year(y);

day=t;} /*闰年二月29天,平年28天*/

return day;}

int numofYear(int y){

int t=365; /*平年365天*/

t+=Year(y);/*闰年366天*/

return t;}

int numofbeforeDays(int y,int m,int d){

int sum=d,i;

for(i=1;im;i++)

sum+=numofMonth(y,i);

return sum;}

int numofafterDays(int y,int m,int d){

int sum=0,i;

for(i=m;i=12;i++)

sum+=numofMonth(y,i);

sum-=d;

return sum;}

int isDay(int y,int m,int d){

int year=1900,month=1,week=1,i; /*定义万年历是从1900年开始*/

long sum=0;

for(i=year;iy;i++)

sum+=numofYear(i);

for(i=1;im;i++)

sum+=numofMonth(y,i);

/* ++sum;*/

i=sum%7;

week=(week+i)%7;

return week;}

void empty(int n){

int i;

for(i=0;in;i++)

printf("%*c",6,' ');}

void OutPutCalender(int y,int m,int d)/*计算x年x月x是星期几*/{

int week,i,num,t;

week=isDay(y,m,1);

printf("%6d/%02d/%02d\n",y,m,d);

printf("%6s%6s%6s%6s%6s%6s%6s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");

empty(week);

num=numofMonth(y,m);

for(i=1;i=num;i++){

printf("%6d",i);

t=(week+i)%7;

if(t==0)

printf("\n");} /*光标移到下一行*/

printf("\n");}

long numBTDays(int y1,int m1,int d1,int y2,int m2,int d2)/*定义两个不同日期*/{

int i;

long sum=0;

for(i=y1+1;iy2;i++)

sum+=numofYear(i);

if(y1==y2){ sum-=d1;

for(i=m1;im2;i++)

sum+=numofMonth(y1,i);

sum+=d2;}

else{sum+=numofafterDays(y1,m1,d1);

sum+=numofbeforeDays(y2,m2,d2);}

return sum;}

int Select_mean(){

int sm;

printf("1. OutPut Calender\n"); /*输出当前月份的日历*/

printf("2. Help\n"); /*帮助*/

printf("0. Quit\n"); /*退出*/

printf("Please enter choose(0--2):"); /*从0-2中选择*/

do

scanf("%d",sm); /*输入sm*/

while(sm0||sm3);

return sm;}

void Help()/*输出帮助栏的内容*/{

printf(" 1. OutPut Calender\n");

printf(" 2. System Help\n");

printf(" 0. Quit\n");

printf("Page Up: Up year\n"); /*上一年*/

printf("Page Down: next year\n"); /*下一年*/

printf(" -- : next month\n"); /*上一月*/

printf(" -- : Up month\n");/*下一月*/}

main(){

int year=2006,year1=2006,month,day,y1,m1,d1,y2,m2,d2,c,t; /*定义运行后的日期是2006年*/

int inkeySCAN,inkey; /*输入键盘操作信息*/

union REGS inregs,outregs;

inregs.h.ah=0x2a;

intdos(inregs,outregs);

/* year=outregs.xcx; */

month=outregs.h.dh;

day=outregs.h.dl;

year1=year;

printf("%d/%02d/%02d\n",year,month,day);

while(1)/*当选择为1时,执行以下语句*/{

switch(Select_mean()){

case 1:

OutPutCalender(year,month,day);

while(1){

inkey=bioskey(0);

inkeySCAN=(inkey0xFF00)8;

if(inkeySCAN==77){

if(month==12){month=1;year1++;

OutPutCalender(year1,month,day);/*输出日历*/}

else{month++;

OutPutCalender(year1,month,day);

}}

if(inkeySCAN==75){

if(month==1){month=12;year1--;

OutPutCalender(year1,month,day);}

else{month--;OutPutCalender(year1,month,day);}}

if(inkeySCAN==73){

if(year1==1900) year1=year;

else{year1--;OutPutCalender(year1,month,day);}}

if(inkeySCAN==81){

year1++;OutPutCalender(year1,month,day);}

if(inkeySCAN==28)break;}

break; /*终止循环*/

case 2:

Help();

break;

case 0:

exit(0);

default:

printf("Enter ERROR!\n");

break;} }

}

六 运行过程

1.双击TC

1. 当对上面的程序进行了调试后运行会出现下面所示:

第一行所显示的就是系统时间!满足了第一条要求“显示年、月、日”。

而当改变系统时间后!再运行该程序上面的日期也随系统时间改变,所以满足第四条“当系统时间变动时,能自动跳到相应的时间。”

2. 在光标处按下“1”后回车,将会显示:

以上的显示也证明了条件的第2条可以“显示星期!”

3. 在光标处按下“2”后回车,将会显示:

按着帮助所讲进行了运行可知:按“ Page Up ”键其下面接着会显示上一年该月的万年历,按“ Page Down ”键其下面会接着显示下一年该月的万年历;按“ ← ”键下面将会接着显示当年上一个月的万年历,按“ → ”键将会接着在下面显示去下一个月的万年历。

4.

由上所显示键入“0”后将会退去该程序。

由以上运行的结果可知该c语言所设计的万年历满足设计要求!

七、在C语言编程中常见错误

C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给我们留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对我们这些初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,我通过这次编程,也积累了一些C编程时常犯的错误:

1. 书写标识符时,忽略了大小写字母的区别。

编译程序把a和A认为是两个不同的变量名,而显示出错信息。C语言认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

2.忽略了变量的类型,进行了不合法的运算。

%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。

3.将字符常量与字符串常量混淆。

混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。

4.忽略了“=”与“==”的区别。

在C语言中,“=”是赋值运算符,“==”是关系运算符。如:

if (a==3) a=b;

前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。

5.忘记加分号。

分号是C语句中不可缺少的一部分,语句末尾必须有分号。

a=1 b=2

编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。

{ z=x+y;

t=z/100;

printf("%f",t);

}

对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。

6.多加分号。

对于一个复合语句,如:

{ z=x+y;

t=z/100;

printf("%f",t);

};

复合语句的花括号后不应再加分号,否则将会画蛇添足。

又如:

if (a%3==0);

I++;

本是如果3整除a,则I加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。

再如:

for (I=0;I5;I++);

{scanf("%d",x);

printf("%d",x);}

本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。

7.输入变量时忘记加地址运算符“”。

int a,b;

scanf("%d%d",a,b);

这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“a”指a在内存中的地址。

8.输入数据的方式与要求不符。scanf("%d%d",a,b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:

3,4

输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。

scanf("%d,%d",a,b);C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:

3,4

此时不用逗号而用空格或其它字符是不对的。

3 4 3:4

又如:

scanf("a=%d,b=%d",a,b);

输入应如以下形式:

a=3,b=4

9.输入字符的格式与要求不一致。

在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。

scanf("%c%c%c",c1,c2,c3);

如输入a b c

字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。

10.输入输出的数据类型与所用格式说明符不一致。

例如,a已定义为整型,b定义为实型

a=3;b=4.5;

printf("%f%d\n",a,b);

语法错

逻辑错 运行错

0.忘记定义变量:

main()

{x=3;y=6;

printf(“%d\n”,x+y);

11.C语言的变量一定要先定义才能使用;

12.输入输出的数据的类型与所用格式说明符不一致

int a=3;float b=4.5;printf(“%f%d\n”,a,b);

它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出)

13.未注意int型数据的数值范围

int型数据的数值范围(-32768~32768)

int num=89101;

printf(“%d”,num);

会将超过低16位的数截去从而得到23563

注意:定义了long型,而在输出时仍用”%d”说明符,仍会出现以上错误

14.输入变量时忘记使用地址符

scanf(“%d%d”,a,b);

15.输入时数据的组织与要求不符

对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入

16.误把”=“作为”等于”比较符

“=“为附值运算符

“==“为比较运算符

17.语句后面漏分号

{

t=a;

a=b;

b=t

}

它是pascal的语法

18.不该加分号的地方加了分号

if(ab);

printf(“a is larger than b\n”);

for(i=0;i10;i++);

{

scanf(“%d”,x);

printf(“%d\n”,x*x);

}

19.对应该有花括弧的复合语句,忘记加花括弧

sum=0;

i=1;

while(i=100)

sum=sum+1;

i++;

20.括弧不配对

while((c=getchar()!=‘#’)

putchar(c);

11.在用标识时,忘记了大写字母和小写字母的区别

{

int a,b,c;

a=2;

b=3;

C=A+B;

printf(“%d+%d=%D”,A,B,C);

}

12.引用数组元素时误用发圆括弧

{

int i,a(10);

for(i=0;i10;i++)

scanf(“%d”,a(i));

}

13.在定义数组时,将定义的”元素个数”误认为是”可使用的最大下标值

{

int a[10]={1,2,3,4,5,6,7,8,9,10};

int i;

for(i=1;i=10;i++)

printf(“%d”,a[i]);

}

14.对二维或多维数组的定义和引用的方法不对

{

int a[5,4];

printf(“%d”,a[1+2,2+2]);

}

15.误以为数组名代表数组中全部元素

{int a[4]={1,2,3,4};

printf(“%d%d%d%d”,a);

}

16.混淆字符数组与字符指针的区别

main()

{

char str[40];

str=“Computer and c”;

printf(“%s\n”,str);

}

17.在引用指针变量之前没有对它赋予确定的值

{

char *p;

scanf(“%s”,p);

}

{

char *p,c[20];

p=c;

scanf(“%s”,p);

}

18.switch语句的各分支中漏写 break语句

混淆字符和字符串的表示形式

char sex;

sex=“M”;

19.使用自加(++)和自减(--)运算符时出的错误

{

int *p,a[5]={1,3,5,7,9};

p=a;

printf(“%d”,*p++);

}

注意于*(++p)的区别;

20.所调用的函数在调用语句之后才定义,而又在调用前未加说明

main()

{float x,y,z;

x=3.5;y=-7.6;

z=max(x,y);

printf(“%f”,z);

}

编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。

八、心得体会

1. 目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,特别是在众多的科学研究领域中,一个时间跨度较大的日历程序是很有参考价值的。C程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本填补了这一领域的空白,同时用铁的事实强有力的告诉世人:C程序设计语言作为计算机语言家族的新生事物,其发展前景是极为广阔的。

2. 经过上一个学期对《C程序设计》的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。通过课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。

3. 通过对c语言万年历的设计进一步的巩固了用c语言编写程序,并且有利于更好的掌握c语言!

4. 在万年历的编写过程中也体会到了做事情一顶要细心、认真。更加知道了要掌握好基础知识。还有体会到了成功的感觉!在万年历的设计过程中更加体会到了团队合作的重要性,“一个诸葛亮比不上三个臭皮匠。”知道了只有团队合作才会更好的完成设计!也体会到以后在工作中团队合作的必要性和重要性!

5. 通过本项课程设计也培养了我独立思考、 综合运用所学有关相应知识的能力,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!

6. 由于C语言是近年在国内外得到迅速推广应用的一种语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。通过这次的c语言程序设计更加了解了c语言的好处和其可用性!

7. 在这次课程设计中也知道了自己的动手能力不强有待进一部的提高!在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!在设计过程中的一次次设计错误增加了我放弃的想法!不过经过大家的努力终于完成了课程设计!完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!也让我懂得了要想成功首先就必须有很强的自信心!懂得了自己以后要在做任何事情时都要自信!当自己都不相信自己能够成功时还可能会获得成功吗?

8. 在C语言程序设计的过程中也知道了自己在以前的学习中有很大的不足导致在设计过程中出现了很多的问题,有些地方看不懂也不知道怎么去设计,但是在设计过程中也学习了很多,掌握了自己以前没有学好的知识,虽然一时可以掌握完以前没有学好的知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给别人看的!都是要更好的掌握该门知识,提高自己的自身的修养,提高自己的能力!为以后的工作打下良好的知识基础和技能基础!

九、参考文献

⒈谭浩强编著.C程序设计第二版〔M〕.北京:清华大学出版社,1999

⒉陈朔鹰,陈英编著.C语言趣味程序百例精解〔M〕.北京:北京理工大学出版社,1994

⒊电脑知识与技术学术交流版〔J〕2005.2 (备注:来自网络资源)

⒋Herbert Schildit著. 戴健鹏译. C语言大全 (第二版)〔M〕.北京:电子工业出版社,1994

⒌谭浩强,张基温,唐永炎编著. C语言程序设计教程.〔M〕北京: 高等教育出版社,1992

⒍秦友淑,曹化工编著. C语言程序设计教程. 〔M〕武汉:华中理工大学出版社,1996

⒎曹衍龙,林瑞仲,徐慧 编著.C语言实例解析精粹 〔M〕北京:人民邮电出版社,2005.3

⒏黄明等编著.21世纪进阶辅导C语言程序设计. 〔M〕大连理工大学出版

java网络编程的基本内容有哪些?其特点和优势如何?请进行论述。

1.用Java编写网络程序是非常简单的——至少比在现有其他编程环境下要简单得多。本书的新版本带给开发者的是Java发展的最新特性。一旦开始使用Java的网络API进行网络编程,我们能做到可以想像到的一切事情。 本书对开发网络程序进行了非常完整的介绍(从应用程序和applet两方面),它包括了从网络基础到远程方法调用(RMI)的所有内容。本书的章节涵盖了TCP和UDP套接字、组播、内容和协议处理器以及两个新的API:JSSE(SSL实现)和JavaMail API。扩充了I/O和多线程等基础知识。还讲述了在不直接编写网络代码时你所能够实现的内容,例如如何用URL实现自己的目标、applet的基本功能以及如何用Swing处理HTML。无论是有经验的网络程序员还是只想随意看一看的初学者,都会发现本书对于Java的网络程序类的学习是相当完整的。本书内容涵盖了:1、Java 2(JDK 1.2和1.3)和Java1.1。2、许多完整的程序(可在线获取)。3、网络编程基础的所有方面。4、一些高级专题,包括RMI和组播。5、许多重要的API,有JSSE、JavaMail以及Swing中的HTML解析器。Elliotte Rusty Harold是著名的Java网站Cafe Au Lait的作者(http://metalab.unc.edu/javafaq),国际知名的计算机专家。他是《Java I/O》以及其他一些Java和XML技术图书的作者。 “直到找到这本书之后,我才开始真正理解Java网络编程。”——Bruce Eckel,《Java编程思想》的作者.

2.JAVA的特点§ 1.2 Java的特点

Java是一个广泛使用的网络编程语言 ,它是一种新的计算概念。

首先 ,作为一种程序设计语言 ,它简单、面向对象、不依赖于机器的结构、

具有可移植性、鲁棒性、安全性、并且提供了并发的机制、具有很高的性能。其

次 ,它最大限度地利用了网络 ,Java的小应用程序 (applet)可在网络上传输而

不受 CPU和环境的限制。另外 ,Java还提供了丰富的类库 ,使程序设计者可以很

方便地建立自己的系统。

下面我们分别从这三个方面来讨论 Java的特点 ,然后通过把 Java与 C,

C++相比进一步指出它所具有的优点。

一、 Java语言

Java语言有下面一些特点 :简单、面向对象、分布式、解释执行、鲁棒、

安全、体系结构中立、可移植、高性能、多线程以及动态性。

:1.简单性

Java语言是一种面向对象的语言 ,它通过提供最基本的方法来完成指定的

任务 ,只需理解一些基本的概念 ,就可以用它编写出适合于各种情况的应用程

序。 Java略去了运算符重载、多重继承等模糊的概念 ,并且通过实现自动垃圾

收集大大简化了程序设计者的内存管理工作。另外 ,Java也适合于在小型机上运

行 ,它的基本解释器及类的支持只有 40KB左右 ,加上标准类库和线程的支持也

只有 215KB左右。库和线程的支持也只有 215KB左右。

2.面向对象

Java语言的设计集中于对象及其接口 ,它提供了简单的类机制以及动态的

接口模型。对象中封装了它的状态变量以及相应的方法 ,实现了模块化和信息

隐藏 ;而类则提供了一类对象的原型 ,并且通过继承机制 ,子类可以使用父类

所提供的方法 ,实现了代码的复用。

3.分布性

Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议 ,用户

可以通过 URL地址在网络上很方便地访问其它对象。

4.鲁棒性

Java在编译和运行程序时 ,都要对可能出现的问题进行检查 ,以消除错误

的产生。它提供自动垃圾收集来进行内存管理 ,防止程序员在管理内存时容易

产生的错误。通过集成的面向对象的例外处理机制 ,在编译时,Java提示出可能

出现但未被处理的例外 ,帮助程序员正确地进行选择以防止系统的崩溃。另外,

Java在编译时还可捕获类型声明中的许多常见错误 ,防止动态运行时不匹配问题

的出现。

5.安全性

用于网络、分布环境下的 Java必须要防止病毒的入侵。 Java不支持指针,

一切对内存的访问都必须通过对象的实例变量来实现 ,这样就防止程序员使用

"特洛伊 "木马等欺骗手段访问对象的私有成员 ,同时也避免了指针操作中容易

产生的错误。

6.体系结构中立

Java解释器生成与体系结构无关的字节码指令 ,只要安装了 Java运行时

系统 ,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟

机中的表示 ,Java解释器得到字节码后 ,对它进行转换 ,使之能够在不同的平

台运行。

7.可移植性

与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。

同时 ,Java的类库中也实现了与不同平台的接口 ,使这些类库可以移植。另外,

Java编译器是由 Java语言实现的 ,Java运行时系统由标准 C实现 ,这使得Java

系统本身也具有可移植性。

8.解释执行

Java解释器直接对 Java字节码进行解释执行。字节码本身携带了许多

编译时信息 ,使得连接过程更加简单。

9.高性能

和其它解释执行的语言如 BASIC、 TCL不同 ,Java字节码的设计使之能

很容易地直接转换成对应于特定CPU的机器码 ,从而得到较高的性能。

10.多线程

多线程机制使应用程序能够并行执行 ,而且同步机制保证了对共享数据

的正确操作。通过使用 多线程 ,程序设计者可以分别用不同的线程完成特定

的行为 ,而不需要采用全局的事件循环机制 ,这样就很容易地实现网络上的实

时交互行为。

11.动态性

Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入

新的方法和实例变量而不会影响用户程序的执行。并且 Java通过接口来支持

多重继承 ,使之比严格的类继承具有更灵活的方式和扩展性。

参考资料:

3.Java已用动态的交互应用软件使Web栩栩如生。它使开发人员

具有‘编写一次到处运行TM”的巨大能力。而且,借助其JavaAPI

及其编程语言上的Java虚拟机,它已产生一种分布信息的崭新模式。

这种模式叫做Java企业计算,正在帮助各企业以各种不同的方法取

得竞争优势。网管和控制已大大简化。软件分配基本上是免费的,

而且立即可实现。电子贸易已获得。占有成本大幅度降低。信息和

应用软件到处可存取。

Java建立在简单的前提基础上,即所有微处理器都应讲同一种

语言——所有内部采用芯片的产品都应能一起工作,无缝而方便地

共享信息。它已经改变企业和个人同Internet大交道的方式。现在,

它正在对消费类产品产生明显的影响,而且从总体上更加深刻地影

响企业计算。

借助Java,您可自由自在地使用您已拥有的硬件和软件。这是因

为Java是独立于平台的。它还可使您超越企业计算,使应用软件在便

携式计算机、信息亭、电视、蜂窝电话和其他大量设备上运行。

全世界的公司都已发现Java数不胜数的用途。所有用途可从其无

可比拟的能力,即提高可靠性、安全性和简化各种不同计算产品和

环境的能力中受益非浅,而且节省的时间和费用十分可观。

Java无处不在。它已拥有几百万个用户,其发展速度要快于在它

以前的其他任何一种计算机产品。它可位于任何地方,而且能到处运

行。Java正在迅速被用做传播信息的事实上标准,这是因为它既可给

企业,也可给最终用户带来似乎数不清的好处。

计算机信息管理都包括什么?

计算机信息管理专业是计算机与经济管理学科交叉的专业,本专业培养德、智、理全面发展,掌握现代管理学和计算机的理论基础,运用先进的管理手段进行信息管理,成为具有综合能力和全面素质的高等技术应用性信息管理人才。

知识技能: 掌握计算机软件、硬件及网络的基础理论知识和专业知识。 掌握计算机的操作使用、程序设计、系统维护等基本技能。具有数据库软件安装与维护能力; 具有一定的网络组建、操作和维护能力,具有信息系统开发、管理和维护能力,具有多媒体处理能力。较熟练掌握一门外语,具有阅读和翻译本专业外文资料的能力。 主干课程: 计算机组成原理、面向对象的程序设计、数据库技术及应用、网络数据库、统计学原理、计算机网络技术、网络编程技术,多媒体技术及应用、管理信息系统开发、专业英语、电子商务等。 主要实践教学: 面向对象的程序设计的训练、管理信息系统开发课程设计、计算机系统维护课程设计、网络编程课程设计、电子商务实战演练、毕业综合实习等。

1.会计可以大致分为商业会计、工业会计、行政会计等,又可以分管理会计和财务会计,管理会计是对内的,财务会计对外的。

2.会计按工种又可分好几种比如主管会计、会计、出纳、仓库保管员等这些再跟据企业的性质和大小不同又可以细分。

3.分为二类,一类是职称,就是考出资格证之后再考初级-中级-高级,另一类就是注册会计师,这个厉害,也非常难考,不过考出后月薪上万不是梦。

(责任编辑:IT教学网)

更多

推荐通讯数据软件文章