常用测绘C#程序设计(源代码)

常用测绘C#程序设计(源代码)
常用测绘C#程序设计(源代码)

常用测量程序设计

(1)用全站仪在A点观测了B点斜边和垂直角,求A到B的高差。

(提示:

2

2

sin(1)cos

2

AB

D

h D a k a i v

R

=+-+-,D--斜边,a--垂直角,i--仪器高,v--反

光镜高,k--大气折光系数)

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Application

{

static void Main(string[] args)

{

Console.Write("请输入斜边=");

double D = double.Parse(Console.ReadLine());

Console.Write("请输入垂直角[ddd.mmss]=");

double a = DEG(double.Parse(Console.ReadLine()));

Console.Write("请输入仪器高=");

double i = double.Parse(Console.ReadLine());

Console.Write("请输入反光镜高=");

double v = double.Parse(Console.ReadLine());

double h = D * Math.Sin(a) + (1 - 0.13) * D / 6371000.0 * D / 6371000.0 * Math.Cos(a) * Math.Cos(a) / 2.0 + i - v;

Console.WriteLine("高差为{0}",h);

}

//将ddd.mmss转为弧度

static public double DEG(double ang)

{

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang);

int d = (int)ang;

int m = ((int)(ang * 100)) - d * 100;

double s = ang * 10000 - m * 100 - d * 10000;

return ((d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI;

}

}

}

(2)如图所示,已知A点的坐标及A点到B点的边长及方位角,计算B点的坐标。

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Application

{

static void Main(string[] args)

{

Console.Write("请输入A点的X坐标=");

double XA = double.Parse(Console.ReadLine());

Console.Write("请输入A点的Y坐标=");

double YA = double.Parse(Console.ReadLine());

Console.Write("请输入A到B的方位角[ddd.mmss]=");

double a = DEG(double.Parse(Console.ReadLine()));

Console.Write("请输入A到B的水平距离=");

double S = double.Parse(Console.ReadLine());

double XB = XA + S*Math.Cos(a);

double YB = YA + S*Math.Sin(a);

Console.WriteLine("B点的坐标({0},{1})",XB,YB);

}

//将ddd.mmss转为弧度

static public double DEG(double ang)

{

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang);

int d = (int)ang;

int m = ((int)(ang * 100)) - d * 100;

double s = ang * 10000 - m * 100 - d * 10000;

return ((d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI;

}

}

}

(3)如图所示,已知A点和B点的坐标,计算A点到的边长及方位角。

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Application

{

static void Main(string[] args)

{

Console.Write("请输入A点的X坐标=");

double XA = double.Parse(Console.ReadLine());

Console.Write("请输入A点的Y坐标=");

double YA = double.Parse(Console.ReadLine());

Console.Write("请输入B点的X坐标=");

double XB = double.Parse(Console.ReadLine());

Console.Write("请输入B点的Y坐标=");

double YB = double.Parse(Console.ReadLine());

double S = 距离(XA, YA, XB, YB);

double a = 方位角(XA, YA, XB, YB);

Console.WriteLine("AB间的距离={0},从A到B的方位角={1}",S,DMS(a)); }

//将弧度转为ddd.mmss

static public double DMS(double ang)

{

ang += 1.0E-15;//加上一个小量,以保证进位

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang) * 180.0 / Math.PI;

int d = (int)ang;

ang = (ang - d) * 60.0;

int m = (int)ang;

double s = (ang - m) * 60.0;

return (d + m / 100.0 + s / 10000.0) * fuhao;

}

//计算方位角,返回弧度值

public static double方位角(double x1, double y1, double x2, double y2) {

double deltaX = x2 - x1;

double deltaY = y2 - y1;

double angle = Math.PI * 0.5;

if (Math.Abs(deltaX) > 0.000000001)

{

angle = Math.Atan2(deltaY, deltaX);

}

if (angle < 0)

{

angle += Math.PI;

}

if (deltaY < 0.0)

{

angle += Math.PI;

}

return angle;

}

//计算距离

public static double距离(double x1, double y1, double x2, double y2)

{

return Math.Sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));

}

}

}

a及每个左角,求每条边的(4)在如图所示的支中导线,已知A点到M点的坐标方位角

坐标方位角。

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Application

{

static void Main(string[] args)

{

Console.Write("请输入A点到M点的坐标方位角=");

//将A点到M点的坐标方位角换算为M点到A点的坐标方位角,以便利用公式

double a0 = DEG(double.Parse(Console.ReadLine()) +180.0);

if (a0 > 2 * Math.PI)

{

a0 -= 2 * Math.PI;

}

List 导线转角集合 = new List();

int i = 1;

do

{

Console.Write("请输入第{0}个转角的水平角[左角为正,右角为负] <直接回车结束输入>=",i++);

string str = Console.ReadLine();

if (str != "")

{

导线转角集合.Add(DEG(double.Parse(str)));

}

else

{

break;

}

} while (true);

i = 1;

foreach (double a in导线转角集合)

{

a0 += a + Math.PI;

if (a0 > 2 * Math.PI)

{

a0 -= 2 * Math.PI;

}

else if (a0 < 0.0)

{

a0 += 2 * Math.PI;

}

Console.WriteLine("第{0}条边的方位角为{1}",i++,DMS(a0)); }

}

//将弧度转为ddd.mmss

static public double DMS(double ang)

{

ang += 1.0E-15;//加上一个小量,以保证进位

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang) * 180.0 / Math.PI;

int d = (int)ang;

ang = (ang - d) * 60.0;

int m = (int)ang;

double s = (ang - m) * 60.0;

return (d + m / 100.0 + s / 10000.0) * fuhao;

}

//将ddd.mmss转为弧度

static public double DEG(double ang)

{

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang);

int d = (int)ang;

int m = ((int)(ang * 100)) - d * 100;

double s = ang * 10000 - m * 100 - d * 10000;

return ((d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI;

}

}

}

(5)在如图所示的支中导线,已知A点和M点的坐标及每个左角和每条边长,求每个点的坐标。

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Application

{

static void Main(string[] args)

{

Console.Write("请输入M点的x坐标=");

double Mx = double.Parse(Console.ReadLine());

Console.Write("请输入M点的y坐标=");

double My = double.Parse(Console.ReadLine());

Console.Write("请输入A点的x坐标=");

double Ax = double.Parse(Console.ReadLine());

Console.Write("请输入A点的y坐标=");

double Ay = double.Parse(Console.ReadLine());

List 导线转角集合 = new List();

List 导线边长集合 = new List();

int i = 1;

do

{

Console.Write("请输入第{0}个转角的水平角[左角为正,右角为负]<直接回车结束输入>=",i);

string str = Console.ReadLine();

if (str != "")

{

导线转角集合.Add(DEG(double.Parse(str)));

}

else

{

break;

}

Console.Write("请输入第{0}条边长值=", i++);

导线边长集合.Add( double.Parse(Console.ReadLine()));

} while (true);

//计算M到A的坐标方位角

double a0 = 方位角(Mx, My, Ax, Ay);

//计算每个点的坐标

double x0 = Ax;

double y0 = Ay;

for (int j = 0; j < 导线转角集合.Count; j++)

{

a0 += 导线转角集合[j] + Math.PI;

if (a0 > 2 * Math.PI) a0 -= 2 * Math.PI;

x0 = x0 + 导线边长集合[j] * Math.Cos(a0);

y0 = y0 + 导线边长集合[j] * Math.Sin(a0);

Console.WriteLine("P{0}点的坐标是:{1},{2}",j+2,x0,y0);

}

}

//将ddd.mmss转为弧度

static public double DEG(double ang)

{

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang);

int d = (int)ang;

int m = ((int)(ang * 100)) - d * 100;

double s = ang * 10000 - m * 100 - d * 10000;

return ((d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI;

}

//计算方位角,返回弧度值

public static double方位角(double x1, double y1, double x2, double y2) {

double deltaX = x2 - x1;

double deltaY = y2 - y1;

double angle = Math.PI * 0.5;

if (Math.Abs(deltaX) > 0.000000001)

{

angle = Math.Atan2(deltaY, deltaX);

}

if (angle < 0)

{

angle += Math.PI;

}

if (deltaY < 0.0)

{

angle += Math.PI;

}

return angle;

}

}

}

(6)在如图所示的单一附合水准路线中,已知A点和B点的高程及每段的长度和高差,求每个点的高程。

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Application

{

static void Main(string[] args)

{

Console.Write("请输入A点的高程=");

double Ha = double.Parse(Console.ReadLine());

Console.Write("请输入B点的高程=");

double Hb = double.Parse(Console.ReadLine());

List 路线段长度集合 = new List();

List 路线段高差集合 = new List();

int i = 1;

do

{

Console.Write("请输入第{0}段长度[公里为单位]<直接回车结束输入>=",i);

string str = Console.ReadLine();

if (str != "")

{

路线段长度集合.Add(double.Parse(str));

}

else

{

break;

}

Console.Write("请输入第{0}段高差=", i++);

路线段高差集合.Add(double.Parse(Console.ReadLine()));

} while (true);

//计算水准路线闭合差

double w = 0;

double总长度 = 0;

for (int j = 0; j < 路线段长度集合.Count; j++)

{

w += 路线段高差集合[j];

总长度 += 路线段长度集合[j];

}

w = w - (Hb - Ha); //闭合差

double v = -w / 总长度; //每公里改正数

//计算每个点的高程

double H = Ha;

for (int j = 0; j < 路线段长度集合.Count; j++)

{

H += 路线段高差集合[j] + v * 路线段长度集合[j];

Console.WriteLine("P{0}点的高程是:{1}",j+1,H);

}

Console.WriteLine("最后一点就是B点!");

}

}

}

(7)在如图所示的前方交会中,ABJ三点按逆时针方向排列,已知AB两点的坐标和两个交会角度,求J点的坐标。

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Application

{

static void Main(string[] args)

{

Console.Write("请输入A点的x坐标=");

double Ax = double.Parse(Console.ReadLine());

Console.Write("请输入A点的y坐标=");

double Ay = double.Parse(Console.ReadLine());

Console.Write("请输入B点的x坐标=");

double Bx = double.Parse(Console.ReadLine());

Console.Write("请输入B点的y坐标=");

double By = double.Parse(Console.ReadLine());

Console.Write("请输入α的角度值=");

doubleα = DEG(double.Parse(Console.ReadLine()));

Console.Write("请输入β的角度值=");

doubleβ = DEG(double.Parse(Console.ReadLine()));

//计算A到B的坐标方位角

double a0 = 方位角(Ax, Ay, Bx, By);

//计算A到J的坐标方位角

a0 -= α;

//计算A到B的边长

double s = 距离(Ax, Ay, Bx, By);

//计算A到J的边长

s = s / Math.Sin(Math.PI - α - β) * Math.Sin(β);

//计算J的坐标

double Jx = Ax + s * Math.Cos(a0);

double Jy = Ay + s * Math.Sin(a0);

Console.WriteLine("J点的坐标={0},{1}",Jx,Jy);

}

//将ddd.mmss转为弧度

static public double DEG(double ang)

{

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang);

int d = (int)ang;

int m = ((int)(ang * 100)) - d * 100;

double s = ang * 10000 - m * 100 - d * 10000;

return ((d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI;

}

//计算方位角,返回弧度值

public static double方位角(double x1, double y1, double x2, double y2) {

double deltaX = x2 - x1;

double deltaY = y2 - y1;

double angle = Math.PI * 0.5;

if (Math.Abs(deltaX) > 0.000000001)

{

angle = Math.Atan2(deltaY, deltaX);

}

if (angle < 0)

{

angle += Math .PI;

}

if (deltaY < 0.0)

{

angle += Math .PI;

}

return angle;

}

//计算距离

public static double 距离(double x1, double y1, double x2, double y2)

{

return Math .Sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));

}

}

}

(8)在如图所示的单个多边形中,已知每个点的坐标,求多边形的面积。 提示面积的计算公式为:111

1()2n

i i i i i P x y x y ++==-∑

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Application

{

static void Main(string [] args)

{

List 多边形X坐标集 = new List();

List 多边形Y坐标集 = new List();

int i = 1;

do

{

Console.Write("请输入第{0}点的x坐标<直接回车就结束输入>=",i);

string str = Console.ReadLine();

if (str != "")

{

多边形X坐标集.Add(double.Parse(str));

}

else

{

break;

}

Console.Write("请输入第{0}点的y坐标=",i++);

多边形Y坐标集.Add( double.Parse(Console.ReadLine()));

} while (true);

//计算面积

double area = 0;

//点的个数

int Count = 多边形X坐标集.Count;

for (int j = 0; j < Count-1; j++)

{

area += 多边形X坐标集[j] * 多边形Y坐标集[j + 1] - 多边形X坐标集[j + 1] * 多边形Y坐标集[j];

}

//计算最后一点到起点的项

area += 多边形X坐标集[Count - 1] * 多边形Y坐标集[0] - 多边形X坐标集[0] * 多边形Y 坐标集[Count - 1];

Console.WriteLine("多边形的面积={0}",Math.Abs(area * 0.5));

}

}

}

(9)在如图所示的仅有一个连接角的附合导线中,已知A点和B点的高程及每条边的斜边、垂直角、仪器高和反光镜高,求每个点的高程。

(提示:

2

2

sin(1)cos

2

AB

D

h D a k a i v

R

=+-+-,D--斜边,a--垂直角,i--仪器高,v--反

光镜高,k--大气折光系数)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace导线

