C++实训(配置管理)

课 程 设 计 任 务 书

课题名称: JOY窗口——配置管理

设计内容:
1.编辑内容的实现增删改查
2.编辑框口,MFC列表和TXT文本文件

技术条件或要求:
1.技术条件:开发环境visua c++
2.加深对队列结构的理解,逐步培养解决实际问题的编程能
3.学习C++语言,利用MFC文件对输入信息进行编辑

指导教师(签名): 教研室主任(签名):

开题日期: 2020 年 12 月 5 日 完成日期: 2020 年 2 月 11 日
目录
第一章 joy窗口——配置文件 4
1、1代码实现 4
1、2运行结果 10
所有窗口 10
Add按钮界面实现 10
Mod按钮界面实现 14
Del按钮界面实现 16
1、3程序N-S图 19
1、4问题 23
1、5实训总结 23

第一章joy窗口——配置文件
1、1代码实现

// C1Dlg.cpp : 实现文件

//

#include “stdafx.h”
#include “C1.h”
#include “C1Dlg.h”

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = FILE;
#endif

/
// CC1Dlg dialog对话框

CC1Dlg::CC1Dlg(CWnd* pParent / =NULL/)
CDialog(CC1Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CC1Dlg)
// NOTE: ClassWizard将在这里添加成员初始化
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CC1Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC1Dlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CC1Dlg, CDialog)
//{{AFX_MSG_MAP(CC1Dlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_DEL, OnDel)
ON_BN_CLICKED(IDC_MOD, OnMod)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/
// CC1Dlg message handlers息处理程

BOOL CC1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
CListCtrl *pList=(CListCtrl *)GetDlgItem(IDC_LIST);
pList->InsertColumn(0,“第一个人”,LVCFMT_LEFT,120);
pList->InsertColumn(2,“第二个人”,LVCFMT_LEFT,120);
pList->InsertColumn(3,“第三个人”,LVCFMT_LEFT,120);
pList->InsertColumn(4,“第四个人”,LVCFMT_LEFT,120);
// 设置此对话框的图标。框架会自动执行此操作
// 当应用程序的主窗口不是对话框时
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO:在这里添加额外的初始化	
return TRUE;  // 除非将焦点设置为控件,否则返回TRUE

}

// 如果您将最小化按钮添加到您的对话框中,您将需要以下代码
// 来绘制图标。对于使用文档/视图模型的MFC应用程序,
// 这是由框架自动为您完成的。

void CC1Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 绘画设备上下文

	SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

	// 客户端矩形的中心图标
	int cxIcon = GetSystemMetrics(SM_CXICON);
	int cyIcon = GetSystemMetrics(SM_CYICON);
	CRect rect;
	GetClientRect(&rect);
	int x = (rect.Width() - cxIcon + 1) / 2;
	int y = (rect.Height() - cyIcon + 1) / 2;

	// 画图标
	dc.DrawIcon(x, y, m_hIcon);
}
else
{
	CDialog::OnPaint();
}

}

// 系统调用这个函数以获得用户拖动时显示的光标
// 最小化窗口。
HCURSOR CC1Dlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

CString str,tstr;
void CC1Dlg::OnAdd()
{
this ->GetDlgItemText(IDC_NAME1,tstr);
CListCtrl *pList=(CListCtrl *)GetDlgItem(IDC_LIST);
int nCount=pList ->GetItemCount();
pList ->InsertItem(nCount,tstr);
if(tstr.IsEmpty())
{
MessageBox(“This Text is NULL!”);
return;
}
str +=(tstr+",");
GetDlgItemText(IDC_NAME2,tstr);
pList->SetItemText(nCount,1,tstr);
if(tstr.IsEmpty())
{
MessageBox(“This Text is NULL!”);
return;
}
str +=(tstr+",");
GetDlgItemText(IDC_NAME3,tstr);
pList->SetItemText(nCount,2,tstr);
if(tstr.IsEmpty())
{
MessageBox(“This Text is NULL!”);
return;
}
str +=(tstr+",");
GetDlgItemText(IDC_NAME4,tstr);
pList->SetItemText(nCount,3,tstr);
if(tstr.IsEmpty())
{
MessageBox(“This Text is NULL!”);
return;
}
str +=(tstr+";");
str +="\r\n";
MessageBox(str);
CFile m_file;
if(m_file.Open(“1.txt”,CFile::modeWrite))
{
m_file.SeekToEnd();
m_file.Write(str.GetBuffer(0),str.GetLength());
m_file.Close();
}else
{
MessageBox(“打开失败!”);
}
SetDlgItemText(IDC_NAME1,"");
SetDlgItemText(IDC_NAME2,"");
SetDlgItemText(IDC_NAME3,"");
SetDlgItemText(IDC_NAME4,"");
MessageBox(“添加成功!”);
}

