学生信息管理系统一、设计目的学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理信息系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库管理信息系统的目的。二需求分析学生管理系统的开发目的是为了实现学生课程、学籍的信息化管理。本系统需要完成的功能有:学生管理、课程管理、成绩管理。1.学生管理:可对学生进行添加、删除、修改、查找和报表输出等功能,学生属性有:学号、姓名、性别、民族、出生日期和备注等属性。2.课程管理:可对课程进行添加、删除、修改、查找等功能,课程属性有:课程名称、课程号和课程学分属性。3.成绩管理:可对每一个班级的上课科目的学生成绩进行添加、删除、修改、查找等功能,成绩属性有:学生学号、、课程号、学院名称,等属性。三、系统模块的实现在系统中包括以下功能:系统管理、学生信息管理、课程信息管理、成绩信息管理。系统各模块关系如图所示:学生信息管理系统:用户登录界面系统主界面管理信息管理信息添加信息总查看学生信息查询学生个人信息查看修改信息删除信息添加学生信息学生信息总四概念结构设计:学生E-R图:学生成绩课程学号姓名性别出生日期民族学生电话家长电话课程号课程名成绩五逻辑结构设计:学生(学号,姓名,性别,民族,出生日期,学生电话,家长电话);课程(课程号,课程名,学分);成绩(学号,课程号,学院名称)六详细设计:1,登陆界面:为了系统的安全,在进入系统之前首先会出现一个登录模块,用户只有在输入正确的用户名和正确的密码之后,才能进入系统。登陆条件判断代码:voidCmysqlstudentDlg::OnClickedButton1(){//TODO:在此添加控件通知处理程序代码UpdateData(true);if(m_User==yyq&&m_PassWords==yyq){MessageBox(_T(登录成功!));//创建属性表对象CAddSheetsheet(_T());//设置属性对话框为向导对话框//sheet.SetWizardMode();//打开模态向导对话框sheet.DoModal();OnCancel();}Else{MessageBox(_T(运气不好呀!),NULL,MB_RETRYCANCEL|MB_ICONERROR);return;}}2系统主界面模块登陆成功后,即可进入,系统主界面模块。窗体名称为界面功能介绍。主界面为进入学生管理系统各模块的入口,用户可根据MenuStrip上面各个模块名称单击进入各个管理模块,从而进行对系统的管理操作。3各功能模块:1)学生管理可以从该界面得到全部学生的部分信息,实现代码:voidCMgeManagementPage::OnClickedButton4(){//////链接数据库mysql_init(&mysql);if(!mysql_real_connect(&mysql,localhost,root,yuyanqi,studentmessage,3306,NULL,0)){AfxMessageBox(_T(连接错误!\n));return;}////TODO:在此添加控件通知处理程序代码////////数据查看m_studentmanagementList.DeleteAllItems();//清空列表char*ch_query;ch_query=select*fromstudent;if(mysql_real_query(&mysql,ch_query,(UINT)strlen(ch_query))!=0){AfxMessageBox(_T(查询数据库失败));return;}CStringstr;CStringAstrA;MYSQL_RES*result;MYSQL_ROWrow;if(!(result=mysql_use_result(&mysql))){AfxMessageBox(_T(读取数据集失败));}//查询结果插入列表inti=0;while(row=mysql_fetch_row(result)){strA=row[0];str=strA;m_studentmanagementList.InsertItem(i,str);strA=row[1];str=strA;m_studentmanagementList.SetItemText(i,1,str);strA=row[2];str=strA;m_studentmanagementList.SetItemText(i,2,str);strA=row[3];str=strA;m_studentmanagementList.SetItemText(i,3,str);strA=row[4];str=strA;m_studentmanagementList.SetItemText(i,4,str);strA=row[5];str=strA;m_studentmanagementList.SetItemText(i,5,str);strA=row[6];str=strA;m_studentmanagementList.SetItemText(i,6,str);i++;}mysql_free_result(result);mysql_close(&mysql);/////////////////////}2)查看指定学生的信息:在查询框中输入对应的学号就可以得到该学生的信息,实现代码为:voidCMgeManagementPage::OnClickedFoundButton1(){////TODO:在此添加控件通知处理程序代码UpdateData(true);mysql_init(&mysql);if(!mysql_real_connect(&mysql,localhost,root,yuyanqi,studentmessage,3306,NULL,0)){AfxMessageBox(_T(连接错误!\n));return;}/////若没有输入,提示输入if(m_studentid1==){AfxMessageBox(_T(请输入学号!));m_studentid=;m_studentname=;m_studentsex=;m_stucall=;m_parcall=;UpdateData(false);return;}/////查询数据库CStringch_query;ch_query=(CString)select*fromstudentwherestu_number='+m_studentid1+';if(mysql_real_query(&mysql,(LPSTR)(LPCTSTR)ch_query,ch_query.GetLength()+1)!=0){AfxMessageBox(_T(查询数据库失败1));return;}MYSQL_RES*result;MYSQL_ROWrow;if(!(result=mysql_use_result(&mysql))){AfxMessageBox(_T(读取数据集失败2));return;}////若再次输入,则将前一次的结果清空if((row=mysql_fetch_row(result))==NULL){AfxMessageBox(Nobody);m_studentid=;m_studentname=;m_studentsex=;m_stucall=;m_parcall=;UpdateData(false);return;}//查询结果插入列表m_studentid=(CString)row[0];m_studentname=(CString)row[1];m_studentsex=(CString)row[2];m_stucall=(CString)row[5];m_parcall=(CString)row[6];UpdateData(false);mysql_free_result(result);mysql_close(&mysql);///////////////////}3)删除指定学生的信息:再输入学生的学号,既可以删除该学生的信息吗,实现代码为:voidCDeletepage::OnClickedOkButton1(){//TODO:在此添加控件通知处理程序代码UpdateData(true);MYSQLmysql;mysql_init(&mysql);if(!mysql_real_connect(&mysql,localhost,root,yuyanqi,studentmessage,3306,NULL,0)){AfxMessageBox(_T(连接错误!\n));return;}/////////////若输入为空,提示输入if(m_studentid2==){AfxMessageBox(_T(请输入学号!));return;}/////////////数据库的查询CStringch_query;ch_query=(CString)select*fromstudentwherestu_number='+m_studentid2+';if(mysql_real_query(&mysql,(LPSTR)(LPCTSTR)ch_query,ch_query.GetLength()+1)!=0){AfxMessageBox(_T(查询数据库失败));return;}MYSQL_RES*result;MYSQL_ROWrow;if(!(result=mysql_use_result(&mysql))){AfxMessageBox(_T(读取数据集失败));return;}//查看是否有此人if((row=mysql_fetch_row(result))==NULL){AfxMessageBox(Nobody);return;}mysql_free_result(result);/////////////////////////////////////////////////////////////////数据库的查询///////////////////////删除grade表CStringch_query1;ch_query1=(CString)deletefromgradewherestu_number='+m_studentid2+';if(mysql_real_query(&mysql,(LPSTR)(LPCTSTR)ch_query1,ch_query1.GetLength()+1)!=0){AfxMessageBox(_T(删除失败!));return;}elseAfxMessageBox(_T(GRADE表删除成功!));///////////////////////////////////////////////////数据库的查询/////////////////////////////////////////删除学生表CStringch_query2;ch_query2=(CString)deletefromstudentwherestu_number='+m_studentid2+';if(mysql_real_query(&mysql,(LPSTR)(LPCTSTR)ch_query2,ch_query2.GetLength()+1)!=0){AfxMessageBox(_T(删除失败!));return;}elseAfxMessageBox(_T(STUDENT表删除成功!));mysql_close(&mysql);}4)修改学生的信息:指定好学生的学号,就可以在编辑框中对学生的信息进行修改,但是表中的主码不可以修改,实现代码:voidCMgeChangePage::OnClickedChangedButton1(){//TODO:在ú此??加ó控?件t?知a处鋦理え?程ì序ò代洙?码?UpdateData(