当前位置:文档之家› VC++6.0下CGridCtrl类的建立与应用

VC++6.0下CGridCtrl类的建立与应用

VC++6.0下CGridCtrl类的建立与应用
VC++6.0下CGridCtrl类的建立与应用

VC++6.0下CGridCtrl类的建立与应用

一、前言

在数据库的操作系统中,经常要遇到对数据库的内容进行显示、

修改、添加和删除等功能,而一般情况下数据库的容量都是很大的,为

此我们通常选用以电子表格的形式来显示数据库的内容,并在其上完成

对数据库的修改、添加和删除,使对数据库的操作既直观又方便;如用

VB5.0下DB Grid Control来实现以上功能是较为方便的,但由于VB的通

信速度和数据的处理速度较慢,特别对于要处理和显示的数据量较大时,

其速度较慢表现得尤为明显,为此我们选用在VC++5.0下用CGridCtrl[1]

类来实现。

二、CGridCtrl类的建立

CGridCtrl[1]类派生于CWnd类,该类主要包含以下八个方面的函数,其

函数形式如下:

classCGridCtrl : public CWnd

{

// 1. CGridCtrl类的构造函数

CGridCtrl(intnRows = 0, intnCols = 0, intnFixedRows = 0, intnFixedCols = 0);

BOOL Create(const RECT&rect, CWnd* parent, UINT nID,

DWORD dwStyle = WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE);

// 2. 表格行、列数方面的函数

BOOL SetRowCount(intnRows); /设置表的行数

BOOL SetColumnCount(intnCols); //设置表的列数

BOOL SetFixedRowCount(intnFixedRows = 1); //设置表的固定行数

BOOL SetFixedColumnCount(intnFixedCols = 1); //设置表的固定列数

intGetFixedRowCount() const; // 取表的固定行数

intGetFixedColumnCount() const; //取表的固定列数

……

// 3. 表格尺寸大小方面的函数

BOOL SetRowHeight(int row, int height); //设置表格单元的高度

BOOL SetColumnWidth(int col, int height); //设置表格单元的宽度

intGetRowHeight(intnRow) const; //获取表格单元的高度

intGetColumnWidth(intnCol) const; //获取表格单元的宽度

void AutoSize(); //对表格单元的高度与宽度进行自动设置

……

// 4. 表格显示与特征方面的函数

void SetImageList(CImageList* pList); //设置列表图标

void SetEditable(BOOL bEditable = TRUE); //设置表格的编辑状态

BOOL SetColumnType(intnCol, intnType); //设置表格的列状态

……

// 5. 颜色方面的函数

void SetTextColor(COLORREF clr); //设置输入表格的文本颜色

void SetTextBkColor(COLORREF clr); //设置可供输入文本的表格颜色

void SetFixedTextColor(COLORREF clr); //设置输入固定表格的文本颜色

void SetFixedBkColor(COLORREF clr); //设置固定表格颜色

……

// 6. 表格信息函数

BOOL SetItem(const GV_ITEM* pItem); // 向表格中输入信息

BOOL SetItemText(intnRow, intnCol, LPCTSTR str); //向某一单元表格中输入文本

BOOL SetItemImage(intnRow, intnCol, intiImage); //在某一单元表格中设置图标

……

// 7. 编辑方面的函数

virtual void OnEditCell(intnRow, intnCol, UINT nChar) //开始对表格进行编辑

virtual void OnEndEditCell(intnRow, intnCol, CStringstr) //结束对表格编辑

……

// 8. 表格打印函数

void Print(); //打印表格

……

}

CGridCtrl[1]类的构造函数形式如下:

CGridCtrl::CGridCtrl(intnRows, intnCols, intnFixedRows, intnFixedCols) {

m_crWindowText= ::GetSysColor(COLOR_WINDOWTEXT);

m_crWindowColour= ::GetSysColor(COLOR_WINDOW);

m_cr3DFace = ::GetSysColor(COLOR_3DFACE);

m_nRows = 0; //初始电子表格的行数

m_nCols = 0; //初始电子表格的列数

m_nFixedRows = 0; //初始化固定表格的行数

m_nFixedCols = 0; //初始化固定表格的列数

m_bEditable = TRUE; //初始化表格为可编辑状态……

//初始化设置表格的行列数

SetRowCount(nRows);

SetColumnCount(nCols);

SetFixedRowCount(nFixedRows);

SetFixedColumnCount(nFixedCols);

// 初始化表格的背景颜色及输入表格的文本颜色

SetTextColor(m_crWindowText);

SetTextBkColor(m_crWindowColour);

SetFixedTextColor(m_crWindowText);

SetFixedBkColor(m_cr3DFace);

…… }

对表格中所输入信息属性的描述,是通过定义一结构体函数来实现,该结构体函数形式如下:

typedefstruct _GV_ITEM {

introw,col; // 输入信息的位置

UINT mask; //输入信息的灰度值

UINT state; // 表格单元的状态

UINT nFormat; // 信息的输入形式

CStringszText; // 输入表格单元的文本

} GV_ITEM;

将CGridCtrl类与以下类结合起来,即可构造成在其上可进行编辑和修改的电子表格,这些类分别为:

1.用于单元表格范围的两个类:CCellRange[2]类和CCellID[3]类;

2.单元表格状态属性的类:CGridCell[4]类;

3.对表格进行编辑的两个类:CInplaceEdit[5]类和CInplaceList[6]类;

三、CGridCtrl类的应用

1.CGridCtrl类实现对数据库内容的显示

在我们建立的一单文档界面应用程序(MyGridCtrlTest)之上,