void CC1Dlg::OnDel()
{
CListCtrl *pList=(CListCtrl *)GetDlgItem(IDC_LIST);

POSITION pos=pList->GetFirstSelectedItemPosition();
int nSel=pList->GetNextSelectedItem(pos);
if(nSel <0)
{
	AfxMessageBox("请先选中一行在删除!");
	return;
}
if(IDYES==AfxMessageBox("确认删除选中的数据吗?",MB_YESNO))
	pList ->DeleteItem(nSel);
CFile m_file;

if(m_file.Open("1.txt",CFile::modeWrite))
{
	m_file.SeekToEnd();
	m_file.Write(str.GetBuffer(0),str.GetLength());
	m_file.Close();
}else
{
	MessageBox("打开失败!");
}
SetDlgItemText(IDC_NAME1,"");
SetDlgItemText(IDC_NAME2,"");
SetDlgItemText(IDC_NAME3,"");
SetDlgItemText(IDC_NAME4,"");
MessageBox("删除成功!");

}

void CC1Dlg::OnMod()
{

CListCtrl *pList=(CListCtrl *)GetDlgItem(IDC_LIST);

POSITION pos=pList->GetFirstSelectedItemPosition();
int nSel=pList->GetNextSelectedItem(pos);
if(nSel <0)
{
	AfxMessageBox("请先选中一行在修改!");
	return;
}
GetDlgItemText(IDC_NAME2,tstr);
if(IDNO==AfxMessageBox("确认修改"+tstr+"选中的数据吗?",MB_YESNO))
	return;

pList ->SetItemText(nSel,1,tstr);
GetDlgItemText(IDC_NAME3,tstr);
pList ->SetItemText(nSel,2,tstr);
GetDlgItemText(IDC_NAME4,tstr);
pList ->SetItemText(nSel,3,tstr);
this ->GetDlgItemText(IDC_NAME1,tstr);
int nCount=pList ->GetItemCount();
if(tstr.IsEmpty())
{
	MessageBox("This Text is NULL!");
		return;
}
str +=(tstr+",");
GetDlgItemText(IDC_NAME2,tstr);
if(tstr.IsEmpty())
{
	MessageBox("This Text is NULL!");
		return;
}
str +=(tstr+",");
GetDlgItemText(IDC_NAME3,tstr);
if(tstr.IsEmpty())
{
	MessageBox("This Text is NULL!");
		return;
}
str +=(tstr+",");
GetDlgItemText(IDC_NAME4,tstr);
if(tstr.IsEmpty())
{
	MessageBox("This Text is NULL!");
		return;
}
str +=(tstr+";");
	str +="\r\n";
MessageBox(str);
CFile m_file;
if(m_file.Open("1.txt",CFile::modeWrite))
{
	m_file.SeekToEnd();
	m_file.Write(str.GetBuffer(0),str.GetLength());
	m_file.Close();
}else
{
	MessageBox("打开失败!");
}
SetDlgItemText(IDC_NAME1,"");
SetDlgItemText(IDC_NAME2,"");
SetDlgItemText(IDC_NAME3,"");
SetDlgItemText(IDC_NAME4,"");
MessageBox("修改成功!");

}
1、2运行结果
所有窗口
主窗口——五个静态文本编辑框进行装饰程序界面,四个动态编辑框进行信息输入,一个列表在窗口直接展示增、删、改、查、过程,有三个按钮来触发实践发生,最后设置TXT文件进行后台查看。

Add按钮界面实现
在编辑框内输入姓名

添加成功,第一条信息计入完成

根据以上过程,进行添加多条信息,经检验添加按钮完成

