版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机高级语言课程设计报告学生成绩管理系统(MFC)班级:201131学号:20131000349姓名:马瑞琪日期:2013年1月17号一 课程设计题目与要求(1)增加记录:要求可以连续增加多条记录。(2)删除一个学生的记录:要求可以先查找,再删除。删除前,要求用户确认.(3)成绩修改:若输入错误可进行修改;要求可以先查找,再修改。(4)查找:可以根据姓名(或学号)查找某个学生的课程成绩,查找某门课程成绩处于指定分数段内的学生名单等等。(5)排序功能:要求按总分进行排序(从高到低),若总分相同,则按数学排序;若总分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;(7)文件操作:
2、可以打开文件,显示班级的所有学生信息;可以将增加或修改后的成绩重新写入文件;可以将排序好的信息写入新的文件. 二 需求分析利用MFC来实现这一程序,需要定义一个数组,来贮存学生的信息,并且这个数组在整个程序里面都要能够用到.实现录入这个功能,需要添加一个列表控件,并且对列表进行初始化,设置列表的风格和大小。实现添加这个功能,需要增加几个列表的控件变量,来接受要添加的新的学生信息。实现修改这一功能,需要用添加的几个控件变量来接受要修改的信息,并且储存在数组中,然后将修改后的信息显示在列表上.实现排序这一功能,需要把数组中的数进行比较,然后将排完序的成绩显示在列表上。实现删除这一功能,需要把删除的
3、那个人用下一个人的信息把这个人的信息代替,然后显示在列表中。三 概要设计主界面退出排序删除修改查找录入该程序有六大模块:1. 录入模块;2. 查找模块;3. 修改模块;4. 删除模块;5. 排序模块;6. 退出模块; 四 详细设计1:界面设计源代码BOOL CMyDlg::OnInitDialog()CDialog::OnInitDialog();/ Add ”About.。" menu item to system menu./ IDM_ABOUTBOX must be in the system command range。ASSERT(IDM_ABOUTBOX 0xFFF0)
4、= IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX 0xF000);CRect rect; m_programLangList。GetClientRect(rect); / 为列表视图控件添加全行选中和栅格风格 m_programLangList.SetExtendedStyle(m_programLangList。GetExtendedStyle() LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); m_programLangList。InsertColumn(0, _T(”学号”), LVCFMT_CENTER, rect。Width(
5、)/6, 0); m_programLangList。InsertColumn(1, _T(”姓名”), LVCFMT_CENTER, rect。Width()/6, 1); m_programLangList.InsertColumn(2, _T(”数学”), LVCFMT_CENTER, rect.Width()/6, 2); m_programLangList。InsertColumn(3, _T(”英语”), LVCFMT_CENTER, rect.Width()/6, 3); m_programLangList.InsertColumn(4, _T(”物理”), LVCFMT_CEN
6、TER, rect.Width()/6, 4); m_programLangList。InsertColumn(5, _T("总分”), LVCFMT_CENTER, rect。Width()/6, 5); CMenu pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu。LoadString(IDS_ABOUTBOX);if (!strAboutMenu。IsEmpty()pSysMenuAppendMenu(MF_SEPARATOR);pSysMenu->
7、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 dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE
8、; / return TRUE unless you set the focus to a control界面设计效果;2,。类的函数成员域数据成员struct studentstring name;string num;int mat;int phy;int eng;int total_score;;class CMyDlg : public CDialog/ Constructionpublic:CMyDlg(CWnd pParent = NULL);/ standard constructor/ Dialog Data/AFX_DATA(CMyDlg)enum IDD = IDD_MY_
9、DIALOG ;CListCtrlm_programLangList;CStringm_name;intm_phy;intm_total_score;intm_mat;intm_eng;CStringm_num;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CMyDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV support/AFX_VIRTUAL void show(); void sort(); v
10、oid research();struct student a100;int n ;3。录入模块;void CMyDlg::OnButton1() show();/ TODO: Add your control notification handler code herevoid CMyDlg:show() ifstream ifile;ifile。open(”成绩原数据。txt");int i=0;while(1)>ai.mat>ai。eng>ai。phy;i+;if(ifile。eof()!=0) break; n=i;m_p
11、rogramLangList。DeleteAllItems();for(i=n-2;i>=0;i)CString c1,c2,c3,c4;c1.Format(_T("d”),ai。mat);c2。Format(_T(”%d”),ai.eng);c3.Format(_T(”d”),ai。phy);ai。total_score=ai。mat+ai.eng+ai。phy;c4.Format(_T(”d”),ai.total_score);m_programLangList。InsertItem(0, _T(ai。num。c_str()); m_programLangList。SetI
12、temText(0, 1,_T(。c_str()); m_programLangList.SetItemText(0, 2, _T(c1);m_programLangList.SetItemText(0, 3, _T(c2); m_programLangList.SetItemText(0, 4, _T(c3));m_programLangList。SetItemText(0, 5, _T(c4);ifile。close();4。查找模块;void CREA:OnOK() / TODO: Add extra validation hereUpdateData(true); int
13、 i=0;while (i!=n)string ch = m_num;string c=m_name;if(ch=pi.numc=)CString c1,c2,c3,c4;c1。Format(_T(”%d"),pi。eng);c2。Format(_T(”d”),pi.phy);c3.Format(_T("d"),pi。mat);c4。Format(_T(”%d”),pi。total_score);m_crea.InsertItem(0, _T(pi。num。c_str()); m_crea。SetItemText(0, 1,_T(。c_
14、str(); m_crea.SetItemText(0, 2, _T(c1);m_crea.SetItemText(0, 3, _T(c2)); m_crea.SetItemText(0, 4, _T(c3);m_crea.SetItemText(0, 5, _T(c4));break;+i;if(i=n1)m_crea。DeleteAllItems();UpdateData(true);MessageBox(”没有这个学号!”);5。修改模块;void CMyDlg::Oncha() UpdateData(TRUE);int i=0;while (i!=n)string c=m_num;if
15、(c=ai。num) ai.num=m_num; =m_name; ai。mat=m_mat; ai.eng=m_eng; ai。phy=m_phy;ai。total_score=m_total_score;break;/ TODO: Add extra validation herei+;UpdateData(false); m_programLangList。DeleteAllItems();for(i=0;in1;i+)CString c1,c2,c3,c4;c1。Format(_T("d”),ai.mat);c2.Format(_T(”%d”),ai。eng);
16、c3。Format(_T("d"),ai.phy);c4。Format(_T("d"),ai。total_score);m_programLangList.InsertItem(0, _T(ai。num。c_str())); m_programLangList。SetItemText(0, 1,_T(.c_str()); m_programLangList.SetItemText(0, 2, _T(c1);m_programLangList。SetItemText(0, 3, _T(c2)); m_programLangList。SetIt
17、emText(0, 4, _T(c3);m_programLangList.SetItemText(0, 5, _T(c4));ofstream ofile;ofile。open("修改后的成绩数据.txt”);int k;for(k=0;k=n2;k+)ofile<<” "<ak.num” ”<<” ”<ak。mat" ”ak。phy<" ”<ak.eng<endl;7. 删除模块;void CMyDlg:Ondel() int i,j,m;for(m=0;m=1;m+)string
18、c=m_num;for(i=0;i=n;i+)if(c=ai。num)n-;for(j=i;j=n;j+) aj=aj+1; m_programLangList。DeleteAllItems();UpdateData(true); for(i=0;in1;i+)CString c1,c2,c3,c4;c1。Format(_T(”d"),ai.mat);c2.Format(_T(”%d"),ai。eng);c3。Format(_T("%d”),ai。phy);c4。Format(_T("%d”),ai.total_score);m_programLangL
19、ist.InsertItem(i, _T(ai.num。c_str()); m_programLangList。SetItemText(i, 1,_T(。c_str())); m_programLangList.SetItemText(i, 2, _T(c1));m_programLangList.SetItemText(i, 3, _T(c2); m_programLangList。SetItemText(i, 4, _T(c3);m_programLangList.SetItemText(i, 5, _T(c4);8. 排序模块;void CMyDlg::sort()int
20、i,k,m;student t;i=n+1;for(k=0;ki2;k+)for(m=k+1;mi-2;m+)if(ak。total_scoream。total_score)t=ak;ak=am;am=t;else if(ak.total_score=am.total_score)if(ak.matam。mat)t=ak;ak=am;am=t;else if(ak。mat=am。mat)if(ak.phy<am.phy)t=ak;ak=am;am=t;else if(ak。phy=am。phy)if(ak。engam。eng)t=ak;ak=am;am=t; m_programLangL
21、ist。DeleteAllItems(); for(i=n2;i=0;i)CString c1,c2,c3,c4;c1。Format(_T("d”),ai.mat);c2。Format(_T("d”),ai。eng);c3。Format(_T(”%d"),ai.phy);c4。Format(_T(”d"),ai.total_score);m_programLangList.InsertItem(0, _T(ai。num.c_str()); m_programLangList。SetItemText(0, 1,_T(.c_str()); m_
22、programLangList。SetItemText(0, 2, _T(c1);m_programLangList。SetItemText(0, 3, _T(c2)); m_programLangList。SetItemText(0, 4, _T(c3);m_programLangList.SetItemText(0, 5, _T(c4)); ofstream ofile;ofile。open(”排序后的成绩数据。txt");int l;for(l=0;l=n-2;l+)ofile<” ”al。num" "<<" ”&l
23、t;al。mat" ”<al。phy<” ”al。eng<endl;void CMyDlg::Onsort() sort();/ TODO: Add your control notification handler code here9. 退出模块;void CMyDlg::OnButton2() EndDialog(0); / TODO: Add your control notification handler code here 五 测试1 录入22。查找3。修改“马晴”4,。排序六 结论实现了MFC设计,可以一键删除,修改,排序,录入。不足:没有实现模糊查
24、找。七 附录源代码:/ 学生成绩管理系统Dlg.cpp : implementation file#include ”stdafx。h”#includefstream>#include ”学生成绩管理系统。h”#include "学生成绩管理系统Dlg。h"include string。hinclude "ABC.h"#include ”REA。h”#include "DEL。h"#include "HANG.h”include stdio。husing namespace std;ifdef _DEBUG#defin
25、e new DEBUG_NEWundef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)prote
26、cted:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg::CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange pDX)CDialog:
27、:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg dialogCMyDlg::CMyDlg(CWnd pParent /*=NULL*/): CDialog(CMyDlg:IDD, pParent)n =0;/AFX_DATA_INIT(CMyDlg)m_name = _T(”);m_phy =
28、 0;m_total_score = 0;m_mat = 0;m_eng = 0;m_num = _T(”);/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CMyDlg:DoDataExchange(CDataExchange pDX)CDialog::DoDataExchange(pDX);/AFX_DATA_MAP(CMyDlg)DDX_Control(pDX, ID
29、C_LIST1, m_programLangList);DDX_Text(pDX, IDC_name, m_name);DDX_Text(pDX, IDC_phy, m_phy);DDX_Text(pDX, IDC_plus, m_total_score);DDX_Text(pDX, IDC_mat, m_mat);DDX_Text(pDX, IDC_eng, m_eng);DDX_Text(pDX, IDC_Num, m_num);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMyDlg, CDialog)/AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMA
30、ND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_add, Onadd)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_sort, Onsort)ON_BN_CLICKED(IDC_search, Onsearch)ON_BN_CLICKED(IDC_del, Ondel)ON_BN_CLICKED(IDC_cha, Oncha)ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)ON_BN_CLICKED(IDC_BUTTON2, O
31、nButton2)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg message handlersBOOL CMyDlg: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);CRect rect; m_pr
32、ogramLangList。GetClientRect(rect); / 为列表视图控件添加全行选中和栅格风格 m_programLangList.SetExtendedStyle(m_programLangList。GetExtendedStyle() LVS_EX_FULLROWSELECT LVS_EX_GRIDLINES); m_programLangList.InsertColumn(0, _T("学号”), LVCFMT_CENTER, rect。Width()/6, 0); m_programLangList。InsertColumn(1, _T("姓名”),
33、 LVCFMT_CENTER, rect。Width()/6, 1); m_programLangList。InsertColumn(2, _T("数学”), LVCFMT_CENTER, rect。Width()/6, 2); m_programLangList.InsertColumn(3, _T(”英语”), LVCFMT_CENTER, rect。Width()/6, 3); m_programLangList。InsertColumn(4, _T(”物理”), LVCFMT_CENTER, rect。Width()/6, 4); m_programLangList.Inse
34、rtColumn(5, _T("总分”), LVCFMT_CENTER, rect。Width()/6, 5); CMenu pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu-AppendMenu(MF_SEPARATOR);pSysMenuAppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/
35、 Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoi
36、d CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)if ((nID 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout。DoModal();elseCDialog::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 mode
37、l,/ this is automatically done for you by the framework.void CMyDlg:OnPaint() if (IsIconic())CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc。GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMet
38、rics(SM_CYICON);CRect rect;GetClientRect(rect);int x = (rect.Width() cxIcon + 1) / 2;int y = (rect.Height() cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window。HCURSOR CMyDl
39、g::OnQueryDragIcon()return (HCURSOR) m_hIcon;/DEL void CMyDlg:Onadd() /DEL /DEL / TODO: Add your control notification handler code here/DEL /DEL void CMyDlg:Onadd() / TODO: Add your control notification handler code hereUpdateData(true);=m_name;an1。num=m_num;an1.eng=m_eng;an1.mat=m_mat;an-1。
40、phy=m_phy;an1。total_score=m_mat+m_eng+m_phy;n+;CString c1,c2,c3,c4;c1。Format(_T(”d”),an2。mat);c2。Format(_T(”d”),an-2。eng);c3。Format(_T(”d"),an2。phy);c4。Format(_T(”d”),an2.total_score);m_programLangList。InsertItem(n2, _T(an-2。num.c_str())); m_programLangList。SetItemText(n-2, 1,_T(.c_str(
41、)); m_programLangList。SetItemText(n2, 2, _T(c1));m_programLangList。SetItemText(n2, 3, _T(c2)); m_programLangList.SetItemText(n-2, 4, _T(c3);m_programLangList。SetItemText(n2, 5, _T(c4);ofstream ofile;ofile。open(”添加后的成绩数据。txt”);int k;for(k=0;k=n-2;k+)ofile<" ”ak。num<” ”<” "&l
42、t;<ak。mat<" ”<ak。phy” "<ak。eng<endl;void CMyDlg::OnButton1() show();/ TODO: Add your control notification handler code herevoid CMyDlg:show() ifstream ifile;ifile。open("成绩原数据。txt”);int i=0;while(1)ifile>ai。num>>ai。mat>ai。engai。phy;i+;if(ifile.eof()!=0
43、) break; n=i;m_programLangList。DeleteAllItems();for(i=n2;i=0;i-)CString c1,c2,c3,c4;c1。Format(_T("d"),ai。mat);c2。Format(_T(”d"),ai。eng);c3。Format(_T(”d”),ai。phy);ai。total_score=ai。mat+ai。eng+ai。phy;c4。Format(_T("d"),ai。total_score);m_programLangList。InsertItem(0, _T(ai。num.c
44、_str(); m_programLangList。SetItemText(0, 1,_T(。c_str()); m_programLangList.SetItemText(0, 2, _T(c1));m_programLangList.SetItemText(0, 3, _T(c2)); m_programLangList.SetItemText(0, 4, _T(c3));m_programLangList.SetItemText(0, 5, _T(c4));ifile.close();void CMyDlg::sort()int i,k,m;student t;i=n+1;
45、for(k=0;ki2;k+)for(m=k+1;mi2;m+)if(ak。total_score<am.total_score)t=ak;ak=am;am=t;else if(ak.total_score=am。total_score)if(ak。mat<am。mat)t=ak;ak=am;am=t;else if(ak。mat=am.mat)if(ak。phyam。phy)t=ak;ak=am;am=t;else if(ak。phy=am。phy)if(ak.engam.eng)t=ak;ak=am;am=t; m_programLangList.DeleteAllItems(
46、); for(i=n2;i>=0;i)CString c1,c2,c3,c4;c1.Format(_T(”%d”),ai。mat);c2。Format(_T("%d”),ai。eng);c3。Format(_T("d”),ai。phy);c4。Format(_T(”d”),ai.total_score);m_programLangList。InsertItem(0, _T(ai。num.c_str()); m_programLangList。SetItemText(0, 1,_T(。c_str(); m_programLangList。SetItemTe
47、xt(0, 2, _T(c1);m_programLangList。SetItemText(0, 3, _T(c2); m_programLangList。SetItemText(0, 4, _T(c3));m_programLangList。SetItemText(0, 5, _T(c4)); ofstream ofile;ofile.open(”排序后的成绩数据。txt");int l;for(l=0;l<=n-2;l+)ofile<” "al。num” ”<<” ”al。mat<<" ”<<al。
48、phy” "<<al。eng<endl;void CMyDlg:Onsort() sort();/ TODO: Add your control notification handler code herevoid CMyDlg::Onsearch() CREA dal;dal.n = n;dal。p = a;dal。DoModal();/ TODO: Add your control notification handler code herevoid CMyDlg:Ondel() int i,j,m;for(m=0;m<=1;m+)string c=m_num; for(i=0;i=n;i+)if(c=ai.num)n;for(j=i;j=n;j+) aj=aj+1; m_programLangList。DeleteAllItems();UpdateData(true); for(i=0;i<n-1;i+)CStri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年宁波城市职业技术学院单招职业技能考试题库及答案详细解析
- 2026年基金份额质押合同
- 2026年锅炉清洗合同
- 课题1 物质的变化和性质 教案 人教版九年级化学上册
- 高中语文人教部编版选择性必修中册 同步分层作业10 苏武传(含答案)
- 2025-2026学年儿童挖掘机教学设计教程
- 2025~2026学年安徽安庆市怀宁县第一学期期末教学质量检测八年级数学试卷卷
- 乡镇街道内部审计制度
- 互金公司风控制度
- 人事部门绩效考核制度
- 副食品配送卫生管理制度
- 新疆神火煤电有限公司电解铝大修渣无害化处理综合利用项目环评报告
- GB/T 45554-2025种猪生产性能测定技术规范
- 单兵战术动作低姿匍匐前进教案
- 2025新人教版七年级下册英语 Unit 8知识点梳理及语法讲义(答案版)
- 水库安全管理培训
- 工程劳务外包合同范本大全
- 统编版语文四年级下册 第一单元基础过关卷(试题)
- 自考《13180操作系统》考前强化练习试题库及答案
- 人工智能芯片设计 课件 周巍 第4-7章-人工智能与深度学习 -人工智能芯片架构设计
- 医院患者安全与防范措施管理规章制度
评论
0/150
提交评论