加上CGridCtrl[1]类,再结合CCellRange[2]类、CCellID[3]类、CGridCell[4] 类、CInplaceEdit[5]类、CInplaceList[6]类以及用于数据库读写的文件,即可在CMyGridCtrlTestView类的OnDraw()函数将Main.mdb数据库中的工资表以

电子表格的形式显示出来,如图1,

图1 在单文档的界面上以电子表格形式对一工资表的显示

在MyGridCtrlTestView.h中,我们将CGridCtrlEx类(该类为CGriCtrl类的派生)嵌入到CMyGridCtrlTestView类中,其形式如下:

classCMyGridCtrlTestView : public CView

{

classCGridEx : public CGridCtrl

{

// Override this function to fill InPlaceListBoxes voidFillListItems(intnCol, LPARAM cltList);

……

};

public:

CDemo_ui_devstudioDoc* GetDocument();

CGridExm_Grid;

CSizem_OldSize;

int *Iarray;

CString *Csarray;

CImageListm_ImageList;

……

public:

virtual void OnDraw(CDC* pDC); // overridden to draw this view

……

protected:

afx_msg void OnGridCtrlDelete(); //对表格进行删除的函数

afx_msg void OnGridCtrlPrint(); //对表格进行打印的函数

……

};

在CMyGridCtrlTestView类的OnDraw()函数中,我们实现对工资表的电子表格显示,该函数的形式如下:

voidCMyGridCtrlTestView ::OnDraw(CDC* pDC)

{

CMyGridCtrlTestDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

ints,r;

// 建立一显示CGridCtrl类的矩形

RECT rect;

GetClientRect(&rect);

m_OldSize = CSize(rect.right-rect.left, rect.bottom-rect.top);

m_Grid.Create(rect, (CWnd*)this, 111);

// 打开工资表并将工资表的内容读入数组中

……

s:为工资表的行数;

r:为工资表的列数;

申请两个数组空间,用于存放工资表的内容,分别为:

Csarray=new CString[(s+2)*1]; //用于存放姓名

Iarray=new int[(s+2)*9]; //用于存放工资表中的其他项目

所申请两个数组空间比实际所需的空间要多两行,对于多出的最末两行中,如为字符串型变量,将以“0”代替,如为整型变量将以0代替,以供操作员在最末的两行实现对工资表的添加,如图1所示,

//创造列表图标

m_ImageList.Create(MAKEINTRESOURCE(IDB_IMAGES), 16, 1,

RGB(255,255,255));

m_Grid.SetImageList(&m_ImageList);

//设置表格的属性特征

m_Grid.SetEditable(TRUE); //设置表格为可编辑状态

m_Grid.SetTextBkColor(RGB(0xFF, 0xFF, 0xE0)); //设置表格的背景颜色 //设置表格的行列数

try {

m_Grid.SetRowCount(s+3);

m_Grid.SetColumnCount(r+1);

m_Grid.SetFixedRowCount(1);

m_Grid.SetFixedColumnCount(1);

}

catch (CMemoryException* e)

{

e->ReportError();

e->Delete();

}

// 将工资表的内容填入表格中

for (int row = 0; row < (s+3); row++)

for (int col = 0; col < (r+1); col++)

{

GV_ITEM Item; //输入信息结构体变量的声明

Item.mask = GVIF_TEXT|GVIF_FORMAT; //所输入信息的灰度

Item.row = row; //输入信息的行位置

Item.col = col; //输入信息的列位置

if (row < 1) {

Item.nFormat = DT_LEFT|DT_WORDBREAK; //输入信息的格式

if (col == 0 ) {

m_Grid.SetColumnType(col, GVET_NOEDIT); //设置表格列为可编辑状态

Item.szText.Format(_T("不能编辑")); //设置表格的文本形式

}

else if (col == 1 ) {

m_Grid.SetColumnType(col, GVET_EDITBOX);

Item.szText.Format(_T("姓名"));

}

else if (col == 2 ) {

m_Grid.SetColumnType(col, GVET_EDITBOX);

Item.szText.Format(_T("固定工资"));

}

else if (col == 3 ) {

m_Grid.SetColumnType(col, GVET_LISTBOX); //设置表格列为下拉可选状态Item.szText.Format(_T("住房补贴"));

}

//以下均为对表格第一行标题的设定, 情况与以上相类似,在此将

col==4,5,6,7,8,9时略去。

……

else if(col==10){

m_Grid.SetColumnType(col, GVET_EDITBOX);

Item.szText.Format(_T("公积金"));

}

else

{

}

} else if (col < 1) {

Item.nFormat = DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; Item.szText.Format(_T("行 %d"),row);

} else {

Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;

if(col==1)

Item.szText.Format(_T("%s"),Csarray[(row-1)]);

else if(col==2)

{

Item.szText.Format(_T("%d"),*(Iarray+(row-1)*9));

}

else if(col==3)

{

Item.szText.Format(_T("%d"),*(Iarray+1+(row-1)*9));

}

//以下为col==4,5,6,7,8,9时的填写,情况与以上相类似,在

此省略。

else if(col==10)

{

Item.szText.Format(_T("%d"),*(Iarray+8+(row-1)*9));

}

else

{

}

}

m_Grid.SetItem(&Item); //将输入信息填入表格

if (col == (m_Grid.GetFixedColumnCount()-1) && row >=

m_Grid.GetFixedRowCount())

m_Grid.SetItemImage(row, col, row%2); //将图标填入表格的第一列中

}

m_Grid.AutoSize(); //对单元表格的高度与宽度进行自动设置

m_Grid.SetRowHeight(0, 3*m_Grid.GetRowHeight(0)/2); //设置第一行表格的高度

delete []Csarray;

delete []Iarray;

}

2.表格的编辑、添加与删除

