⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 finaldlg.cpp

📁 vC++下的学生成绩管理系统。可以保存学生数据
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// finalDlg.cpp : implementation file
//

#include "stdafx.h"
#include "final.h"
#include "finalDlg.h"
#include "student.h"
#include "string.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 void OnOk2();
	//}}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)
	ON_BN_CLICKED(IDOK2, OnOk2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFinalDlg dialog

CFinalDlg::CFinalDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CFinalDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFinalDlg)
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CFinalDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFinalDlg)
	DDX_Control(pDX, IDC_LIST3, m_ctrlList3);
	DDX_Control(pDX, IDC_EDIT12, m_edit2);
	DDX_Control(pDX, IDC_EDIT11, m_edit1);
	DDX_Control(pDX, IDC_LIST2, m_ctrlList2);
	DDX_Control(pDX, IDC_sub8, m_sub8);
	DDX_Control(pDX, IDC_sub7, m_sub7);
	DDX_Control(pDX, IDC_sub6, m_sub6);
	DDX_Control(pDX, IDC_sub5, m_sub5);
	DDX_Control(pDX, IDC_sub4, m_sub4);
	DDX_Control(pDX, IDC_sub3, m_sub3);
	DDX_Control(pDX, IDC_sub2, m_sub2);
	DDX_Control(pDX, IDC_sub1, m_sub1);
	DDX_Control(pDX, IDC_sex, m_sex);
	DDX_Control(pDX, IDC_name, m_name);
	DDX_Control(pDX, IDC_LIST1, m_ctrlList);
	DDX_Control(pDX, IDC_id, m_id);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CFinalDlg, CDialog)
	//{{AFX_MSG_MAP(CFinalDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_COMMAND(ID_CLOSE, OnClose)
	ON_COMMAND(ID_ABOUT, OnAbout)
	ON_BN_CLICKED(IDADOK, OnAdok)
	ON_BN_CLICKED(IDADRESET, OnAdreset)
	ON_COMMAND(ID_SAVE, OnSave)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
	ON_BN_CLICKED(IDADRESET2, OnAdreset2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFinalDlg message handlers

BOOL CFinalDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	fstream ifn("data.yil",ios::in);
	while(!ifn.eof()){
	count++;
	ifn.read((char *)&stu[count],sizeof(stu[count]));
	}
	ifn.close();

	m_ctrlList.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,//-----------列表框的定义
		0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_SORTDESCENDING) ;

	m_ctrlList.InsertColumn(0,"学生证号",NULL,60,0);//---------------加载基本信息
	m_ctrlList.InsertColumn(1,"学生姓名",NULL,60,0);
	m_ctrlList.InsertColumn(2,"性别",NULL,40,0);
	m_ctrlList.InsertColumn(3,"C++成绩",NULL,60,0);
	m_ctrlList.InsertColumn(4,"数字逻辑成绩",NULL,90,0);
	m_ctrlList.InsertColumn(5,"体育成绩",NULL,70,0);
	m_ctrlList.InsertColumn(6,"离散数学成绩",NULL,90,0);
	m_ctrlList.InsertColumn(7,"法律成绩",NULL,70,0);
	m_ctrlList.InsertColumn(8,"汇编语言成绩",NULL,90,0);
	m_ctrlList.InsertColumn(9,"选修成绩",NULL,70,0);
	m_ctrlList.InsertColumn(10,"大学英语成绩",NULL,90,0);
	m_ctrlList.InsertColumn(11,"总分",NULL,40,0);
	m_ctrlList.InsertColumn(12,"排名",NULL,40,0);

	m_ctrlList2.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,//-----------列表框的定义
		0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_SORTDESCENDING) ;
	m_ctrlList2.InsertColumn(0,"科目",NULL,80,0);
	m_ctrlList2.InsertColumn(1,"优秀",NULL,60,0);
	m_ctrlList2.InsertColumn(2,"良好",NULL,60,0);
	m_ctrlList2.InsertColumn(3,"中等",NULL,60,0);
	m_ctrlList2.InsertColumn(4,"及格",NULL,60,0);
	m_ctrlList2.InsertColumn(5,"不及格",NULL,60,0);
	m_ctrlList2.InsertColumn(6,"平均成绩",NULL,60,0);

	m_ctrlList3.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,//-----------列表框的定义
		0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_SORTDESCENDING) ;

	m_ctrlList3.InsertColumn(0,"学生证号",NULL,60,0);//---------------加载基本信息
	m_ctrlList3.InsertColumn(1,"学生姓名",NULL,60,0);
	m_ctrlList3.InsertColumn(2,"性别",NULL,40,0);
	m_ctrlList3.InsertColumn(3,"C++成绩",NULL,60,0);
	m_ctrlList3.InsertColumn(4,"数字逻辑成绩",NULL,90,0);
	m_ctrlList3.InsertColumn(5,"体育成绩",NULL,70,0);
	m_ctrlList3.InsertColumn(6,"离散数学成绩",NULL,90,0);
	m_ctrlList3.InsertColumn(7,"法律成绩",NULL,70,0);
	m_ctrlList3.InsertColumn(8,"汇编语言成绩",NULL,90,0);
	m_ctrlList3.InsertColumn(9,"选修成绩",NULL,70,0);
	m_ctrlList3.InsertColumn(10,"大学英语成绩",NULL,90,0);
	updata();
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CFinalDlg::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 CFinalDlg::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 CFinalDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CAboutDlg::OnOk2() 
{
char szHttpAddress[80];
	strcpy(szHttpAddress,"http://efxonline.ecjtu.jx.cn");
	ShellExecute(NULL, "open", szHttpAddress, NULL, NULL, SW_SHOWNORMAL);		
}