{

class Program

{

static void Main(string[] args)

{

Console.Write("请输入A点的高程=");

double HA = double.Parse(Console.ReadLine());

Console.Write("请输入B点的高程=");

double HB = double.Parse(Console.ReadLine());

List 高差集合 = new List();

List 水平距离平方集合 = new List();

int i = 1;

double高差和 = 0;

double水平距离平方和 = 0;

do

{

Console.Write("请输入{0}点到{1}点的斜距D<直接回车结束输入>=",i,i+1);

string str = Console.ReadLine();

if (str == "") break;

double D = double.Parse(str);

Console.Write("请输入{0}点到{1}点的垂直角=", i, i + 1);

doubleα = 导线.DEG(double.Parse(Console.ReadLine()));//并化为弧度

Console.Write("请输入{0}的仪器高=", i);

double仪器高 = double.Parse(Console.ReadLine());

Console.Write("请输入{0}的反光镜高=", i+1);

double反光镜高 = double.Parse(Console.ReadLine());

i++;

double水平距离;

double h = 导线.高差(D, α, 仪器高, 反光镜高, out水平距离);

水平距离平方集合.Add(水平距离 * 水平距离);

高差集合.Add(h);

水平距离平方和 += 水平距离 * 水平距离;

高差和 += h;

} while (true);

//计算高差闭合差

double高差闭合差 = HA + 高差和 - HB;

//计算单位长度改正数,三角高程的权与距离的平方成反比

double单位长度改正数 = -高差闭合差 / 水平距离平方和;

//计算每点高程

double H = HA;

for (int j = 0; j < 高差集合.Count; j++)

{

H += 高差集合[j] + 单位长度改正数 * 水平距离平方集合[j];

Console.WriteLine("第{0}点的高程H={1}",j+2,H);

}

Console.WriteLine("最后一个点的高程应该与B点的高程相同!");

}

}

class导线

{

//将ddd.mmss转为弧度

static public double DEG(double ang)

{

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang);

int d = (int)ang;

int m = ((int)(ang * 100)) - d * 100;

double s = ang * 10000 - m * 100 - d * 10000;

return ((d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI;

}

//高差计算,返回高差

public static double高差(double斜距,double垂直角,double仪器高,double反光镜

高,out double水平距离)

{

double h = 斜距 * Math.Sin(垂直角) + 斜距 * Math.Cos(垂直角) / 6371000.0 * 斜距 * Math.Cos(垂直角) * (1 - 0.13) + 仪器高 - 反光镜高;

水平距离 = 斜距*Math.Cos(垂直角);

return h;

}

}

}

(10)在如图所示的仅有一个连接角的附合导线中,已知M点、A点和B点的坐标,每个 及每条边的水平距离,求每个点的坐标。

点的左角

i

using System;

using System.Collections.Generic;

using System.Text;

namespace导线

{

class Program

{

static void Main(string[] args)

{

Console.Write("请输入M点的X坐标=");

double MX = double.Parse(Console.ReadLine());

Console.Write("请输入M点的Y坐标=");

double MY = double.Parse(Console.ReadLine());

Console.Write("请输入A点的X坐标=");

double AX = double.Parse(Console.ReadLine());

Console.Write("请输入A点的Y坐标=");

double AY = double.Parse(Console.ReadLine());

Console.Write("请输入B点的X坐标=");

double BX = double.Parse(Console.ReadLine());

Console.Write("请输入B点的Y坐标=");

double BY = double.Parse(Console.ReadLine());

//计算M到A的方位角

doubleα0 = 导线.方位角(MX, MY, AX, AY);

List 坐标增量X集合 = new List();

List 坐标增量Y集合 = new List();

int i = 1;

double坐标增量X和 = 0;

double坐标增量Y和 = 0;

double坐标增量X绝对值和 = 0;

double坐标增量Y绝对值和 = 0;

double水平距离和 = 0;

do

{

Console.Write("请输入{0}点到{1}点的水平距离S<直接回车结束输入>=",i,i+1);

string str = Console.ReadLine();

if (str == "") break;

double S = double.Parse(str);

Console.Write("请输入{0}点的水平角<左角为正,右角为负>=", i);

doubleβ = 导线.DEG(double.Parse(Console.ReadLine()));

i++;

//计算坐标增量

double dx, dy;

α0 = 导线.坐标(0, 0, β, S, α0, out dx, out dy);

坐标增量X集合.Add(dx);

坐标增量Y集合.Add(dy);

坐标增量X和 += dx; ;

坐标增量Y和 += dy; ;

坐标增量X绝对值和 += Math.Abs(dx);

坐标增量Y绝对值和 += Math.Abs(dy);

水平距离和 += S;

} while (true);

//计算闭合差

double闭合差X = AX + 坐标增量X和 - BX;

double闭合差Y = AY + 坐标增量Y和 - BY;

//计算单位长度改正数

double X坐标单位长度改正数 = -闭合差X / 坐标增量X绝对值和;

double Y坐标单位长度改正数 = -闭合差Y / 坐标增量Y绝对值和;

//计算导线相对精度

int f = (int)(水平距离和 / Math.Sqrt(闭合差X * 闭合差X + 闭合差Y * 闭合差Y));

Console.WriteLine("导线的相对精度为1/{0}",f);

//计算每点坐标

double X = AX;

double Y = AY;

for (int j = 0; j < 坐标增量X集合.Count; j++)

{

X += 坐标增量X集合[j] + X坐标单位长度改正数 * Math.Abs(坐标增量X集合[j]); Y += 坐标增量Y集合[j] + Y坐标单位长度改正数 * Math.Abs(坐标增量Y集合[j]);

Console.WriteLine("第{0}点的X坐标={1},Y坐标={2}",j+2,X,Y);

}

Console.WriteLine("最后一个点的坐标应该与B点的坐标相同!");

}

}

class导线

{

//将ddd.mmss转为弧度

static public double DEG(double ang)

{

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang);

int d = (int)ang;

int m = ((int)(ang * 100)) - d * 100;

double s = ang * 10000 - m * 100 - d * 10000;

return ((d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI;

}

//计算方位角,返回弧度值

public static double方位角(double x1, double y1, double x2, double y2)

{

double deltaX = x2 - x1;

double deltaY = y2 - y1;

double angle = Math.PI * 0.5;

if (Math.Abs(deltaX) > 0.000000001)

{

angle = Math.Atan2(deltaY, deltaX);

}

if (angle < 0)

{

angle += Math.PI;

}

if (deltaY < 0.0)

{

angle += Math.PI;

}

return angle;

}

//计算坐标,返回已知点到计算点的方位角

public static double坐标(double x0, double y0, double左角, double水平距离,double已知方位角,out double x,out double y)

{

double方位角 = 已知方位角 + 左角 + Math.PI;

//将方位角调整到0到2π之间

if (方位角 >= Math.PI * 2) 方位角 -= Math.PI * 2;

if (方位角 < 0.0) 方位角 += Math.PI * 2;

x = x0 + 水平距离 * Math.Cos(方位角);

y = y0 + 水平距离 * Math.Sin(方位角);

return方位角;

}

}

}

(11)在如图所示的仅有一个连接角的附合导线中,已知M点、A点和B点的坐标,A点

及每条边的斜边、垂直角、仪器高和反光镜高,求每个点和B点的高程,每个点的左角

i

的坐标和高程。

(提示:

2

2

sin(1)cos

2

AB

D

h D a k a i v

R

=+-+-,D--斜边,a--垂直角,i--仪器高,v--反

光镜高,k--大气折光系数)

using System;

using System.Collections.Generic;

using System.Text;

namespace导线

{

class Program

{

static void Main(string[] args)

{

Console.Write("请输入M点的X坐标=");

double MX = double.Parse(Console.ReadLine());

Console.Write("请输入M点的Y坐标=");

double MY = double.Parse(Console.ReadLine());

Console.Write("请输入A点的X坐标=");

double AX = double.Parse(Console.ReadLine());

Console.Write("请输入A点的Y坐标=");

double AY = double.Parse(Console.ReadLine());

Console.Write("请输入A点的高程=");

double HA = double.Parse(Console.ReadLine());

Console.Write("请输入B点的X坐标=");

double BX = double.Parse(Console.ReadLine());

Console.Write("请输入B点的Y坐标=");

double BY = double.Parse(Console.ReadLine());

Console.Write("请输入B点的高程=");

double HB = double.Parse(Console.ReadLine());

//计算M到A的方位角

doubleα0 = 导线.方位角(MX, MY, AX, AY);

List 坐标增量X集合 = new List();

List 坐标增量Y集合 = new List();

List 高差集合 = new List();

List 水平距离平方集合 = new List();

int i = 1;

double坐标增量X和 = 0;

double坐标增量Y和 = 0;

double坐标增量X绝对值和 = 0;

double坐标增量Y绝对值和 = 0;

double水平距离和 = 0;

double高差和 = 0;

double水平距离平方和 = 0;

do

{

Console.Write("请输入{0}点到{1}点的斜距D<直接回车结束输入>=", i, i + 1);

string str = Console.ReadLine();

if (str == "") break;

double D = double.Parse(str);

Console.Write("请输入{0}点的水平角<左角为正,右角为负>=", i);

doubleβ = 导线.DEG(double.Parse(Console.ReadLine()));

Console.Write("请输入{0}点到{1}点的垂直角=", i, i + 1);

doubleα = 导线.DEG(double.Parse(Console.ReadLine()));//并化为弧度

Console.Write("请输入{0}的仪器高=", i);

double仪器高 = double.Parse(Console.ReadLine());

Console.Write("请输入{0}的反光镜高=", i + 1);

double反光镜高 = double.Parse(Console.ReadLine());

i++;

//计算高差

double水平距离;

double h = 导线.高差(D, α, 仪器高, 反光镜高, out水平距离);

水平距离平方集合.Add(水平距离 * 水平距离);

高差集合.Add(h);

水平距离平方和 += 水平距离 * 水平距离;

高差和 += h;

//计算坐标增量

double dx, dy;

α0 = 导线.坐标(0, 0, β, 水平距离, α0, out dx, out dy);

坐标增量X集合.Add(dx);

坐标增量Y集合.Add(dy);

坐标增量X和 += dx; ;

坐标增量Y和 += dy; ;

坐标增量X绝对值和 += Math.Abs(dx);

坐标增量Y绝对值和 += Math.Abs(dy);

水平距离和 += 水平距离;

} while (true);

//计算高差闭合差

double高差闭合差 = HA + 高差和 - HB;

//计算单位长度改正数,三角高程的权与距离的平方成反比

double单位长度改正数 = -高差闭合差 / 水平距离平方和;

//计算闭合差

double闭合差X = AX + 坐标增量X和 - BX;

double闭合差Y = AY + 坐标增量Y和 - BY;

//计算单位长度改正数

double X坐标单位长度改正数 = -闭合差X / 坐标增量X绝对值和;

double Y坐标单位长度改正数 = -闭合差Y / 坐标增量Y绝对值和;

//计算导线相对精度

int f = (int)(水平距离和 / Math.Sqrt(闭合差X * 闭合差X + 闭合差Y * 闭合差Y));

Console.WriteLine("导线的相对精度为1/{0}",f);

//计算每点坐标

double X = AX;

double Y = AY;

double H = HA;

for (int j = 0; j < 坐标增量X集合.Count; j++)

{

H += 高差集合[j] + 单位长度改正数 * 水平距离平方集合[j];

X += 坐标增量X集合[j] + X坐标单位长度改正数 * Math.Abs(坐标增量X集合[j]); Y += 坐标增量Y集合[j] + Y坐标单位长度改正数 * Math.Abs(坐标增量Y集合[j]);

Console.WriteLine("第{0}点的X坐标={1},Y坐标={2},高程H={3}",j+2,X,Y,H);

}

Console.WriteLine("最后一个点的坐标和高程应该与B点的坐标和高程相同!");

}

}

class导线

{

//将ddd.mmss转为弧度

static public double DEG(double ang)

{

int fuhao = (int)(ang / Math.Abs(ang));

ang = Math.Abs(ang);

int d = (int)ang;

int m = ((int)(ang * 100)) - d * 100;

double s = ang * 10000 - m * 100 - d * 10000;

return ((d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI;

}

//计算方位角,返回弧度值

public static double方位角(double x1, double y1, double x2, double y2)

{

double deltaX = x2 - x1;

double deltaY = y2 - y1;

double angle = Math.PI * 0.5;

if (Math.Abs(deltaX) > 0.000000001)

{

angle = Math.Atan2(deltaY, deltaX);

}

C语言程序设计 入门源代码代码集合

#include <> void print_star(void) { printf("*****************\n"); } void print_welcome(void) { printf("C language,welcome!\n"); } void main() { print_star(); print_welcome(); print_star(); getchar(); } 演示2 #include "" int sum(int i,int j) { return(i + j); } void main() { int n1,n2; printf("input 2 numbers:\n"); scanf("%d%d",&n1,&n2); printf("the sum = %d\n",sum(n1,n2)); getchar(); } 演示3 #include "" int maxnum(int,int,int); main() { int a,b,c; printf("Please enter 3 numbers:\n"); scanf("%d,%d,%d",&a,&b,&c); printf("Maxnum is %d\n",maxnum(a,b,c));

} int maxnum(int x,int y,int z) { int max=x; if(y>max) max = y; if(z>max) max = z; return max; } 演示4 #include <> int s1(int n) { int j,s; s=0; for(j=1;j<=n;j++) s=s+j; return s; } int sum(int n) { int i,s=0; for(i=1;i<=n;i++) s=s+s1(i); return s; } void main() { int n; printf("n:"); scanf("%d",&n); printf("s=%d\n",sum(n)); } 演示5

C++程序设计源代码大全

S2_1 #include using namespace std; void main() { float a,b,c; cout<<"input a b c\n"; cin>>a>>b>>c; if((a+b using namespace std; void main() { int year; cout<<"Input year: "; cin>>year; if((year%4==0&&year%100!=0)||(year% 400==0)) cout< using namespace std; void main() { float a1, a2; char oper; float result; int flag=0; cout<<"请输入简单的运算式:\n"; cin>>a1>>oper>>a2; switch(oper) { case'+': result=a1+a2; break; case'-': result=a1-a2; break; case'*': result=a1*a2; break; default: cout<<"输入错误的运算符!\n"; flag=1; } if(flag==0) cout< #include using namespace std; void main() { float a,b,c,x1,x2; cout<<"请输入方程的3个系数a b c \n"; cin>>a>>b>>c; x1=(-b+sqrt(b*b-4*a*c))/2*a; x2=(-b-sqrt(b*b-4*a*c))/2*a; if(b*b-4*a*c<0) cout<<"无实根!\n"; else cout<<"x1="<

网络程序设计实验报告-Winsock编程接口实验

网络程序设计 实验报告 实验名称: Winsock编程接口实验 实验类型:____验证型实验_____ __ 指导教师:______________________ 专业班级:_____________________ 姓名:_______________________ 学号:_____________________ 电子邮件:____________ 实验地点:______ _______ 实验日期2013 年 3 月29 日 实验成绩:__________________________

一、实验目的 ●掌握Winsock的启动和初始化; ●掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。 二、实验设计 由实验内容可以知道: 1、编写程序能同时实现对多个域名的解析。比如在控制台输入:getip https://www.360docs.net/doc/f811915324.html, https://www.360docs.net/doc/f811915324.html,,能输出https://www.360docs.net/doc/f811915324.html,和https://www.360docs.net/doc/f811915324.html,对应的IP地址列表。 2、编写程序获取并输出本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC 地址。 首先要了解一些基本的知识gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的基本知识gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。 之后要根据内容画出函数流程图

三、实验过程(包含实验结果) 1.在实验过程中调用GetAdaptersInfo()时,出现了undeclared identifier的报错,原因是没有包含其头文件,之后进行一些修改解决了问题. 2.实验结果 3.选择查看本机信息 四、讨论与分析 1.Winsock初始化的作用是什么? 答:使用winsock初始化可加载winsock编程的动态链接库。

进程调度程序设计报告(源代码)资料

课程设计报告 题 目 进程调度程序设计 课 程 名 称 操作系统课程设计 院 部 名 称 计算机工程学院 专 业 计算机科学与技术 班 级 13计算机科学与技术(单)(1) 学 生 姓 名 周敏健 学 号 1305201013 课程设计地点 A104 课程设计学时 20学时 指 导 教 师 何 健 金陵科技学院教务处制 成绩

目录 摘要 (3) 一、课程设计的目的和要求 (4) 二、系统需求分析 (4) 三、总体设计 (5) 四、详细设计 (6) 五、测试、调试过程 (9) 六、结论与体会 (11) 七、参考文献 (12) 附录:源程序 (12)

课程设计课题 进程调度程序设计 摘要 在多道系统中,对批处理作业需要进行作业调度。作业调度是在资源满足的条件下,将处于就绪状态的作业调入内存,同时生成与作业相对应的进程,并未这些进程提供所需要的资源。进程调度需要根据进程控制块(PCB)中的信息,检查系统是否满足进程的资源需求。只有在满足进程的资源需求的情况下,系统才能进行进程调度。下面是几种常见的作业调度算法:先来先服务(FCFS)、优先算法、轮换算法、短作业优先算法以及最高响应比优先法等,本文将对前两种算法进行详细的介绍。 关键词:进程调度,优先级,FCFS,PCB,作业,资源

一、课程设计的目的和要求 1、目的 进程调度是处理机管理的核心内容。本设计要求用C语言编写和调试一个简单的进程调度程序。通过设计本可以加深理解有关进程控制块、进程队列的概念,并体会和了解最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法的具体实施办法。 2、要求 1)进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。 2)每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 3)进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。 4)每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 5)就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。 6)每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。 7)重复以上过程,直到所要进程都完成为止。 二、系统需求分析 编写一个模拟进程调度的程序,将每个进程抽象成一个进程控制块PCB,PCB 用一个结构体描述。 采用两种不同的调度算法来实现功能,主要有如下几大功能模块组成。 (1)创建优先数PCB模块