我们可以对表格的内容直接进行编辑,对于表格中的某一项值是固定的几个取值时,我们以一下拉的方式让操作员选择某一值进行编辑,这样更有利于操作员的操作,如图1的第四列,该功能的实现是通过CGridCtrlEx类中的FillListItems()函数来实现,该函数的形式如下:

voidCMyGridCtrlTestView ::CGridEx::FillListItems(intnCol, LPARAM cltList)

{

CListBox* pList = (CListBox*)cltList;

if (nCol == 3)

{

pList->AddString("0");

pList->AddString("20");

pList->AddString("30");

pList->AddString("40");

pList->AddString("50");

pList->AddString("60");

}

}

我们可以在表格的最末两行对工资表的内容进行添加,如图1所示,对表格中的内容进行修改和添加的结果都将自动地保存在工资表中,这是通过调用CGridCtrl[1]类的OnEndEditCell()函数来实现,该函数的形式如下:

voidCGridCtrl::OnEndEditCell(intnRow, intnCol, CStringstr)

{

SetItemText(nRow, nCol, str);

//打开工资表,读取工资表的总行数为 T

……

if(nRow==(T+1)) //所操作表格的行位置数大于工资表的总行数,是对表进行添加操作

{

//对工资表进行添加操作

}

else if(nRow<=T) //所操作表格的行位置数不大于工资表的总行数,是对表进行编辑操作

{

//对工资表进行编辑操作

}

else

{

MessageBox(“nRow error!”);

}

}

我们在编辑菜单(Edit)下设置一对表格进行删除的子菜单“删除(工资表)”,单击该子菜单,即可弹出一对话框以供操作员输入要删除人的姓名,在确认无误以后,即可在工资表中将该人的工资信息自动删除,最后将删除后的工资表以电子表格的形式重新显示出来,该功能的实现是在CMyGridCtrlTestView类

中OnGridCtrlDelete()函数来完成的。

3. 表格的打印

在文件菜单(File)下设置一对表格进行打印的子菜单“打印(工资表)”,单击该子菜单,将调用CMyGridCtrlTestView类中OnPrintGridCell()函数,实现对表格的打印,该函数的形式如下:

voidCMyGridCtrlTestView :: OnGridCtrlPrint ()

{

// TODO: Add your command handler code here

m_Grid.Print();

}

四、小结

本篇是对VC++5.0下CGridCtrl[1]类建立与应用的一个初步探讨,CGridCtrl[1]类本身是很复杂,其所能实现的功能也是很强大的,除了

我们给大家介绍CGridCtrl[1]类几个基本而又常用的函数之外,

CGridCtrl[1]类还有很多用于其他方面的功能函数,在此我们不可

能给大家一一介绍,我们利用CGridCtrl[1]类这些基本而又常用的函数,

实现了对数据库内容的显示、修改、添加、删除及打印等功能,基本上满足

了数据库操作人员的需求。

参考文献

1、https://www.doczj.com/doc/3813458109.html,/chinajoe, Written by Chris Maunder.

2、https://www.doczj.com/doc/3813458109.html,/chinajoe,written by Joe Willcoxson.

3、https://www.doczj.com/doc/3813458109.html,/chinajoe,written by Joe Willcoxson.

4、https://www.doczj.com/doc/3813458109.html,/chinajoe, Written by Chris Maunder.

5、https://www.doczj.com/doc/3813458109.html,/listview/edit_subitems.shtml, Written by Chris Maunder.

6、https://www.doczj.com/doc/3813458109.html,/listview/edit_subitems.shtml, Written by Motty Cohen.

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

中文版word基础教程

W o r d 2003基础教程 编 撰 花 椒 文 刀 版权归属:中国盲文出版社信息无障碍中心盲人挚友聊天室 前 言 结合阳光读屏软件强大的Word 朗读功能, 由信息无障碍中心开办的于2008年11月至 2009年3 月,推出在线《Word2003基础讲座》。同期,我们将讲座内容编纂成册,免费提供给 阳光软件的广大用户,以便查阅。 本教程用Word2003编写, 您可以通过单击目录快速跳转到需要查阅的文本,具体操作方法是:用上下光标逐行朗读目录,听到您想查阅的条目后,按下 Ctrl+小键盘的斜杠键,这样,光标会自动跳转到目录对应的文本,以方便您的查阅,同时,在阅读过程中,教程所提及的所有操作,您均可在当前窗口尝试,当然,为了保持教程的完整,建议您在关闭本 教程时选择不保存修改。 本教程由阳光软件免费提供,版权归属中国盲文出版社信息无障碍中心盲人挚友聊天室, 请勿用于商业用途,违者必究。

目录 第一章 初识中文版Word2003 中文版word2003是微软公司推出的中文版office2003软件套装中的重要组成部分,它具有 强大的文本编辑和文件处理功能,是实现无纸化办公和网络办公不可或缺的应用软件之一。 第一节安装、启动和退出程序 一、安装程序 安装word2003和安装其它软件并无二致,需要说明一下的是光盘版的安装。当您将中文版 office2003光盘放入光驱后,请不要自动播放,因为自动播放会弹出图形化的安装界面,读 屏软件无法操作。您可以在插入光盘后,打开“我的电脑”找到CD驱动器,application键 弹出快捷菜单,通过“打开(O)菜单”来打开光盘,然后在列表中选中office文件夹,打开 以后,列表中出现几个文件夹,由于版本不同,文件夹数量和名称可能会略有区别,不过没 关系,在这些文件夹中寻找setup.exe并回车执行,您就能顺利地用键盘完成安装操作了。 二、启动程序 按下Windows键弹出“「开始」菜单”,展开“所有程序(P)菜单”后。上下光标到 “MicrosoftOffice子菜单”,右光标展开该子菜单后,上下光标找到 “MicrosoftOfficeWord2003菜单”回车即可启动Word程序。另外,当您在资源管理器中选 择任意一个后缀名为.doc的文档回车时,计算机也会为您启动word程序,同时打开您选中 的文档。 三、退出程序 在程序窗口按下快捷键:“Alt+F4”是退出程序最简便的方法。当然您还可以在程序窗口按下 Alt键激活菜单栏,下光标展开“文件(F)子菜单”并找到到“退出(X)菜单”回车,或在程 序窗口按下“Alt+空格”弹出控件菜单,上下光标找到“关闭(c)菜单”回车即可退出程序。

客户端程序源代码

#include #include #include #include #include #define rec_length 20 main(int argc, char **argv ) { // structure defined for request as a client struct hostent *hp1; struct sockaddr_in sin1; struct servent *sp1; char sbuf[50]; int ss,spid; char *sservice,*sdest; // structure defined for request as a server struct sockaddr_in sin; struct servent *sp; int s,ns,pid; char buf[50]; char *service; // test the environment parameter: lservice, dservice, server_name if(argc==4){ service=argv[1];sservice=argv[2]; sdest=argv[3];} else { fprintf(stderr,"Parameter assigned Error!\nUsage:\n"); fprintf(stderr,"\t%s lservice dservice server_name!\n",argv[0]); fprintf(stderr,"Note: server_name is defined in file /etc/hosts\n"); fprintf(stderr,"and: lservice dservice are defined in file /etc/services\n"); exit(-1); } if((sp=getservbyname(service,"tcp"))==NULL){ fprintf(stderr,"Error: getservbyname"); exit(-5); } if((s=socket(AF_INET,SOCK_STREAM,0))==-1){ fprintf(stderr,"Error: socket create"); exit(-6); } bzero(&sin,sizeof(sin)); sin.sin_port=sp->s_port; if(bind(s,&sin,sizeof(sin))==-1){ fprintf(stderr,"Error: bind"); close(s); exit(-6); }

Scratch2.0入门中文使用教程

儿童编程 SCRATCH2.0入门中文使用教程 目录: 1. Scratch的简介 第1课下载与安装 第2课初识Scratch 2.Scratch基础课程 第3课让角色动一动 第4课键盘控制 第5课迷宫程序 第6课会飞的巫婆 第7课三角形的面积 第8课造型切换---人物走动 第9课移动人物教师进阶使用 第10课判断人物位置 3. Scratch进阶课程--打蝙蝠 3-1 第一节课 3-2 第二节课 3-3 第三节课

4. scratch进阶课程2-打地鼠 4-1 设计背景、铁锤及地鼠 4-2 撰写地鼠的程序 4-3 撰写铁锤程序 4-4 分数的计算 5. 接球游戏 5-1 设计球部份的程序 5-2 人物部份的程序 5-3 程序计分 5-4 扣分的构想 6.如何分享SCRATCH作品 7.如何把sb2文件转化成swf格式的flash文件

SCRATCH2.0入门中文使用教程 1. Scratch的简介 Scratch是 MIT (麻省理工学院) 发展的一套新的程序语言,可以用来创造交互式故事、动画、游戏、音乐和艺术。很适合8岁以上儿童使用,目前1.4版已经完全支持中文界面,更方便使用,完全不用背指令,使用积木组合式的程序语言,让学习变得更轻松,并充满乐趣。 官方网站:https://www.doczj.com/doc/3813458109.html,/ 目前已经推出2.0版本,支持在线和离线模式。 由于国外网站速度较慢,gateface门面,已经集成了scratch的程序,所以只要安装了伽卡他卡电子教室(15.5以上版本)或这个gateface5.5以上版本,都有scratch,不用另外安装。(伽卡他卡电子教室集成了gateface,scratch在gateface的门面编辑器里,点击相应按钮,就可以启动scratch) Gateface门面中,集成的是离线程序,可以不用登录scratch网站,在本机使用。搜索伽卡他卡电子教室或者gateface都可以到官网或者华军下载。 分享SCRATCH作品的方法: 方法1:放到网站共享。SCRATCH网站,可以上传sb2格式的文件,这样,别人通过访问SCRATCH网站来访问你的作品,需要在SCRATCH

数字万年历简易C语言程序源代码

#include"reg52.h" #define uchar unsigned char #define uint unsigned int sbit rs=P2^0; // lcd 控制端 sbit en=P2^2; // lcd 控制端 sbit all=P2^1; // lcd 控制端 sbit s0=P1^5; //时间调节 sbit s1=P1^6; sbit s2=P1^7; sbit voice=P2^7; int nt; sbit DQ=P2^6; sbit DS1302_CLK = P2^3; //实时时钟时钟线引脚sbit DS1302_IO = P2^4; //实时时钟数据线引脚sbit DS1302_RST = P2^5; //实时时钟复位线引脚sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; unsigned char time; #define ads_y 0 #define ads_mo 3 #define ads_d 6 #define ads_w 9 #define ads_h 65 #define ads_m 68 #define ads_s 71 #define DS1302_SECOND 0x80 //写入ds地址宏定义 #define DS1302_MINUTE 0x82 #define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A #define DS1302_DAY0x86 #define DS1302_MONTH 0x88 #define DS1302_YEAR 0x8C

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

简易水电费管理系统源程序代码

简易水电费管理系统源程序代码 法一: #include #include #include struct member {char no[100]; char name[20]; char password[20]; float wfee; float efee; }memb; void newadd(int n) { int t,i; fseek(fp,0,SEEK_END); printf(">>新添人数:"); scanf("%d",&t); for(i=0;i>输入卡号:"); scanf("%s",a); int i=0; rewind(fp); while(1) { fread(&memb,sizeof(struct member),1,fp); if(feof(fp)||memb.no==a) break; i++; } if(!feof(fp)) { printf(">>卡号:"); printf("%s\n",memb.no); printf(">>姓名:"); printf("%s\n",https://www.doczj.com/doc/3813458109.html,"); printf(">>水费:"); printf("%f\n",memb.wfee);

C程序设计大作业(含源代码).doc

面 向 对 象 程 序 设 计 大 作 业 姓名:叶尔凯西 学院(系):计科系 班级:计科系07-1 班 学号: 027

设计本程序的目的: 关于一些并不太复杂的集体来说,一般需要管理集体中的每个人的基本信息的,本程序 专门为一些在校学生的基本信息的管理而设计的,主要目的是通过本程序来实现简单的记录和 查找学生的基本信息; 程序功能简介: 本程序是通过面向对象的最重要的特点“类”来设计出来的,其功能是实现简单的学生基 本信息管理。包括一些要求用户从键盘输入(记录)学生的基本信息、输出学生的基本信息和用 学生的学号来查找学生信息表中的某个学生的基本信息等功能; 程序功能的详细介绍: 本人设计程序时考虑到的很所内容,其中输入输出学生的基本信息是最基本的功能。下面来给大家介绍程序的核心类的构建: ①在程序中共建立了两种类,分别是person 类和 student类。person作为student 类的基类,其内部是如下设计的: class person { public: void SetPersonAddress(char *AddressFromMain); void SetPersonSex(char *SexFromMain); void ShowPersonSex(); void ShowPersonAddress(); private: char Address[25]; char Sex[2]; }; 可以看到,在上面分别声明了四个成员函数和两个数据成员。四个成员函数的作用是对私有数据成员进行访问(包括输入和输出)。所以当建立了一个 person 类之后 就可以通过它的对象来访问该类的数据成员。 下面分别说明每一个成员函数的具体定义: ( 1)设置(输入)人地址的成员函数: void person::SetPersonAddress(char *AddressFromMain) { strcpy(Address,AddressFromMain); } 通过 strcpy把字符指针的内容送入person 类中的数据成员Address 。 ( 2)设置(输入)人性别的成员函数: void person::SetPersonSex(char *SexFromMain) { strcpy(Sex,SexFromMain); }

ArchiCAD入门中文教程

ArchiCAD中文教程 带领您进入ArchiCAD的世界,一步一步地创建一个虚拟建筑。 步骤 00 –介绍 (1) 步骤 01 –建立布局 (4) 步骤 02 –利用楼层 (18) 步骤 03 –完成建筑封顶 (23) 步骤 04 –发展设计 (28) 步骤 05 –添加门窗 (38) 步骤 06 –增加楼梯 (52) 步骤 07 –定义房间用途和空间 (57) 步骤 08 –增加最终细节 (61) 步骤 09 –测量和估算建筑成本 (65) 步骤 10 –向客户演示 (69) 步骤 00 –介绍 我们将向您展示使用一个物体模型是多么容易的一件事,30分钟内您将完成所有的建筑系统,为您的客户和项目合作伙伴递送高质量的设计和图纸,ArchiCAD 虚拟建筑使用的概念都是您司空见惯的,如如墙、门、楼板和屋顶等,我们的演示过程是符合您传统的设计方式的,不过不是二维中的绘图,而是使用了三维几何和其他属性的智能物体。 “The ArchiCAD in 30 minutes”光盘包含的是一个提供仅限制了保存和打印功能的该软件的演示版。安装好后,我们将带来您完成10个步骤,每个步骤的ArchiCAD 项目文件都可以在ArchiCAD 8.0 Demo/ArchiCAD in 30 minutes目录下找到,您

必须在一次完成一个步骤,因为您不能保存,您只需要打开对应步骤的文件,该步骤之前的所有步骤完成的内容都有。 您将学习创建一个小展览室,底楼是展览空间,二楼为画廊,以及其他一些员工和参观者所需要的日常设施。 建筑平面图如下,不同的用户界面元素将帮您完成建筑该项目。

语言程序设计个简单的经典例子

经典C语言程序设计100例 1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯并按条件打印笑脸 11.经典兔子问题 12.判断素数 13.水仙花数问题 14.正整数分解质因数 15.学习成绩划分 16.正整数求其最大公约数和最小公倍数 17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值 19.求解"完数" 20.球体自由落下物理问题 21.猴子吃桃问题 22.乒乓球比赛抽签问题 23.打印菱形图案 24.分数数列求和 25.求1+2!+3!+...+20!的和26.利用递归方法求5! 27.将输入字符以相反顺序打印 28.岁数问题 29.求解正整数位数 30.判断回文数 31.星期几猜测游戏 32.改变文本颜色 33.学习gotoxy()与clrscr()函数34.练习函数调用 35.设置文本颜色 36.求100之内的素数37.对10个数进行排序 38.求3*3矩阵对角线元素之和 39.数字插入数组重新排序40. 将一个数组逆序输出 定义静态变量用法42.使用auto 定义变量用法43.使用static 的另一用法 44.使用external的用法 45.使用register定义变量方法 46.宏#define命令练习(1) 47.宏#define命令练习(2) 48.宏#define命令练习(3) 49.#if #ifdef和#ifndef的综 合应用 50.#include 的应用练习 51.学习使用按位与 & 52.学习使用按位或 | 53.学习使用按位异或 ^ 54.取一个整数从右端开始的 4~7位。 55.学习使用按位取反~ 56.用circle画圆形 57.学用line画直线 58.用rectangle画方形 59.画图综合例子1 60.画图综合例子2 61.打印杨辉三角形 62.学习putpixel画点 63.画椭圆ellipse 64.利用ellipse and rectangle 画图 65.画个最优美的图案 66.输入3个数字按大小顺序输 出 67.输入数组交换元素重新输出 68.多个整数后移位置问题 69.圆圈报数问题 70.计算一个字符串长度 71.编写输入/输出函数 72.创建链表 73.反向输出链表 74.连接两个链表 75.算一道简单题目 76.调用函数求 1/2+1/4+...+1/n 77.填空练习(指向指针的指针) 78.找到年龄最大的人 79.字符串排序 80.海滩猴子分桃 81.已知公式条件求数字 82.八进制转换为十进制 83.求0-7所能组成的奇数个数 84.由两个素数之和表示的偶数 85.判断一个素数能被几个9整 除 86.两个字符串连接程序 87.结构体变量传递 88.读取数字的整数值并打印出 该值个数的* 89.数据加密 90.专升本一题 91.时间函数举例1 92.时间函数举例2 93.时间函数举例3 94.一个猜数游戏 95.家庭财务管理小程序 96.计算字符串中子串出现的次 数 97.输入字符并保存到磁盘98. 字符串转换成大写字母并输出 保存 99.文件操作应用1 100.文件操作应用2 -------------------------------------------------------------------------------- c语言经典100题【实用】