void CFinalDlg::OnClose() 
{
	if (AfxMessageBox("确认已经保存新建的档案!", MB_YESNO)==IDYES)
	{
		CFinalDlg::OnOK();
	}
	else return;	
}

void CFinalDlg::OnAbout() 
{
	CAboutDlg aboutdlg;
	aboutdlg.DoModal();
}

void CFinalDlg::updata(){
	m_ctrlList.DeleteAllItems();
		student xchg;//定义临时中间交换对象
		int r=1;
		for(int m=0;m<count;m++){//把成绩排名重新给对象
		for(int n=m+1;n<count;n++){
			if(stu[m].gettotal()<stu[n].gettotal()){//====冒泡实现每次把最大的排出来
				xchg=stu[m];
				stu[m]=stu[n];
				stu[n]=xchg;
			}
		}
		stu[m].setrang(r);
			r++;
		}
		for( m=0;m<count;m++){//按学号排名
			for(int n=m+1;n<count;n++){
				int a=int(atof((LPCTSTR)stu[m].getid()));
				int b=int(atof((LPCTSTR)stu[n].getid()));
				if(a<b){
					xchg=stu[m];
					stu[m]=stu[n];
						stu[n]=xchg;
				}
			}
			}
	LV_ITEM lvi[100];
	char ctotal[3],rang[3];
	for(int i=0;i<count;i++){
	lvi[i].mask = LVIF_TEXT;
	lvi[i].iItem = 0;
	lvi[i].iSubItem = 0;
	lvi[i].pszText =stu[i].getid();
	int inx=m_ctrlList.InsertItem(&lvi[i]);
	m_ctrlList.SetItemText(inx,1,stu[i].getname());
	m_ctrlList.SetItemText(inx,2,stu[i].getsex());
	m_ctrlList.SetItemText(inx,3,stu[i].getsub1());
	m_ctrlList.SetItemText(inx,4,stu[i].getsub2());
	m_ctrlList.SetItemText(inx,5,stu[i].getsub3());
	m_ctrlList.SetItemText(inx,6,stu[i].getsub4());
	m_ctrlList.SetItemText(inx,7,stu[i].getsub5());
	m_ctrlList.SetItemText(inx,8,stu[i].getsub6());
	m_ctrlList.SetItemText(inx,9,stu[i].getsub7());
	m_ctrlList.SetItemText(inx,10,stu[i].getsub8());
	_gcvt(stu[i].gettotal(),3,ctotal);
	m_ctrlList.SetItemText(inx,11,ctotal);
	_gcvt(stu[i].getrang(),3,rang);
	m_ctrlList.SetItemText(inx,12,rang);
	}
	m_ctrlList2.DeleteAllItems();
	double av[8]={0,0,0,0,0,0,0,0};
	int B_ren[8]={0,0,0,0,0,0,0,0};
	int P_ren[8]={0,0,0,0,0,0,0,0};
	int M_ren[8]={0,0,0,0,0,0,0,0};
	int G_ren[8]={0,0,0,0,0,0,0,0};
	int E_ren[8]={0,0,0,0,0,0,0,0};
	int temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8;
	for(i=0;i<count;i++){
	av[0]+=(atof((LPCTSTR)stu[i].getsub1())/count);
	av[1]+=(atof((LPCTSTR)stu[i].getsub2())/count);
	av[2]+=(atof((LPCTSTR)stu[i].getsub3())/count);
	av[3]+=(atof((LPCTSTR)stu[i].getsub4())/count);
	av[4]+=(atof((LPCTSTR)stu[i].getsub5())/count);
	av[5]+=(atof((LPCTSTR)stu[i].getsub6())/count);
	av[6]+=(atof((LPCTSTR)stu[i].getsub7())/count);
	av[7]+=(atof((LPCTSTR)stu[i].getsub8())/count);
	temp1=int(atof((LPCTSTR)stu[i].getsub1())/10);
	temp2=int(atof((LPCTSTR)stu[i].getsub2())/10);
	temp3=int(atof((LPCTSTR)stu[i].getsub3())/10);
	temp4=int(atof((LPCTSTR)stu[i].getsub4())/10);
	temp5=int(atof((LPCTSTR)stu[i].getsub5())/10);
	temp6=int(atof((LPCTSTR)stu[i].getsub6())/10);
	temp7=int(atof((LPCTSTR)stu[i].getsub7())/10);
	temp8=int(atof((LPCTSTR)stu[i].getsub8())/10);
	switch(temp1){
	case 9:E_ren[0]++;break;
	case 8:G_ren[0]++;break;
	case 7:M_ren[0]++;break;
	case 6:P_ren[0]++;break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -