日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++实现一个基于mfc的学生信息管理系统

發(fā)布時間:2024/8/1 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++实现一个基于mfc的学生信息管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、系統(tǒng)概述

本文設計的是學生信息管理系統(tǒng),能夠?qū)崿F(xiàn)權限管理即不同的用戶角色能夠擁有不同的限,角色主要是學生、教師和管理員,針對不同的用戶,有著不同的操作權限,學生角色只能夠查看到學生基礎信息,不能夠進行刪除和添加的操作,而教師和管理員則能夠?qū)崿F(xiàn)學生基礎信息的增加、刪除等。
本系統(tǒng)設計采用的是c++語言,使用的軟件是VS2017,數(shù)據(jù)庫使用的是MYSQL數(shù)據(jù)庫,數(shù)據(jù)庫可用Navicat 進行可視化操作。
系統(tǒng)的主要架構如下圖:

用戶首先進入到登錄界面,輸入用戶名和密碼,并選擇角色,進行身份的驗證,通過連接數(shù)據(jù)庫進行用戶名和密碼進行驗證,當用戶輸入的用戶名和密碼與數(shù)據(jù)庫中的一致的話就可以登陸進去,同時記錄用戶的角色,驗證用戶角色,判斷是否顯示學生成績的頁面,在對學生基礎信息與學生成績信息進行操作都需要進行用戶角色的驗證,驗證不通過則會提示權限不足,驗證通過則可以進行學生信息的增加、刪除等操作。

二、系統(tǒng)實現(xiàn)