AVL_FIRE中文入门教程

流场分析的基本流程(FIRE软件) ID:qxlqixinliang 一、网格自动生成 (2) 二、网格划分工具的使用 (5) 1、Mesh tools (5) 2、surface tools (7) 3、edge tools (7) 三、网格和几何信息工具 (8) 1、网格check (8) 2、Geo info (9) 四、流场求解求解器的设置 (9)

一、网格自动生成 根据电池包内部流场的特点,我们一般使用fame的网格自动生成和手动划分网格,两者相结合基本上能完成网格划分。对于电池数量较少的模型(如下图)完全可以用网格自动生成功能来实现网格划分。 下面介绍网格自动生成的流程: 1)准备面surface mesh和线edge mesh:要求:面必须是封闭曲面,一般FIRE中可以应用的是.stl的文件,在PRO/E,CATIA 等三维的造型软件中都可以生成;与面的处理相似的还要准备边界的线数据 2)Hybrid assistant,选择start new meshing,分别定义表面网格define surface mesh和线网格define edge mesh 3)然后进入高级选项fame advanced hybrid,在这里定义最大网格尺寸和最小网格尺寸,最大网格尺寸是最小网格尺寸的2^n倍 4)选择connecting edge,一般在计算域的进出口表面建立face selection,这样可保证edge 处的网格贴体,否则网格在几何的边角会被圆滑掉,另外还可以保证进出口面的网格方向与气流方向正交,有利于计算的精确性和收敛性。通过add添加上进出口的selection 即可。

JAVA简单记事本程序(源代码)课程设计

辽宁工业大学 JA V A程序设计课程设计(论文)题目: JAVA简单记事本程序 院(系):软件学院 专业班级:软件工程班 学号: 学生姓名: 指导教师: 教师职称: 起止时间:

程序设计专题(报告)任务及评语

目录 第1章课程设计的目的与要求 (4) 1.1 课程设计目的 (4) 1.2 课程设计的实验环境 (4) 1.3 课程设计的预备知识 (4) 1.4 课程设计要求 (4) 第2章课程设计内容 (5) 2.1课题描述 (5) 2.2 系统设计 (5) 2.2.1功能分析 (5) 2.2.2面向对象设计 (5) 2.2.3详细设计 (7) 2.3程序实现 (10) 2.3.1源码分析 (10) 2.3.1运行结果 (14) 第3章总结 (18) 参考文献19

第1章课程设计的目的与要求 1.1 课程设计目的 《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。 1.2 课程设计的实验环境 硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。 1.3 课程设计的预备知识 熟悉JAVA语言及ECLIPSE开发工具。 1.4 课程设计要求 按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

MathType6.9中文基础教程之一

MathType6.9 中文入门教程 (一) MathType 实现“所见即所得”的工作模式,是一个强大的数学公式编辑器。它可以将编辑好的公式保存成多种图片格式或透明图片模式,可以很方便的添加或移除符号、表达式等模板(只需要简单地用鼠标拖进拖出即可),也可以很方便地修改模板。MathType 与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,可用在编辑数学试卷、书籍、报刊、论文、幻灯演示等方面,是编辑数学资料的得力工具。 本教程为中文基础教程系列之一——手把手教你快速入门

练习一:分式与根式 (6) 打开MathType (6) 创建等式 (6) 1.输入y= (7) 2. 输入根式符号了 (7) 3.输入分式模板 (7) 4.输入数字 (8) 5.移动光标 (8) 6.输入数字 (8) 7.增加sinx (8) 8.插入点光标 (9) 9. 输入-c (9) 10.加上角标 (9) 11.输入数字2 (10) 12.点按±键 (10) 13.选择m (10) 14.输入tan x (10) 练习二:总和,上标和下标 (11) 1.打开一个Word文档 (11) 2.选择插入 (11) 3.输入 (11) 4.创建一个上标的位置 (12)

5.输入上标数字 (12) 6.移动插入点 (12) 7.输入= (12) 8.构建分式 (12) 9.插入点定位 (13) 10.使用Tab键 (13) 11.输入总和模板 (13) 12.插入一组圆括号 (13) 13.输入字母x (13) 14.给x附加下标 (13) 15.输入-x (13) 16.给x上增加一横线 (13) 17.按下Tab键 (13) 18.输入上标数字2 (14) 19.按下Tab键 (14) 20.按下Tab键 (14) 练习三:编辑修改练习二的等式 (15) 1.打开文档 (16) 2.选中项目 (16) 3.删除项目 (16) 4.输入字母 (16) 5.全选所有部分 (16)

