地大Java上机作业_第1页
地大Java上机作业_第2页
地大Java上机作业_第3页
地大Java上机作业_第4页
地大Java上机作业_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

作业1

1)封装一个被称为日期Date类,用这个类存储年、月、日。

Show。成员函数显示某日期对象的信息,格式为日,月,年。

可运行在日期上加1天的操作成员函数add()

设置日期

2)定义一个People类,用来描述人的属性和行为,学生包括姓名、籍贯、年龄。

用Display函数显示人的信息。然后定义一个从People类继承的子类Student,

表示学生,包括学号、年级排名,和另一个从People类继承的子类Master,表

示学生的导师信息,包括职工号、研究方向、学生信息,并能够显示导师的信息。

要求包括构造函数。

3)写一个多态示例。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceJAVA_1

(一

classProgram

(

staticvoidMain(string[]args)

(

Console.WriteLine("输入当前年月日:”);

intx=Convert.Tolnt32(Console.ReadLine());

inty=Convert.Tolnt32(Console.ReadLine());

intz=Convert.Tolnt32(Console.ReadLine());

Dateda=newDate(x,y,z);

da.show();

da.add();

Console.WriteLine("日期加一天后:");

da.show();

Peoplepl=newPeople("呆呆","地大",19);

pl.Display();

Studentsi=newStudent("妹子","湖大",20);

si.SetStudent(2015,2);

si.Display();

Masterml=newMaster("王老师","湖北武汉",30);

ml.SetMaster("ABC123",".NET","5个〃);

ml.Display();

}

}

namespaceJAVA_1

(-

classStudent:People

(

publicintSID;

publicintGradeOrder;

publicStudent(stringname,stringaddress,intage)

:base(name,address,age)

publicvoidSetStudent(intsid,intorder)

(

this.SID=sid;

this.GradeOrder=order;

)

newpublicvoidDisplay()

{

Console.WriteLine("学生信息为:”);

base.Display();

Console.WriteLine(“学号:"+this.SID);

Console.WriteLine("年级排名:"+

this.GradeOrder);

}

}

)

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceJAVA_1

classPeople

publicPeople(stringname,stringaddress,intage)

{

this.Name=name;

this.Address=address;

this.Age=age;

}

publicstringName;

publicstringAddress;

publicintAge;

publicvoidDisplay()

(

Console.WriteLine("个人信息为:”);

Console.WriteLine("姓名:"+this.Name);

Console.WriteLine(“籍贯:"+this.Address);

Console.WriteLine("年龄:"+this.Age);

}

}

}

namespaceJAVA_1

(一

classMaster:People

(

privatestringMID;

privatestringSerDir;

privatestringStudentinfo;

publicMaster(stringname,stringaddress,intage)

:base(name,address,age)

(

}

publicvoidSetMaster(stringmid,stringserdir,

stringstudentinfo)

(

this.MID=mid;

this.SerDir=serdir;

this.Studentinfo=studentinfo;

)

newpublicvoidDisplay()

Console.WriteLine("导师信息为:”);

base.Display();

Console.WriteLine("职工号:"+this.MID);

Console.WriteLine("研究方向:"+this.SerDir);

Console.WriteLine("学生信息:”+

this.Studentinfo);

)

}

)

namespaceJAVA_1

(一

classDate

(

publicDate(intx,inty,intz)

(

this.Year=x;

this.Month=y;

this.Day=z;

)

publicintYear;

publicintMonth;

publicintDay;

publicvoidadd()

{

if(this.Day==30)

(

this.Day=1;

if(this.Month==12)

(

this.Month=1;

this.Year++;

}

else

this.Month++;

else

this.Day++;

)

}

publicvoidshow()

Console.WriteLine("日期为:"+this.Day+"日”+

this.Month+“月"+this.Year+“年”);

}

结果显示:

Date.cs

#JAVAJProgr

1J-

ml.SetMaster("ABC123A,"GIS","5个"”

ml.DisplayO;

}

30[

31[]

I32I

作业2

创建有背景的窗体

staticclassProgram

///<summary>

III应用程序的主入口点。

///</summary>

[STAThread]

staticvoidMain()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(newForml());

)

)

)

为JFrame添加一个Panel或者JLabel等其他组件,设置其颜色为

你想要的颜色,然后将其覆盖JFrame窗口即可

结果显示:

作业3

将C++ADO程序部分改写成ADO.NET代码段

ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单

表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。反之,DataSet

可以是多个表的集合。ADO的运作是一种在线方式,这意味着不论是浏览或更新数据都必

须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作

数据的一份幅本,ADO.NET的数据库连接也只有在这段时间需要在线。

由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而

ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型

转换,从而提高了整体性能。。三者整体间的输出结果也大不相同?

1、代码展示

---------------------C++使用ADO方式读取数据库

#include<string>

#include<iostream>

#include<time.h>

#include<windows.h>

namespacestd;

#import"C:\ProgramFiles\Common

Files\System\ado\msadol5.dll"no_namespacerename("EOF""adoEOF")

intmain(intargc,char*argv[])

DWORDstart,end;〃定义程序运行开始时间和结束时间

start=GetTickCount();〃设定开始时间

_ConnectionPtrpConn=NULL;

_RecordsetPtrpRss=NULL;

_variant_ti_code;

_variant_tbeg_date;

_variant_tend_date;

_variant_tsw_total_stock;

_variant_tsw_publish_stock

stringm__str_i_code;

stringm__str_beg_date;

stringm_str_end_date;

stringm__str_total_stock;

stringm__str_publish_stock;

_bstr_tstrConn^strSQL;

HRESULThr;

::CoInitialize(NULL);

〃操作数据库

strConn="driver={SQL

Server};Server=whoami\\mssqlt;DATABASE=kj2006;UID=sa;PWD=sa";

strSQL=Kselect*frommytable

hr=pConn.CreateInstance(_uuidof(Connection));

■(SUCCEEDED(hr))

(

■(pConn->GetState()==adStateClosed)

(

pConn->Open(strConn,n-1);

}

pRss.CreateInstance(_uuidof(Recordset));

■(pRss->GetState()==adStateClosed)

pRss->Open(strSQL?pConn.GetInterfacePtr()^adOpen

Static^adLockOptimistic,,adCmdText);

〃共13893条记录

cout<<"RecordCount="<<pRss->RecordCount<<endl;

〃只遍历,不输出

!pRss->adoEOF)

{

i_code=pRss->GetCollect("point");

beg_date=pRss->GetCollect("address");

end_date=pRss->GetCollect("realdata");

sw_total_stock=pRss->GetCollect("flag");

sw_publish_stock=pRss->GetCollect("sj");

m_str_i_code=(string)(char*)(_bstr_t)i_code;

m_str_beg_date=(string)(char*)(_bstr_t)beg_dat

e;

m_str_end_date=(string)(char*)(__bstr_t)end_dat

e;

m_str__total__stock=(string)(char*)(_bstr_t)sw_t

otal_stock;

m_str_publish_stock=(string)(char*)(_bstr_t)sw

_publish_stock;

pRss->MoveNext();

)

■H(_com_error*e)

{

cout<<e>>ErrorMessage()<<endl;

cout《”数据库连接失败,请检查错误!

pRss->Close();

pRss=NULL;

pConn->Close();

pConn=NULL;

::Collninitialize();

com_error&e)

cout<<e.ErrorMessage()<<endl;

)

〃程序结束,计算程序运行花费时间

end=GetTickCount();

cout<<"usetime:"<<end-start<<endl;

cin.get();

0;

-----------------------------------c#使用ADO.NET方式操作数据库

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Data;

usingSystem.Data.SqlClient;

namespaceConsoleApplicationl

classProgram

{

staticvoidMain(string[]args)

(

//开始时间

DateTimest=DateTime.Now;

try

{

〃数据库链接、数据库命令

SqlConnectioncon=newSqlConnection(@"database=

kj2006;uid=sa;pwd=sa;server=whoami\mssqlt");

SqlCommandcom=newSqlCommand("select*from

run20090910",con);

con.Open();

〃将结果保存到数据集中

SqlDataAdaptersda=newSqlDataAdapter();

sda.SelectCommand=com;

DataSetds=newDataSet();

sda.Fill(ds);

sda.Dispose();

stringpoint=string.Empty^address=string.Empty,

realdata=string.Empty^flag=string.Empty,sj=string.Empty;

Console.WriteLine("count="+ds.Tables[0].Rows.Count);

//遍历,不打印

for(inti=0;i<ds.Tables[0].Rows.Count;i++)

{

point=ds.Tables[0].Rows[i]["point"].ToString();

address=

ds.Tables[0].Rows[i]["address"].ToString();

realdata=

ds.Tables[0].Rows[i]["realdata"].ToString();

flag=ds.Tables[0].Rows[i]["flag"].ToString();

sj=ds.Tables[0].Rows[i]["sj"].ToString();

}

ds.Dispose();

con.Close();

)

catch(Exceptionex)

Console.WriteLine("读取出错:"+ex.Message);

return;

)

//结束时间

DateTimeet=DateTime.Now;

TimeSpants=et.Subtract(st);

Console.WriteLine("timesub="+ts.Seconds+"."+

ts.Milliseconds);

return;

)

}

)

结果显示:

国-ex

教务管理员登录界面

学号/工号II姓名初始密码

[录入学生)[录入酗j]I录入辅导员)

国□X

姓名

录入教务管理员

阖-□X

系统管理员登陆界面

数据维护教务管理员管理

国-□X

学生考勤管理系统

2.3具体修改

针对两者的区别,可以发现,如果需要将C++AD。程序改写成ADO.NET程序,要修改

以下几点:

1、修改头文件。C#在这里是引用的不同的命名空间;

2、将数据库连接里的指针改为数组。

3、修改数据的类型。

作业4

1、一个矩形可以由两个相邻边的长度确定。编写一个类,使之拥有

两个表示边长的整数数据,并提供一个有用的矩形计算方法,如计算

面积,更新矩形边的长度,计算两个矩形的组合面积等。提示:需要

写出具有下列形式的签名的方法:

intcombinedArea(secondRectsr)//thefirstrectis"this"ofcourse

2、重新编写ClockView类。使时钟程序能够以罗马数字形式显示时

间:罗马数字从1到12分别为:l,II,III,IV,V,VI,VII,VIII,IX,X,XI,和Xllo

3、重新编写ClockView类,使之能够以12小时循环形式显示时间,

同时适当地标出AM和PMo

4、重新编写ClockView类,使之能够以十分之一秒的时间精度显示

时间。修改clock类中的main。方法,使之每十分之一秒更新一次时

间显示。Timestamp中的代码可以从Calendar对象中获取十分之一秒

精度的时间:

intmlsec=now.get(java.util.Calendar.MILLISECOND);

tenths=mlsec/100;

提示:需要把tenths声明为Timestamp类型的字段,也需要把时间值

传递给ClockView类,显示当前时间

主要代码:

importjava.awt.*;

importjava.text.DateFormat;

importjava.util.*;

importjavax.swing.*;

〃数字时钟

publicclassClockDemoextendsJFrameimplementsRunnable

(

/**

*

*/

privatestaticfinallongserialVersionUID=IL;

Threadclock;

finalintXpoint=180;

finalintYpoint=180;

finalintR=80;

intxHour=0/yHour=0/xSecond=0/ySecond=0,xMin=0/yMin=0;

publicClockDemo()

(

super("数字时钟。〃调用父类构造函数

setFont(newFont("宋体",Font.BOLD,20));〃设置时钟的显示字体

start。;〃开始进程

setSize(400z400);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}一一

publicvoidstart(){

if(clock==null)〃如果进程为空值

(

clock=newThread(this);〃实例化进程

clock.start();}}

publicvoidrun()〃运行进程

{while(clock!=null){

repaint。;〃调用paint方法重绘界面

try(

Thread.sleep(lOOO);}catch(InterruptedException

ex){ex.printStackTrace();}}}

publicvoidstop()〃停止进程

{clock=null;

}

publicvoidpaint(Graphicsg)〃重载组件的paint方法

{Graphics2Dg2=(Graphics2D)g;

DateFormatdateFormat=

DateFormat.getDatelnstance(DateFormat.FULL);

Calendarnow=newGregorianCalendar。;〃实例化日历对象

now.setTime(newDate());//dateFormat.format(now.getTime())

Stringtimelnfo="";〃输出信息

inthour=now.get(Calendar.HOUR_OF_DAY);//得至U小时数

intminute=now.get(Calendar.MINUTE);

intsecond=now.get(Calendar.SECOND);

if(hour<=12)

timelnfo+="AM"+"0"+hour+":";〃格式化输出

else

timelnfo+="PM"+(hour-12)+":";

if(minute<=9)

timelnfo+="0"+minute+":";

else

timelnfo+=minute+":";

if(second<=9)

timelnfo+="0"+second;

else

timelnfo+=second;

g.setColor(Color.PINK);

Dimensiondim=getSize();

g.fillRect(O,O,dim.width,dim.height);

g.setColor(Color.red);

g.drawString(timelnfo,130,340);

g.setColor(Color.green);

g.drawString(dateFormat.format(now.getTime()),20/60);

g.setColor(Color.white);

g.setFont(newFont("SAN_SERIF",Font.BOLD,15));

forfinti=0,num=12;i<360;i+=6)

{doublealfa=Math.toRadians(i);

intxPos=Xpoint+(int)(R*Math.sin(alfa));

intyPos=Ypoint-(int)(R*Math.cos(alfa));

if(i==O)

if(num%3==0)

g.setColor(Color.red);

else

g.setColor(Color.white);

g.drawString(""+num/xPos-5,yPos+3);

num=(num+l);}

else

(

g.setColor(Color.white);

g.drawString(".",xPos,yPos);

}

}

g.setColor(Color.white);

g.fillOval(Xpoint-4,Ypoint-4,10,10);

xSecond=(int)(Xpoint+(R-10)*Math.sin(second*(2*Math.PI/60)));

ySecond=(int)(Ypoint-(R-10)*Math.cos(second*(2*Math.PI/60)));

g.setColor(Color.red);

g.drawLine(Xpoint/Ypoint,xSecond/ySecond);

xMin=(int)(Xpoint+(R-20)*Math.sin((minute+second/60)*(2*Math.PI/60)

));

yMin=(int)(Ypoint-(R-20)*Math.cos((minute+second/60)*(2*Math.PI/60)

));

g.setColor(Color.red);

g.drawLine(Xpoint/Ypoint,xMin/yMin);

xHour=(int)(Xpoint+(R-30)*Math.sin((hour+minute/60+second/60/60)*(

2*Math.PI/12)));

yHour=(int)(Ypoint-(R-30)*Math.cos((hour+minute/60+second/60/60)*(

2*Math.PI/12)));

g.setColor(Color.red);

g.drawLine(Xpoint,Ypoint,xHour,yHour);

}

publicstaticvoidmain(String[]args)

{newClockDemo();

«c-N<nFHIFK

*-Ce

wcc.c&a?s—<8nvvJSVaS<葭J

.daA

ftSVbItuET&o•;vh?*ls§V4-5:.<Qh¥-V

oeoad--ofwrAondA

tnvr2♦■uasustu-we«na0ma*tmHw

Yemte(^m3b«<Kaasc*5o

-^Xr.MMR-my彼V-

Mtr'~,KeMA$5^-»n£sM&s&£cw3Sr

3K0d92nMa><asT»I»*.okiTMys,■»Qwok

M*eIwXe5MWxf&2r<»u%c-9t9Zok5uM

»kSfaCacx»rMuFs3£jkM

au..a-C3o9.£»-f、rKmr.an*c

-5V^K.<--^C5TuouT£-?ue

>C«faR•^-T*nr-I-=^c3K•

x3Isuc-&isktMhabXss3hMh

5-srISrhKoovK$

3m33snKr£K

spU2TTmyt»)-o

Tx7Roq,ta

-X:rx

-X"cm

wNV、r

—J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论