程序设计实践设计报告1.课题概述1.1课题目标和主要内容●主要内容这个实验我主要是应用VS C++ 2010实现学生信息管理系统的设计,主要实现学生管理系统中选择学院和专业,学生个人信息管理,班级管理,成绩和选课等功能。
是一个基于对话框的应用程序。
●实验目的:a.了解windows编程的基础知识,掌握MFC应用程序的基本知识;b.基本掌握面向对象程序设计的基本思路和方法;c.掌握利用visual C++开发应用程序的一般步骤和方法;1.2系统的主要功能2. 系统设计2.1 系统总体框架2.2 系统详细设计A.学生基本信息:1.添加人员信息:编写CStudentDlg::OnAdd()函数,该函数完成对学生基本信息的添加,因为每个学生都有唯一的学号,所以在添加人员信息的时候,会先判断学号是否已经存在,若是重复,则需要重新输入学号,再完成学生信息的添加,点击确定后,才能完成对管理系统的修改。
2.编辑学生信息编写CStudentDlg::OnEdit()函数,对已有的学生信息进行编辑和修改,选中需要修改的信息,在对应栏中写入正确的信息,然后点击编辑,点击确定,完成编辑3.删除学生信息编写CStudentDlg::OnDelete()函数,对现有的学生信息进行删除,选中需要删除的信息,点击删除,然后确定,完成删除。
B.班级信息有CAllInfor::GetAveGrade()函数和CClassSort::InsertSort()函数来完成班级显示信息里的排名,在课程成绩中获得成绩求得总成绩,然后求得平均,进行排名C.课程成绩1.添加课程及成绩编写CGradeDlg::OnAdd()函数,输入对应的学号,课程名字,上课时间以及成绩,完成添加。
2.查询某个学号的所有成绩编写CGradeDlg::OnSearch()函数,输入学号,首先判断学号是否存在,若不存在,弹出对话框提醒学号不存在,重新输入,正确后在界面显示相应信息。
3.编辑课程成绩编写CGradeDlg::OnEdit()函数,对已有的课程成绩进行编辑和修改,需要选中之后,在相应栏中做出修改,点击编辑,完成新的编辑,点击确定,完成最后编辑。
4.删除课程及其成绩编写CGradeDlg::OnDelete2()函数,选中需要删除的课程及其成绩,然后删除,最后点击确定完成最后删除操作。
2.3 关键算法分析算法1:void CStudentDlg::OnBnClickedAdd()void CStudentDlg::OnBnClickedAdd(){// TODO: 在¨²此ä?添¬¨ª加¨®控?件t通ª¡§知a处ä|理¤¨ª程¨¬序¨°代䨲码?UpdateData(TRUE);list<CAllInfor>::iterator p;bool judge = true;for ( p = m_AllInformation.begin();p != m_AllInformation.end();++p){if (p->m_Stu.m_School_Id == m_SchoolId){judge = false;}}if (judge){CStudent Stu(m_Name,m_Sex,m_Class,m_SchoolId,m_College);CAllInfor obj(Stu);m_AllInformation.push_back(obj);for (int i = 0;;i++){if (m_List.GetItemText(i,0)==""){int nRow = m_List.InsertItem(i,m_Name); //插?入¨?行Dm_List.SetItemText(nRow, 1,m_Sex); //设¦¨¨置?数ºy据Ym_List.SetItemText(nRow, 2,m_Class); //设¦¨¨置?数ºy据Ym_List.SetItemText(nRow, 3,m_SchoolId); //设¦¨¨置?数ºy据Ym_List.SetItemText(nRow, 4,m_College); //设¦¨¨置?数ºy据Ybreak;}}}else{MessageBox("学¡ì号?重?复¡ä,ê?请?重?新?输º?入¨?!ê?");}m_SchoolId ="";m_Sex = "";m_Name = "";m_College = "";m_Class = "";UpdateData(FALSE);}void CStudentDlg::OnBnClickedDelele(){// TODO: 在¨²此ä?添¬¨ª加¨®控?件t通ª¡§知a处ä|理¤¨ª程¨¬序¨°代䨲码?CString sname = m_List.GetItemText(m_SelectRow,0);list<CAllInfor>::iterator p;for (p = m_AllInformation.begin();p != m_AllInformation.end();++p){if (p->m_Stu.m_Name == sname){m_AllInformation.erase(p);break;}}m_List.DeleteItem(m_SelectRow);m_SchoolId ="";m_Sex = "";m_Name = "";m_College = "";m_Class = "";UpdateData(FALSE);}[1] 算法功能选择相应的学院和专业后实现相应的添加功能,实现学生个人信息的添加与管理 [2] 算法基本思想在类向导中为按钮添加相应的相应函数,并为类添加所需的虚函数,添加后在函数的相应位置添加初始化等相应代码。
算法2:函数名Void CClassdoDlg::OnOK(){// TODO: 在此添加专用代码和或调用类UpdateData(TRUE);int i,j;list<CAllInfor>::iterator p;for(p = m_AllInformation.begin();p != m_AllInformation.end();++p) {if (p->m_Stu.m_Class == m_Class_Num){Classort temp(p->m_Stu.m_Name,p->GetAveGrade());Stu.push_back(temp);}}Classort *pSort = new Classort[Stu.size()];list<Classort>::iterator ptr;for (i = 0,ptr = Stu.begin();ptr != Stu.end();++ptr,++i){pSort[i] = *ptr;}InsertSort(pSort,Stu.size());for (j = 0;j < Stu.size();++j){m_list.InsertItem(j,pSort[j].Name);CString aveGrd,Amount;aveGrd.Format("%f",pSort[j].aveGrade);m_list.SetItemText(j,1,aveGrd);Amount.Format("%d",j+1);m_list.SetItemText(j,2,Amount);}CDialog::OnOK();}void CClassdoDlg::InsertSort(Classort a[], int n){Classort temp;int i,j;for (i = 0;i < n;i++){j = i;temp = a[i];while (j > 0 && temp.aveGrade > a[j - 1].aveGrade){a[j] = a[j - 1];j--;}a[j] = temp;}}BOOL CClassdoDlg::OnInitDialog(){CDialog::OnInitDialog();// TODO: 在¨²此ä?添¬¨ª加¨®额?外ªa的Ì?初?始º?化¡¥DWORD styles = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;ListView_SetExtendedListViewStyleEx(m_list.m_hWnd, styles, styles );m_list.InsertColumn(0,"姓名",LVCFMT_CENTER,70);m_list.InsertColumn(1,"平均¨´成绩",LVCFMT_CENTER,100);m_list.InsertColumn(2,"排名",LVCFMT_CENTER,70);CClassdoDlg *pParent = (CClassdoDlg)GetParent();m_AllInformation.clear();m_AllInformation = pParent->m_AllInformation;return TRUE; // return TRUE unless you set the focus to a control // 异°¨¬常¡ê: OCX 属º?性?页°3应®|返¤¦Ì回? FALSE}void CTongxinDlg::OnClickedButton1()//学生个人信息的单击相应函数{// TODO: 在此添加控件通知处理程序代码CStudentDlg Stu;Stu.DoModal();}void CTongxinDlg::OnClickedButton2()//班级信息{// TODO: 在此添加控件通知处理程序代码CClassdoDlg dlg;dlg.DoModal();}void CTongxinDlg::OnClickedButton3()//成绩和选课{// TODO: 在此添加控件通知处理程序代码CGradeDlg Lson_Grd;Lson_Grd.DoModal();}2.4 其他包括使用了哪些面向对象的知识,继承、多态、模板类、STL等有助于提高代码简洁和效率的方法说明。