程序源代码

// BusDlg.cpp : 实现文件 // #include"stdafx.h" #include"Bus.h" #include"BusDlg.h" #include #define M 5 //公交车数量 #ifdef _DEBUG #define new DEBUG_NEW #endif /*每辆公交车途经路线*/ int Station[M][20]={{1,2,3,4,5,6,7,8,9,10,11},{12,13,14,15,16,17,18,19},{16,17,20,21,22,23,24,25,26} ,{2,3,15,16,23,27,28,29,30,31,32,33},{5,7,14,15,16,22,23,34,35,36,37,38}}; int taked[M]={0,0,0,0,0};//公交车标示,坐过置 int Length[1000]={0};//每条路线长度 int cnt;//路线条数 struct ways //保存所有路径 { int cp; //公交车号 int zt; //站台编号 }way[1000][10]; struct Exchange//换车的下车点 { static int Len;//长度 int route;//车次 int pos;//换车站点 }Path[M]; int Exchange::Len=0;//初始化路径长度 typedef struct//定义用户数据结构体 { char tel[256]; //电话 char sstation[256]; //起始站 char dstation[256]; //终点站 char route[256]; //路线 }userdata; HANDLE m_hComm; // 串口操作句柄 int length; //路线长度为发送短信使用 //函数声明 void remessage(userdata ud); char *chazhao(CString ss,CString ds); DWORD WINAPI GPRSRecvTread(LPVOID lparam); void CALLBACK OnGPRSRecv(CWnd* pWnd,userdata ud); int gsmDecodeUcs2(const unsigned char* pSrc, char* pDst, int nSrcLength); char *chuli(char *buff); bool PassBy(int P,int* path); void save_path(); void NextSearchPath(int end,int route);

PCSchematic中文入门教程

创建一个自动化方案 本章节将示范如何完成您的第一个自动化方案。它包括五个步骤,每一个步骤都有些范例, 将示范您如何完成设计方案中的各个部分。 本章内容简介 第一步:创建一个控制回路图,在设计方案和页面中输入数据,布置导线符 号,使用数据库及保存设计方案…………………………………………(第1页)第二步:创建一个主回路图,布置绘图模板,恰当地排列符号文本,移动电 路号,打印页面……………………………………………………………(第13页)第三步:自动导线编号………………………………………………………………(第21页) 第四步:布置元件……………………………………………………………………(第22页) 第五步:制作信息清单,并更新清单………………………………………………(第25页) 在PROJECT文件夹里,您会发现五个文件,其中的内容对应方案的各个部分。因此,您 既可以从头开始学习整个章节的内容,也可以选择一个主题,学习您感兴趣的部分。通过上 面的摘要,您可以选择想要学习的主题。 如果您想很快地完成这一章的学习,可以跳过文本框。 接下来,在位于第86页的“创建一个PLC方案”一节中,将详细介绍更多的功能。 一些预置的功能,例如设计方案章节和区域内的参考符号,没有在这部分阐述。在 演示方案.PRO这一设计方案中将应用其中一些功能。 如果您对“Windows”不熟悉,应在学习后面的课程前阅读“Windows”内容。 1.画控制回路图 打开一个已有的设计方案 点击位于程序工具栏的打开文件按钮(快捷键[Ctrl+o])。打开PROJECT文件夹,然后双 击设计方案文件开始2.pro。现在会打开这个设计方案文件。 ——如果您不熟悉如何使用“Windows”打开文件/方案,可以阅读位于26页的“Windows” 内容。 设计方案内容 设计方案开始2.pro中包含一些已经生成的页面: 1)页面F1是扉页。 2)页面I1是目录表。 3)页面1是画控制回路图页面。 4)页面2是零部件清单模板。 5)页面3是元器件清单模板。 6)页面4是接线端子清单模板。 比思 (香港,深圳,上海,北京) 电子有限公司 https://www.doczj.com/doc/3813458109.html, kgs@https://www.doczj.com/doc/3813458109.html, Page 1

一些简单的C语言程序代码

由键盘任意输入1个4位数整数,分别输出其中的个位、十位、百位、千位。 /* expe 3-10 */ #include #include void main(void) { int mun,a,b,c,d; scanf("%d",&mun); a=mun / 1000; /*千位*/ b=(mun % 1000) / 100; /*百位*/ c=(mun % 100) / 10; /*十位*/ d=(mun % 10); /*个位*/ printf("千位数字为=%d\n",a); printf("百位数字为=%d\n",b); printf("十位数字为=%d\n",c); printf("个位数字为=%d\n",d); } 由键盘任意输入3个数据,找出其中的最大数和最小数。 #include void main(void) { float a,b,c,k,g;/* k 小g 大*/ printf ("请输入三个数"); scanf("%f%f%f",&a,&b,&c); if (a < b) { k = a; g = b; } else { k = b; g = a; } if (k < c)/*最小*/ { printf ("\n最小的数=%5.2f",k);} else {printf ("\n最小的数=%5.2f",c);} if (g > c)/*最大*/ {printf ("\n最大的数=%5.2f",g);} else {printf ("\n最大的数=%5.2f",c);} } 判断三角形的形状 #include #include void main(void) { printf("请输入三角形三边"); float a,b,c,p,s,k1,k2,k3; scanf("%f%f%f",&a,&b,&c); while (a + b < c || b + c < a || a + c < b ) { printf("不能构成三角形,请重新输入"); scanf("%f%f%f",&a,&b,&c); } k1 = a * a; k2 = b * b; k3 = c * c; if (a == b && b == c && c ==a) {printf("此三角形为等边三角形");} else if (a == b || b == c || c ==a) {printf("此三角形为等腰三角形"); } else if ((k1 == b * b + c * c) || (k2 == a * a + c * c) || (k3 = a * a + b * b)) {printf("此三角形为直角三角形");} else {printf("此三角形为一般三角形");} } 九九乘法表 整体 #include void main(void) { int i,j;