1.環(huán)境搭建

  • 安裝VS2017軟件,比2017版本高的應該都可以,如果軟件版本比較2017低的話可能會導致兼容的問題。
  • 安裝MYSQL數(shù)據(jù)庫,我使用的是5.5.56版,5.5.*版本應該是很穩(wěn)定的一個版本了。
  • VS2017軟件連MYSQL接數(shù)據(jù)庫的配置,由于時間比較長了,在這里就不詳細說了,大家可以根據(jù)網(wǎng)上的教程自行配置。
  • 2.數(shù)據(jù)庫構建以及數(shù)據(jù)源的配置

  • 利用Navicat軟件連接MYSQL,之后可以對數(shù)據(jù)庫進行可視化的操作。 首先創(chuàng)建一個連接,連接你本地的MYSQL數(shù)據(jù)庫;連接之后創(chuàng)建一個數(shù)據(jù)庫managersystem,名字自己取即可;然后在數(shù)據(jù)庫創(chuàng)建三張表,三張表如下圖。
    第一張表是用戶表,主要有三個字段,userName,userPassword和role,三個字段分別存儲用戶的用戶名、用戶密碼和角色名稱(用戶權限)。
    另外兩張表就是學生信息表和學生成績表,主要是存儲學生基本信息和學生成績信息,就不作詳細說明了。
    學生信息表t_student:
    學生成績表t_mark:
  • 2.配置MYSQL數(shù)據(jù)源,首先在電腦中的【控制面板】---->【管理工具】里打開MYSQL數(shù)據(jù)庫ODBC驅(qū)動,找不到則去網(wǎng)上下載ODBC驅(qū)動程序,如下圖所示。

    3. 創(chuàng)建一個MYSQL數(shù)據(jù)源,選擇MySQLODBC 5.1 Driver 驅(qū)動程序,如下圖所示。

    之后會彈出一個配置數(shù)據(jù)庫連接信息的界面,按照提示填寫,如下圖所示。

    4. 登錄界面
    登錄界面能夠?qū)崿F(xiàn)三種角色的登錄,當用戶輸入賬戶和密碼之后,通過連接數(shù)據(jù)庫對用戶賬戶和密碼進行判斷,驗證之后,如果用戶名和密碼正確,則能夠登錄到系統(tǒng)中,如果驗證失敗,則提示錯誤信息。登錄界面如圖。

    登錄界面實現(xiàn)數(shù)據(jù)庫驗證的主要代碼是:

    mysql_query(&m_sqlCon, "SET NAMES GB2312");query.Format("select userName,userPassword,role from t_user where userName = \'%s\' and userPassword=\'%s\'", this->userName, this->userPassword);int ress = mysql_query(&m_sqlCon, (char*)(LPCSTR)query);if (ress == 0) //檢測查詢成功{res = mysql_store_result(&m_sqlCon);if (mysql_num_rows(res) == 0) //查詢結果為空{AfxMessageBox("用戶不存在");}else{row = mysql_fetch_row(res);if (strIdentify==row[2]){mysql_free_result(res);CDialog::OnOK();MAINLOG mianlog;mianlog.DoModal();//讓對話框?qū)ο笠杂心J叫问斤@示出來UpdateData(false);mysql_close(&m_sqlCon);//關閉Mysql連接}else{AfxMessageBox("密碼錯誤!");}}}

    在登錄之后同時將登錄的用戶身份信息記錄,以便后續(xù)使用,程序主要為:

    UpdateData(true);int nIndex = identify.GetCurSel();strIdentify = str[nIndex]; 其中 static CString str[3] = { "管理員","教師","學生"}; static CString strIdentify;

    5.學生基礎信息界面
    登錄到系統(tǒng)界面后,顯示學生基礎信息,學生角色只可查詢,教師和管理員則可以進行增加和刪除學生基礎信息。用戶可自己選擇每頁顯示的數(shù)據(jù)數(shù)。也可以通過學號查詢該學生信息。顯示界面如圖。

    用戶可以按“學號”進行查詢,也可以進行添加、刪除、選擇每頁顯示的個數(shù)等操作;
    操作數(shù)據(jù)庫實現(xiàn)分頁查詢的主要程序為:

    mysql_query(&m_sqlCon, "SET NAMES GB2312");sql.Format("SELECT studentId,studentNumber,name,sex,age,class,phone,qq,college FROM t_student LIMIT %d,%d", intStart, pageSize);int ress = mysql_query(&m_sqlCon, (char*)(LPCSTR)sql);if (ress == 0) {//檢測成功res = mysql_store_result(&m_sqlCon);mysql_close(&m_sqlCon);//關閉Mysql連接

    學生是沒有添加和刪除的權限,會提示警告:

    當切換用戶到教師或者管理員的角色時,就能夠?qū)崿F(xiàn)學生信息的添加和刪除操作,如圖所示:

    實現(xiàn)添加學生基礎信息的程序主要為:

    mysql_init(&m_sqlCon);if (!mysql_real_connect(&m_sqlCon,"localhost","root","4321","managersystem",3306,NULL,0)) {AfxMessageBox(_T("數(shù)據(jù)庫連接失敗!"));return;}else{UpdateData(true);char* studentNumber1 = (char*)studentNumber.GetBuffer();char* studentName1 = (char*)studentName.GetBuffer();char* studentSex1 = (char*)studentSex.GetBuffer();char* studentAge1 = (char*)studentAge.GetBuffer();char* studClass1 = (char*)studClass.GetBuffer();char* telephone1 = (char*)telephone.GetBuffer();char* stuQQ1 = (char*)stuQQ.GetBuffer();char* college1 = (char*)college.GetBuffer();mysql_query(&m_sqlCon,"SET NAMES GB2312");//char insert[1000];sql.Format("INSERT INTO t_student(studentNumber,name,sex,age,class,phone,qq,college)VALUES(\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\')",studentNumber1,studentName1,studentSex1,studentAge1,studClass1,telephone1,stuQQ1,college1);int ress = mysql_query(&m_sqlCon, (char*)(LPCSTR)sql);if (ress == 0){AfxMessageBox(_T("插入數(shù)據(jù)成功!"));CDialog::OnOK();INFORADD inforAdd;inforAdd.DoModal();OnInitDialog();UpdateData(false);mysql_close(&m_sqlCon);//關閉Mysql連接}else {AfxMessageBox(_T("插入數(shù)據(jù)失敗!"));}}

    同樣地,點擊“按鈕”輸入學號,就可以實現(xiàn)刪除的操作,如圖為實現(xiàn)刪除操作:

    6.學生成績顯示界面
    當角色為“教師”或者“管理員”時,在學生基礎信息界面就能夠顯示“學生成績表”的按鈕。點擊“學生成績表”,就可以跳轉(zhuǎn)到學生成績的界面。

    學生成績界面同樣有刪除、添加的操作,有可以實現(xiàn)按添加查詢,可以按照時間查詢和按照學號查詢。
    按照年份實現(xiàn)查詢的主要程序為:

    mysql_query(&m_sqlCon2, "SET NAMES GB2312");sql2.Format("SELECT id,studentId,objectOriented,english,matrixAnalysis,term,SUM(objectOriented+english+matrixAnalysis) AS markSum,AVG((objectOriented+english+matrixAnalysis)/3) AS average FROM t_mark WHERE YEAR(term)=\'%s\' GROUP by id", this->term);int ress = mysql_query(&m_sqlCon2, (char*)(LPCSTR)sql2);if (ress == 0) {//檢測成功res2 = mysql_store_result(&m_sqlCon2);mysql_close(&m_sqlCon2);//關閉Mysql連接while ((row2 = mysql_fetch_row(res2))){//mysql_display(&mysql,sqlrow);stuMark1.setId(row2[0]);stuMark1.setsId(row2[1]);stuMark1.setsObjectOriented(row2[2]);stuMark1.setsEnglish(row2[3]);stuMark1.setsMatrixAnalysis(row2[4]);stuMark1.setTerm(row2[5]);stuMark1.setSumMark(row2[6]);stuMark1.setAverage(row2[7]);stuMarkInfor.push_back(stuMark1);}

    在這里并沒有寫的很詳細,寫細的話東西還是挺多的,就不一一贅述了。
    總結一下,這個簡單的mfc程序,原理很簡單,涉及到了C++語言基礎、mfc相關操作知識和MYSQL數(shù)據(jù)庫的知識,在最后附上源碼。
    源碼:mfc工程文件含數(shù)據(jù)庫文件
    提取碼:k35x

    總結

    以上是生活随笔為你收集整理的C++实现一个基于mfc的学生信息管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。