vc大作业报告学生信息管理系统
v c大作业报告学生信息
管理系统
Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】
高级程序设计项目训练报告
指导教师:黄欢
时间 2012 年 7 月 27 日
专业年级: 姓名:学号:报告分
程序功能:1) 学生基本信息录入功能
2) 学生信息查询功能
3)学生信息的删除
学生信息包括:
姓名、性别、学号、班级、出生年月、手机号码、已经获得学分等
输入输出数据的说明:输入学生信息点击确定,在“学生信息查询”中输入姓名,就可以在“查询结果”中输出相应信息。
报告内容
一、分析
设计的是一个基于MFC对话框的C++应用程序,创建了一个主对话框,和一些必要的子对话框。在主对话框中添加列表控件用来显示学生的基本信息。主要用到了在MFC中运用编辑框的只是,还有插入位图。
二、操作
运行后点击“学生信息录入”显示:
输入相关信息在确定。在选中信息点击删除,可进行删除操作。
点击“学生信息查询”显示:
输入名字,若有信息储存,则在查询结果中显示,若无信息储存则显示:
主代码:
// zxyDlg.cpp : implementation file
//
#include "stdafx.h"
#include "zxy.h"
#include "zxyDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
////////////////////////////////////////////////////////////////////////// ///
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
////////////////////////////////////////////////////////////////////////// ///
// CZxyDlg dialog
CZxyDlg::CZxyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CZxyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CZxyDlg)
// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CZxyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CZxyDlg)
DDX_Control(pDX, IDC_BUTTON3, m_button_change);
DDX_Control(pDX, IDC_BUTTON2, m_button_del);
DDX_Control(pDX, IDC_BUTTON1, m_button_enter);
DDX_Control(pDX, IDC_LIST4, m_list_ctrl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CZxyDlg, CDialog)
//{{AFX_MSG_MAP(CZxyDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
////////////////////////////////////////////////////////////////////////// ///
// CZxyDlg message handlers
BOOL CZxyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_list_ctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);
CRect rect;
m_list_ctrl.GetClientRect(&rect);
int nColInterval=rect.Width()/16;
m_list_ctrl.InsertColumn(0,_T("学号"),LVCFMT_LEFT,nColInterval*3);
m_list_ctrl.InsertColumn(1,_T("姓名"),LVCFMT_LEFT,nColInterval*2);
m_list_ctrl.InsertColumn(2,_T("性别
"),LVCFMT_CENTER,nColInterval*1+5);
m_list_ctrl.InsertColumn(3,_T("班级"),LVCFMT_LEFT,nColInterval*2);
m_list_ctrl.InsertColumn(4,_T("出生日期
"),LVCFMT_LEFT,nColInterval*3);
m_list_ctrl.InsertColumn(5,_T("电话号码
"),LVCFMT_LEFT,nColInterval*3);
m_list_ctrl.InsertColumn(6,_T("已获学分
"),LVCFMT_LEFT,nColInterval*2);
return TRUE; // return TRUE unless you set the focus to a control }
void CZxyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework.
void CZxyDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
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;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CZxyDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
#include "MyDialog_enter.h"
void CZxyDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CMyDialog_enter *pwd=new CMyDialog_enter(this);
pwd->Create(IDD_DIALOG1,this);
pwd->ShowWindow(1);
}
#include "student.h"
void CZxyDlg::List_Show(void)
{
m_list_ctrl.DeleteAllItems();
int nItem = m_list_ctrl.GetItemCount();
for (int
i=0;i m_list_ctrl.InsertItem(nItem, people[i].sno); m_list_ctrl.SetItemText(nItem, 1,people[i].sname); m_list_ctrl.SetItemText(nItem, 2,people[i].sex); m_list_ctrl.SetItemText(nItem, 3,people[i].inst); m_list_ctrl.SetItemText(nItem, 4,people[i].brondata); m_list_ctrl.SetItemText(nItem, 5,people[i].phone); m_list_ctrl.SetItemText(nItem, 6,people[i].grade); } } void CZxyDlg::OnButton2() { // TODO: Add your control notification handler code here int nItem=m_list_ctrl.GetSelectionMark(); //AfxMessageBox(people[nItem].sname,MB_OK); if (nItem==-1) { AfxMessageBox("您未选择任何内容!",MB_OK); } else { if (AfxMessageBox("确认删除学生"+people[nItem].sname+"的信息 ",MB_YESNO)==IDYES) { for (;nItem { people[nItem].All_Copy(people[nItem+1]); } people[0].AllNumber--; List_Show(); } } } #include "MyDialog_2.h" void CZxyDlg::OnButton3() { // TODO: Add your control notification handler code here CMyDialog_2 *pwnd=new CMyDialog_2(this); pwnd->Create(IDD_DIALOG2,this); pwnd->ShowWindow(1); } BOOL CZxyDlg::PreTranslateMessage(MSG* pMsg) //屏蔽回车和ESC按键 { // TODO: 在此添加专用代码和/或调用基类 { // 屏蔽回车和ESC 键 // 屏蔽ESC 键退出 if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 0x1b) return TRUE; // 回车 if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 0x0d ) return TRUE; } return CDialog::PreTranslateMessage(pMsg); } 遇到的问题及解决方法(编译错误提示及如何解决) 1、主要遇到了一些成员变量添加错误的问题,在通过Ctrl+W操作显示窗口中重新添加后得以改正,是缺少成员变量的问题。 2、还有做作业的过程中多次遇到缺少定义的现象,在同学的帮助下找到并添加改正。 3、在执行时出现“计算机中缺少.DLL文件,无法运行”的问题在工程的常规中在了连接方式后运行。