网络编程实验报告

实验一TCP Socket API程序设计 一、预备知识 1.网络编程基本概念 网络上的计算机间的通讯,实质上是网络中不同主机上的程序之间的通讯。在互联网中使用IP地址来标识不同的主机,在网络协议中使用端口号来标识主机上不同进程,即使用(IP地址,端口号)二元组。 套接字(Socket)用于描述IP地址和端口,是一个通信链的句柄,通信时一个网络程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡相连的传输介质将这段信息发送到另一台主机的Socket中,以供其他程序使用。 图1-1 TCP通信流程 2.TCP通信流程 TCP程序是面向连接的,程序运行后,服务器一直处于监听状态,客户端与

服务器通信之前必须首先发起连接请求,由服务器接收请求并在双方之间建立连接后才可以互相通信。 二、实验目的 1.了解Winsock API编程原理; 2.掌握TCP Socket程序的编写; 3.了解C/S模式的特点; 4.学会解决实验中遇到的问题。 三、实验任务 使用Winsock API相关类实现TCP Socket通信程序,并能成功运行。 四、实验环境及工具 1. Windows2000/XP/7 2. Visual C++开发平台 3. Visual Studio2010 五、实验内容和步骤 参照《Visual C++网络编程教程》书中81页,TCP Socket API程序设计。 连接: void CChatClientDlg::OnConnect() { WSADATA wsd; //WSADATA结构 WSAStartup(MAKEWORD(2,2),&wsd); //加载协议,使用Winsock 2.2版 m_client = socket(AF_INET,SOCK_STREAM,0); //创建流式套接字 //服务器地址 sockaddr_in serveraddr; UpdateData(); if(ServerIP.IsBlank()) { AfxMessageBox("请指定服务器IP!"); return; } if(sPort.IsEmpty()) { AfxMessageBox("请指定端口!"); return; }

C语言程序设计报告(菜单+源码+测试)

一:系统功能 基本功能: 图书的录入,删除,查找,和导入导出等。 图书属性: 书号,书名,第一作者,版次,出版年等。 菜单功能: 1.Input Records(输入若干条记录) 从键盘一次输入一本书的信息,存放到结构体数组中,然后显示。 提示信息,确认是否输入下一条记录。 2.Display All Records(显示所有记录) 按顺序显示所有记录,每屏显示10条记录,按键继续显示下一屏。 3.Delete a Record(按书名查找,删除一本书) 输入待删除书的书名,显示该书名的所有书目,提示输入待删除书目的书号,提示是否删除,确认后,删除该书。 4.Sort(排序) 以书名为升序排列数组5.Insert a record(插入一条记录) 以书名为序排列的数组中插入一条记录,插入后,数组仍然有序。 输出插入成功后的信息。 6.Query(查找并显示一个记录) 输入书名,查找并显示包含该书名的所有图书信息 7.Add Records from a Text File(从文件读入图书信息到结构体数 组中) 用户可事先建立一个文本文件Dictory.txt。存放所有图书信息,文件格式如下: 2 1182 高等数学刘浩荣 5 同济大学出版社 2013 7300 物理化学王德明 2 化学工业出版社 2015 8.Write to a Text File 将数组中的全部记录写入文件Records.txt中,要求格式与Dictory.txt相同。 0.Quit(退出图书管理系统) 新增加菜单功能: 9.Change a record

修改某一条记录的值 a. Menu 显示菜单 b. Clear Screen 清屏 c. Pause 按暂停,按任意键继续 二:数据结构 Typedef struct { char ISBN[10];//书号 char book[30];//书名 char author[20];//作者 Int edition;//版本号 char press[50];//出版社名 int year;//出版年 }Bookinfo; 三:函数调用关系

算法程序设计实验报告

程序设计》课程设计 姓名:王 学号:20100034 班级:软件工程00 班 指导教师:王会青 成绩: 2010年 6 月 实验一.构造可以使n 个城市连接的最小生成树 专业:__软件工程___ 班级:__软件姓名:_王___ 学号:_20100034 完成日期:_2010/6/26 ________ 一、【问题描述】给定一个地区的n 个城市间的距离网,用Prim 算法或Kruskal 算法建立最小生成树,并计算得到的最小生成树的代价。 1 城市间的道路网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道

路,则将相应边的权值设为自己定义的无穷大值。 2 显示出城市间道路网的邻接矩阵。 3 最小生成树中包括的边及其权值,并显示得到的最小生成树的总代价。 4 输入城市数、道路数→输入城市名→输入道路信息→执行Kruskal 算法→执行Prim 算法→输出最小生成树 二、【问题分析】 1. 抽象数据类型结构体数组的定义: #ifnd ef ADJACENCYMATRIXED// 防止该头文件被重复引用 #define ADJACENCYMATRIXED // 而引起的数据重复定义 #define INFINITY 32767 // 最大值∞ #define MAX_VERTEX_NUM 20 // 最大顶点个数 typedef int VRType; // 权值,即边的值 typedef char InfoType; // 附加信息的类型,后面使用时会定义成一个指针 typedef char VertexType[MAX_VERTEX_NUM]; // 顶点类型 typedef enum {DG=1, DN, UDG, UDN} GraphKind; //{ 有向图,有向网,无向图,无向网} typedef struct ArcCell { VRType adj; //VRType 是顶点关系类型。对无权图,用1 或0 表示相邻否;对带权图,则为权值类型。 InfoType*info; // 该弧关系信息的指针

网络编程实验报告

网络编程技术实验报告 一实验目的: 网络编程技术是计算机科学与技术专业、网络工程专业、软件工程专业的一门专业基础课程。本课程以Java技术为主讲授,Java语言是当前最流行的网络编程语言。本课程是一门实用性和综合运用性都很强的课程,实践教学环节是教学过程中必不可少的重要内容。通过实验,让学生熟悉JDK中的主要内容,掌握用JDK调试和运行程序的方法,掌握网络编程的基本思想和开发方法、面向对象编程的思想,JA V A中的基本方法和技术,能够熟练使用JA V A设计、编写程序,特别是基于TCP/IP的Socket 编程,并能运用这些知识方法完成C/S和B/S结构程序的设计工作。通过实验,提高学生使用Java语言程序设计开发的能力,提高应用面向对象技术分析和解决实际问题的能力,并在此基础上强化学生的实践意识、提高其分析问题、解决问题的能力以及动手能力和创新能力。 二实验要求 要求学生熟悉JDK中的主要内容,掌握用JDK调试和运行程序的方法,掌握网络编程的基本思想和开发方法、面向对象编程的思想,JAVA中的基本方法和技术,能够熟练使用JAVA设计、编写程序,特别是基于TCP/IP的Socket编程,并能运用这些知识方法完成C/S和B/S结构程序的设计工作。要注意培养学生良好的编程习惯,自始至终贯彻课程中所介绍的程序设计风格。为保证尽量在统一安排的上机时间内完成程序设计任务,学生应事先做问题分析,并做静态检查。学生应记录实验中所遇到的问题,并写出详细的实验报告。课前准备上机程序,上机认真调试,课后撰写实验报告,实验报告包括实验目的、实验内容、源程序、实验结果及分析。

. 实验一java基本语法 实验目的: 了解Java的数据类型,掌握各种变量的声明方式,理解运算符的优先级,掌握Java基本数据类型、运算符与表达式,掌握顺序结构、选择结构和循环结构语法的程序设计方法。 实验要求: 1、编写一个声明Java不同数据类型变量的程序。 2、编写使用不同选择结构的程序。 3、编写使用不同循环结构结构的程序。 实验内容: 1、编写一个声明Java不同数据类型变量的程序。 public class DataTypes { public static void main(String args[]) { byte b=127; short s=32767; int i=2147483647; long l=9223372036l;//为什么long表示的数比Int还小? char c='c'; float f=1.23F; double d=0.9E-3; boolean bool=true; System.out.println(" b="+b); System.out.println(" s="+s); System.out.println(" i="+i); System.out.println(" l="+l); System.out.println(" c="+c); System.out.println(" f="+f); System.out.println(" d="+d); System.out.println(" bool="+bool); }

C语言程序设计-入门源代码代码集合

演示1 #include void print_star(void) { printf("*****************\n"); } void print_welcome(void) { printf("C language,welcome!\n"); } void main() { print_star(); print_welcome(); print_star(); getchar(); } 演示2 #include "stdio.h" int sum(int i,int j) { return(i + j); } void main() { int n1,n2; printf("input 2 numbers:\n"); scanf("%d%d",&n1,&n2); printf("the sum = %d\n",sum(n1,n2)); getchar(); } 演示3 #include "stdio.h" int maxnum(int,int,int); main() { int a,b,c; printf("Please enter 3 numbers:\n"); scanf("%d,%d,%d",&a,&b,&c); printf("Maxnum is %d\n",maxnum(a,b,c));

return 0; } int maxnum(int x,int y,int z) { int max=x; if(y>max) max = y; if(z>max) max = z; return max; } 演示4 #include int s1(int n) { int j,s; s=0; for(j=1;j<=n;j++) s=s+j; return s; } int sum(int n) { int i,s=0; for(i=1;i<=n;i++) s=s+s1(i); return s; } void main() { int n; printf("n:"); scanf("%d",&n); printf("s=%d\n",sum(n)); } 演示5

网络编程实验报告

【实验目的】 掌握基于多线程并发服务器的基本设计框架和实现方法。 【实验性质】 综合性实验 【实验器材与所需软件】 计算机、交换机、windows操作系统、java集成开发环境 【实验学时】 8学时 【实验内容】 实现一个多线程并发服务器(服务器功能自选),要求该服务器可以体现出同时为多个客户端服务的特性。 【实验过程与步骤】 实验设计并实现了一个基于多线程并发服务器的网络聊天室工具。 1,需求分析: 工具采用了Client/Server结构,将聊天室划分为两个子程序:客户端子程序、服务器端子程序。 ●客户端程序: 实现客户端与服务器端进行连接,并可与服务器端进行实时通讯。 ●服务器端: 实现建立与多个客户端程序之间的连接,管理连接并能够通过多线程技术同时与多个客户端进行实时通讯。 2,系统设计: 系统的设计中,客户端与服务器端的连接,通过TCP/IP网络建立,并依托Socket进行实时通讯。系统中,各个模块之间的关系如下图所示:

上图中,显示同一服务器,通过网络可以同时与多个客户端程序建立连接并实现实时通讯功能,通讯流程如下图所示: 根据图示,客户端与服务器之间通过Socket()进行实时通讯,通讯步骤是:服务器监听、客户端发出请求、服务器接受、建立连接、交互通讯、关闭连接。另外,由于聊天室工具必须实现多客户端同时连接通讯的要求,因此,在服务器端设计时考虑采用多线程技术,每个服务器拥有多个服务线程,每个线程负责与一个客户端进行连接通讯,从而达到一个服务器同时与多个客户端并发通讯的效果。 3,系统实现: 在网络聊天室的最终实现时,设计服务器类、服务器线程类、客户端类以及系统界面类: ●服务器类 Class Server: 主要负责管理系统中的服务器线程,通过线程管理与客户端之间的连接及通讯,是服务器的主要管理端。 ●服务器线程类 Class ServerThread: 线程类中,实现了具体的服务器与客户端之间一一对应的连接关系,并通过Socket与客户端进行实时通讯。 ●客户端类 Class Client:

网络编程实验报告

网络编程实验报告

网络编程 课程设计报告 题目: 基于Linux网络聊天室的设计姓名: 陈佳悦陈雄兰 学院: 信息科学技术学院 专业: 网络工程 班级: 网络工程102 学号: 19310213 19310214 指导教师: 薛卫职称:副教授

基于Linux网络聊天室的设计 摘要:本课程设计是在Linux环境下基于Socket进行开发的。系统服务器端和客户端组成。服务端程序通过共享存储区存储聊天数据,并发送给每个连接的客户端。通过多路复用的子进程实现服务端与多个客户端之间的数据发送与接收。可以在单机上开辟两个窗口分别运行客户、服务器的程序。本方案经gcc 调试器调试成功,可以在机网络聊天中使用。 关键词:网络聊天;linux ;socket 1.相关概念及技术 1.1 网络套接字编程 1.1.1套接字基本概念 套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。 1.1.2 套接字工作原理 要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

C++程序设计 报告 及源代码 --学生选课系统

摘要 C语言是在国内外广泛使用的一种计算机语言。C语言简洁紧凑、灵活方便、运算符丰富、适用范围大、可移植性好。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。 本学生选课系统主要利用C语言的数组指针和文件操作能力设计开发一个小型的选课系统,至少具有如下功能:查看课程信息、查找课程信息、增加课程信息、修改课程信息、选课等功能。 本文主要对学生选课系统来进行说明。本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较深入的掌握。还包括指针、函数、结构体、文件等C语言的基础知识的运用。 关键字:源代码、指针、调用函数、流程图、结构、数组。

目录 第一章设计题目的内容、任务及具体要求 (1) 第二章总体设计思路 (2) 2.1程序功能 (2) 2.2模块关系 (2) 2.3总体框图 (3) 第三章功能模块的具体设计 (4) 3.1主函数模块的设计 (4) 3.2显示课程信息模块的设计 (7) 3.3查询模块模块的设计 (8) 3.4增加模块的设计 (9) 3.5删除模块模块的设计 (13) 3.6修改模块模块的设计 (14) 3.7选课模块的设计 (15) 3.8显示选课情况模块的设计 (17) 第四章功能模块的调试及测试 (18) 4.1登陆界面和主菜单界面的显示 (18) 4.2查询所有课程信息的显示结果 (19) 4.3查询单个课程信息的显示结果 (19) 4.4添加课程信息的显示结果 (20) 4.5删除和修改课程信息的显示结果 (20) 4.6选课的显示结果 (21) 4.7 查询选课情况的显示结果 (22) 4.8退出 (22) 总结 (23) 致谢 (24) 参考资料: (25) 附程序清单 (26)

安卓实验报告报告

《Android网络程序设计》课程期末作品设计报告 学号:130705222 姓名:廖梓茗 班级:13信息 2 班 学院:电子信息学院 2016年6 月

1 主要界面截图 分组界面全部赛程界面 球队赛程界面

“我的”界面--未登录“我的”界面--已登录 登陆界面

修改密码界面

2 请结合本项目的开发,回答以下问题 2.1 如何在ViewPager中放入多个Fragment?如何为每个Fragment设置标签?介绍一下管理ViewPager的适配器。 给viewpager addOnPageChangerListener 同时绑定fragment数据源 2.2 适配器是什么?以本项目为例介绍一个列表适配器的实现? Adapter是控件与数据之间的桥梁,控制控件什么时候如何显示数据 项目中的listview的adapter全继承BaseAdapter,自由度高。 其中adapter 的getView方法主要控制listview的每个item显示什么视图view 2.3 如何访问网络接口?如何获得网络接口返回的数据?以本项目为例介绍一个网络接口的访问。 本项目访问网络,主要使用HttpClient,调用AsyncHttpClient的get或post发送 一个请求,在回调接口中处理返回数据。

例如获取分组数据接口,先获取AsyncHttpClient对象 AsyncHttpClient client = new AsyncHttpClent(); 再调用client对象的post或是get方法 Client.get(url,new TextHttpResponseHandler()); 在回调函数onSuccess中处理返回信息 2.4 如何解析json数据?以本项目为例介绍一个接口返回的json数据的解析过程。 json数据解析,主要使用Gson或是FastJson解析 FastJson: JSON.priseObjest()或是JSON.priseArray()直接将json映射成list或是object 3 请回答以下问题 3.1 当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity,应使用什么方法?其有哪些参数,分别表示什么? 在新Activity中如何将数据返回启动它的Activity? 原Activity如何用什么方法获取返回的数据?其有哪些参数,分别表示什么? startActivityForResult(intent, requestCode); setResult(intent); 通过onActivityResult()函数中的Intent参数中获取传回的数据 3.2 Activity和Fragment的生命周期状态各有哪些?状态之间如何变换?状态变换时会执行哪些方法?

C语言程序设计医院信息管理系统附源代码样本

专业设计报告 课程名称: C 语言程序设计 课题名称: 医院信息管理系统 专业班别: 12本计算机科学与技术二班姓名: 学号: 指导教师: 设计日期: -5-25

教师评语: 成绩评定: 指导教师签名: 日期: 年月日 课程设计题目医院信息管理程序

作者姓名: 同组成员: 摘要利用结构体存储每个病人的信息和每种药品的信息, 并使用链表存储全部病人的信息; 能完成对医院内所有病人信息的注册、查询、删除和修改等操作, 同时又能对药房内库存的药品进行查询; 能够将链表中的病人信息保存在文件中, 而且能够对文件中的病人信息进行读取与显示1.专业设计目的 1、掌握链表的操作, 包括链表节点的创立、释放还有链表的遍历 2、掌握对二进制文件的创立、增添等基本操作。 3、熟悉C语言函数的使用方法, 学会模块化处理问题以及多个源文件的处理方式 2.设计基本要求( 1、使用结构体来存储病人的信息, 结构体中包括病的id号码、姓名、病历以及消费信息, 并用链表将所有病人信息整合。 2、用文件来存储链表的信息以便下次再使用该程序时载入病人信息 3、能够实现病人信息的注册、病人信息的查询、病人消费统计、保存链表信息、载入链表信息、查询库存等几项功能。 4、要求用四个源文件main.c、link.c、find.c、save_load.c 5、系统完成后应实现类似下面所示界面

3、算法分析 1、数据结构 设计链表中的一个节点存储一个病人的信息, 使用下面的结构体类型定义: struct patient{ char id[10]; char name[10]; char casehist[200]; int cost[3]; int transfusion; int surgery; struct patient *next; };

Web应用程序设计综合实验报告解析

Web应用程序设计综合实验报告题目:网上购物系统 学生姓名: XXX 学号: XXXXXXXXXXX 院(系): XXXXXXX 专业: XXXXXXXXXX 指导教师: XXXXXXXXXX 2014 年 7月 6 日

1、选题背景 随着计算机技术的发展和网络人口的增加,网络世界也越来越广播,也越来越来越丰富,网上商城已经成为网上购物的一股潮流。互联网的跨地域性和可交互性使其在与传统媒体行业和传统贸易行业的竞争中是具有不可抗拒的优势。在忙碌丰富的社会生活中,人们开始追求足不出户就能买到心仪的商品,是越来越多的上网爱好者实现购物的一种方式,对于企业来说,网络交易能大大提高交易速度、节约成本。在这种形势下,传统的依靠管理人员人工传递信息和数据的管理方式就无法满足企业日益增长的业务需求,因而开发了这样一个具有前台后台的网上商城系统,以满足购物者和企业的需求。 因此这次毕业设计题目就以目前现有的网上商城系统为研究对象,研究一般的网上商城的业务流程,猜测其各个功能模块及其组合、连接方式,并分析其具体的实现方式,最后使用Java加web服务器和数据库完成一个网上商城系统的主要功能模块。通过这样一个设计,可以提高自己Java编程的水准,也练习了怎样构建一个完整的系统,从系统的需求分析到设计,直至编码、测试并运行,熟悉并掌握一个完整的Web开发流程,为今后工作打下基础。 1.1设计任务 从以下几个方面实现网络商城的基本功能: 1、用户部分: (1)用户的登录和注册,用户必须注册才能购物,注册时系统会对注册信息进行验证,进入系统或是结账时,用户可以进行登录,登录时,如果密码错误,系统会进行验证并提示错误。 (2)浏览商品,实现用户可以在网络商店中随意浏览商品,商品按类别分类,方便用户查找不同类别的商品 (3)购物车管理,能实现添加商品、删除商品、更新商品的功能。 (4)生成订单,查看购物车后单击下一步则生成订单信息表,一旦提交订单,则购物车就不能被改变。 2、管理员部分:

C语言程序设计入门源代码代码集合

#include void print_star(void) { printf("*****************\n"); } void print_welcome(void) { printf("C language,welcome!\n"); } void main() { print_star(); print_welcome(); print_star(); getchar(); } 演示2 #include "stdio.h" int sum(int i,int j) { return(i + j); } void main() { int n1,n2; printf("input 2 numbers:\n"); scanf("%d%d",&n1,&n2); printf("the sum = %d\n",sum(n1,n2)); getchar(); } 演示3 #include "stdio.h" int maxnum(int,int,int); main() { int a,b,c; printf("Please enter 3 numbers:\n"); scanf("%d,%d,%d",&a,&b,&c); printf("Maxnum is %d\n",maxnum(a,b,c));

} int maxnum(int x,int y,int z) { int max=x; if(y>max) max = y; if(z>max) max = z; return max; } 演示4 #include int s1(int n) { int j,s; s=0; for(j=1;j<=n;j++) s=s+j; return s; } int sum(int n) { int i,s=0; for(i=1;i<=n;i++) s=s+s1(i); return s; } void main() { int n; printf("n:"); scanf("%d",&n); printf("s=%d\n",sum(n)); } 演示5

C语言程序设计入门源代码代码集合

演示1 #include voidprint_star(void) { printf("*****************\n"); } voidprint_welcome(void) { printf("Clanguage,welcome!\n"); } voidmain() { print_star(); print_welcome(); print_star(); getchar(); } 演示2 #include"stdio.h" intsum(inti,intj) { return(i+j); } voidmain() { intn1,n2; printf("input2numbers:\n"); scanf("%d%d",&n1,&n2); printf("thesum=%d\n",sum(n1,n2)); getchar(); } 演示3 #include"stdio.h" intmaxnum(int,int,int); main() { inta,b,c; printf("Pleaseenter3numbers:\n"); scanf("%d,%d,%d",&a,&b,&c); printf("Maxnumis%d\n",maxnum(a,b,c));

return0; } intmaxnum(intx,inty,intz) { intmax=x; if(y>max) max=y; if(z>max) max=z; returnmax; } 演示4 #include ints1(intn) { intj,s; s=0; for(j=1;j<=n;j++) s=s+j; returns; } intsum(intn) { inti,s=0; for(i=1;i<=n;i++) s=s+s1(i); returns; } voidmain() { intn; printf("n:"); scanf("%d",&n); printf("s=%d\n",sum(n)); } 演示5

C语言程序设计实验报告实验

C语言程序设计实验报 告实验 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师

实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 一、实验目的: 1.了解在Visual C++ 环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 环境下输入并运行下面的程序: #include <> int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 环境下输入下面的程序(有语法错误),编译、连接、调试该程 序,直至程序无语法错误,然后运行程序,并观察分析运行结果。 #include <> int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0;

} 四、实验结果: 1. 运行结果(或截图): This is a C program. Press any key to continue 2. (1) 改正后的源程序: #include <> int main( ) { int a,b,sum; a=3; b=4; sum=a+b; printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图): 3+4=7 五、思考题: 1. 一个C程序上机的步骤有哪些 答:上级输入与编辑源程序—对原程序进行编译–与库函数链接–运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分 答:一个函数包括两部分:分别为函数头或函数首部和函数体。 成绩指导教师签名 实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++

面向对象程序设计的源代码

注意:必须在你的电脑里建一个文档来存储学生信息,我是再d盘建了一个stu.txt的文档,所以你只要在d 盘建一个一样的就可以了。如果你要改变存储路径,就必须把程序中的d:\\stu.txt全都改了 #include #include #include #include using namespace std; void menu() { system("cls"); cout<<"******************************************"<

相关文档
最新文档