Mod按钮界面实现
直接点击修改按钮会弹出选框,选择是,在编辑框进行修改内容,点击修改确认 修改中的内容,点击确认即可完成列表修改;打开TXT文本文件,会弹出文本被修改信息,点击是可在文本中查看修改数据。

Del按钮界面实现
直接点击修改按钮会弹出选框,选择是,点击列表中“第一个人”列中的内容,点击确认删除 即删除成功;打开TXT文本文件,会弹出文本被修改信息,点击是可在文本中在文本最后一行看见删除的数据。

1、3程序N-S图
BOOL CC1Dlg::OnlintDialog()//是列表窗口
1、 对话框启动时,现在列表控件中获取获取控件的指针或句柄:
2、 获取列表控件指针的函数CWnd:: GetDlgItem
3、 CListCtrl * pList=(ClistCtrl *)GetDlgItem(IDC_LIST);
4、 WM_INIDIALOG当对话框还未显示出来的时候(做头列表准备)
5、 pList ->InsertColumn(0,“第一个人”,IDC_LIST,120);
a) MESSAGE_MAP消息映射区,将一个消息对某一个控件的操作,给一个固定的函数进行关联
ON_BN_CLTCKED(IDC_ADD,OnAdd)
//当点击IDC_ADD(添加按钮),自动映射到OnAdd函数上。
Void CC1Dlg::OnAdd()//添加按钮
1、 先取窗口指针Cwnd * GetDlgItem (int nID)
2、 尾插
a) int nCount=pList->GetItemCount();
b) pList ->InsertItem(nCount,str);
3、 获取姓名GetDlgItem(IDC_NAME1,str);
4、 获取文本后就不能再插入了,插入横向设置
a) pList->SetItemText(nCount,1,str);
b) pList->SetItemText(nCount,2,str);
c) pList->SetItemText(nCount,3,str);

void CC1Dlg::OnMod()//修改按钮
1、 修改前先获取数据
a) GetDlgItemText(IDC_NAME2,tstr);
2、 确认修改代码
if(IDNO==AfxMessageBox(“确认修改”+tstr+“选中的数据吗?”,MB_YESNO))
return;

pList ->SetItemText(nSel,1,tstr);
GetDlgItemText(IDC_NAME3,tstr);
pList ->SetItemText(nSel,2,tstr);
GetDlgItemText(IDC_NAME4,tstr);
pList ->SetItemText(nSel,3,tstr);
this ->GetDlgItemText(IDC_NAME1,tstr);
int nCount=pList ->GetItemCount();

void CC1Dlg::OnDel()
1、 获取指针,有了列表指针,可以操作列表控件
2、 获取被选中的一行的索引nSel:返回值
a) int nSel =pList->GetSelectionMark();//虚线框删除
3、 对话框中设置点击索引显示蓝色文选中,删除行
a) POSITION pos=->GetFirstSelectedItemPosition();
4、 设置判断,使其先选中一行
a) if(nSel<0)
{
AfxMessageBox(“请先选中其中一行删除!”);
}

1、4问题
运行程序出现joy窗口——配置文件管理,对四个编辑窗口,对其内容进行管理,其中有三个按钮即一个列表对文件进行客户端的增删改查,并且附有TXT文件进行服务端的文件查看。
1、5实训总结
通过一学年的学习,对文件的管理有了全新的认识,学习了MFC创建界面的方便性,以及点击按钮 会触发到的事件,学会了文本文件的调用。

西安航空职业技术学院

课程设计(论文)成绩评定表

目 考核点细目 分值 得分
A B C D E

度 1.考勤(迟到、早退、旷课、卫生) 10
2.积极准备、认真听讲、独立思考、操作规范主动 10

操 3.实训完成情况(主动操作、成果) 15
4.独立操作能力(按角色独立完成操作) 10
5.团队协作(与组员间的配合) 10
6.有创新 5
报告 7.按时完成,书写整洁 10
8.结构完整、格式规范 10
答辩 9.举止端正、语言流畅、逻辑性强 10
10.回答问题正确 10
总成绩
说明: A、B、C、D、E为该项得分,分别对应分值的100%、80%、60%、40%、20%
10(10、8、6、4、2) , 15(15、9、12、6、3)

成绩:

签名:

                年    月    日
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值