Scratch20入门中文使用教程

SCRATCH2.0入门中文使用教程 目录: 1. Scratch的简介 第1课下载与安装 第2课初识Scratch 2.Scratch基础课程 第3课让角色动一动 第4课键盘控制 第5课迷宫程序 第6课会飞的巫婆 第7课三角形的面积 第8课造型切换---人物走动 第9课移动人物教师进阶使用 第10课判断人物位置 3. Scratch进阶课程--打蝙蝠 3-1 第一节课 3-2 第二节课 3-3 第三节课

4. scratch进阶课程2-打地鼠 4-1 设计背景、铁锤及地鼠 4-2 撰写地鼠的程序 4-3 撰写铁锤程序 4-4 分数的计算 5. 接球游戏 5-1 设计球部份的程序 5-2 人物部份的程序 5-3 程序计分 5-4 扣分的构想 6.如何分享SCRATCH作品 7.如何把sb2文件转化成swf格式的flash文件

SCRATCH2.0入门中文使用教程 1. Scratch的简介 Scratch是 MIT (麻省理工学院) 发展的一套新的程序语言,可以用来创造交互式故事、动画、游戏、音乐和艺术。很适合8岁以上儿童使用,目前1.4版已经完全支持中文界面,更方便使用,完全不用背指令,使用积木组合式的程序语言,让学习变得更轻松,并充满乐趣。 官方网站:https://www.doczj.com/doc/3813458109.html,/ 目前已经推出2.0版本,支持在线和离线模式。 由于国外网站速度较慢,gateface门面,已经集成了scratch的程序,所以只要安装了伽卡他卡电子教室(15.5以上版本)或这个gateface5.5以上版本,都有scratch,不用另外安装。(伽卡他卡电子教室集成了gateface,scratch在gateface的门面编辑器里,点击相应按钮,就可以启动scratch) Gateface门面中,集成的是离线程序,可以不用登录scratch网站,在本机使用。搜索伽卡他卡电子教室或者gateface都可以到官网或者华军下载。 分享SCRATCH作品的方法: 方法1:放到网站共享。SCRATCH网站,可以上传sb2格式的文件,这样,别人通过访问SCRATCH网站来访问你的作品,需要在SCRATCH

单片机程序源代码

第二章 任务一:闪烁广告灯的设计 利用89c51单片机的端口控制两个LED(D0和D1),编写程序,实现两个LED互闪。 #include #define uint unsigned int #define uchar unsigned char sbit LED1=P0^0; sbit LED2=P0^1; void delayms(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); } } void main() { while(1) { LED1=0; LED2=1; delayms(500); LED1=1; LED2=0; delayms(500); } } 任务二:流水广告灯的设计 利用89c51单片机的端口控制8个LED(D0~D7)循环点亮,刚开始时D0点亮,延时片刻后,接着D1点亮,然后依次点亮D2->D3->D4->D5 ->D6->D7 ,然后再点亮D7->D6->D5->D4 ->D3->D2->D1->D0,重复循环。 #include #include #define uint unsigned int #define uchar unsigned char uint i; uchar temp; uint a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delayms(uint ms) { while(ms--) { uint j; for(j=0;j<120;j++);

ArcGIS中文基础教程

第一章GIS 的概念和需求 理解GIS的三种角度: GIS是一个用于管理、分析和显示地理信息的系统。地理信息可以通过一系列地理数据集来表达。而地理数据集则通过使用简单的,普通数据结构来为地理信息建模。GIS包含了一套用以处理地理数据的综合工具。 我们可以从多个角度来理解地理信息系统是如何工作于地理信息的: 1.从空间数据库的角度看:GIS是一个包含了用于表达通用GIS数据模型(要素、栅格、拓扑、网络等等)的数据集的空间数据库。 2.从空间可视化的角度看:GIS是一套智能地图,同时也是用于显示地表上的要素和要素间关系的视图。底层的地理信息可以用各种地图的方式进行表达,而这些表现方式可以被构建成“数据库的窗口”,来支持查询、分析和信息编辑。 3.从空间处理的角度看:GIS是一套用来从现有的数据集获取新数据集的信息转换工具。这些空间处理功能从已有数据集提取信息,然后进行分析,最终将结果导入到数据集中。 这三种观点在ESRI ArcGIS中分别用ArcCatalog(GIS是一套地理数据集的观点)、ArcMap(GIS是一幅智能的地图)和ArcToolbox(GIS是一套空间处理工具)来表达。这三部分是组成一个完整GIS的关键内容,并被用于所有GIS 应用中的各个层面。 从空间数据库的角度: GIS是世界上独一无二的一种数据库――空间数据库(Geodatabase)。它是一个“用于地理的信息系统”。从根本上说,GIS是基于一种使用地理术语来描述世界的结构化数据库 这里我们来回顾一些在空间数据库中重要的基本原理。 地理表现形式 作为GIS空间数据库设计工作的一部分,用户要指定要素该如何合理的表现。例如,地块通常用多边形来表达,街道在地图中是中心线(centerline)的形式,水井表现为点等等。这些要素会组成要素类,每个要素类都有共同的地理表现形式。 每个GIS数据集都提供了对世界某一方面的空间表达,包括: 基于矢量的要素(点、线和多边形)的有序集合

相关主题
文本预览
相关文档 最新文档