基于php的成绩管理设计(含源文件)
歡迎添加微信互相交流學習哦!
項目源碼:https://gitee.com/oklongmm/biye
?
1、開發背景
90年代中期,由于Internet 的迅速普及,使Intranet成為Internet技術在企業管理信息系統中的應用和延伸,形成了集計算機,計算機網絡、數據庫、分布式計算等于一體的信息技術綜合體,它打破了時間和地域的界限,使信息交流變得快捷、準確,為建立現代企業管理信息系統提供了充足的條件。企業信息管理系統在此基礎上延伸、擴展,使之上下、內外全面貫通。隨著Internet技術的興起,對C/S結構(客戶機和服務器結構)的一種變化或者改進的結構。在這種結構下,用戶界面完全通過WWW瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在服務器端實現,形成所謂3-tier結構。B/S結構(瀏覽器/服務器模式),主要是利用了不斷成熟的WWW瀏覽器技術,結合瀏覽器的多種Script語言(VBScript、JavaScript…)和ActiveX技術,用通用瀏覽器就實現了原來需要復雜專用軟件才能實現的強大功能,并節約了開發成本,是一種全新的軟件系統構造技術。隨著Windows 98/Windows 2000將瀏覽器技術植入操作系統內部,這種結構更成為當今應用軟件的首選體系結構。顯然B/S結構應用程序相對于傳統的C/S結構應用程序將是巨大的進步。
2、系統描述
經過調研及分析討論,學生成績管理系統主要完成以下功能:
(1)學生個人信息維護:主要是完成學生個人信息的修改,學生用戶只能對自己的信息操作。
(2)學生成績檢索:主要是完成學生個人成績的查詢,學生用戶只能對自己的成績進行檢索。
(3)老師個人信息維護:主要是完成老師個人信息的修改,老師用戶只能對自己的信息操作。
(4)學生成績維護: 主要是完成老師對任課課程的學生成績進行檢索、添加、修改,老師用戶只能對自己任課課程的成績進行操作。
3、數據分析
3.1、數據流圖
通過需求分析,得出學生成績管理系統的教師業務處理數據流如圖1所示。
?
圖1 教師業務數據流圖
3.2、數據字典
(1)數據流的描述
數據流編號: D01
數據流名稱: 用戶名和密碼
? ? ? 簡述:教師輸入用戶名和密碼驗證
數據流來源:教師
數據流去向:P01教師信息判斷
數據流組成:用戶名和密碼
數據流量:50/天
高峰流量:50/天
?? ?
(2)處理邏輯的描述?
處理邏輯編號:P01
處理邏輯名稱:教師登錄權限判斷
? ? ? ? 簡述:判斷教師登錄權限的合法性
輸入的數據流:教師的用戶名和密碼
處理描述: 根據教師提供的同戶名和密碼,驗證教師信息,驗證通過則進入主頁面,驗證不通過則返回給教師信息指明為非法用戶。
處理邏輯編號:P02
處理邏輯名稱:教師個人信息查詢
? ? ? ? 簡述:查詢并顯示教師個人基本信息?
處理描述:根據cookies傳出的教師ID在數據庫中查找出該教師的個人基本信息,打印到該頁面。
處理邏輯編號:P03
處理邏輯名稱:教師任課課程學生成績查詢
? ? ? ? 簡述:查詢并顯示教師任課課程的學生成績?
處理描述:根據cookies傳出的教師ID,然后再在數據庫中跨表查詢出該教師的任課科目的所有學生成績,打印到該頁面。
處理邏輯編號:P04
處理邏輯名稱:驗證用戶當前密碼,提供修改密碼權限
? ? ? ? 簡述:教師可以通過該頁面修改自己的賬號的登錄密碼。
處理描述:從數據庫中查詢出該教師的當前密碼并比較輸入的當前密碼,比較兩次輸入的新密碼。
?? ?處理邏輯編號:P05
處理邏輯名稱:教師修改個人信息
? ? ? ? 簡述:教師修改個人的基本信息?
處理描述:根據cookies傳出的教師ID在數據庫中查找出該教師的個人基本信息,打印到該頁面,同時提供了幾項可以修改的選項,教師可以并保持,正確提交后,將修改的信息提交到數據庫中。
處理邏輯編號:P06
處理邏輯名稱:錄入學生成績
? ? ? ? 簡述:錄入該教師任課課程的學生成績?
處理描述:從數據庫中查出該教師任課的課程,并由學生的姓名和id確定唯一學生,并錄入學生的考試成績,保存到數據庫中。
處理邏輯編號:P07
處理邏輯名稱:修改該教師任課課程的學生成績
? ? ? ? 簡述:查詢并顯示學生的成績,提供修改權限?
處理描述:查詢出已經錄入成績的學生的成績,允許教師修改學生的成績,提交后保存到數據庫。
處理邏輯編號:P08
處理邏輯名稱:修改教師用戶登錄密碼
? ? ? ? 簡述:驗證教師用戶當前密碼,提供修改密碼的權限
處理描述:驗證當前密碼和新密碼的合法性,合法則提交到數據庫,非法則跳到p02。
?? ?處理邏輯編號:P09
處理邏輯名稱:退出系統
? ? ? ? 簡述:教師用戶退出系統?
處理描述:教師用戶安全退出系統,跳轉到登錄頁面。
(3)數據存儲的描述
數據存儲編號:F01
數據存儲名稱:教師用戶驗證信息
? ? ? ? 簡述:教師用戶的用戶名和密碼
?? ??? ?數據存儲組成:用戶名+用戶類型+密碼+用戶ID
關鍵字:用戶ID
相關聯的處理:P01、P04
數據存儲編號:F02
數據存儲名稱:教師個人基本信息
? ? ? ? 簡述:查詢出教師用戶的基本個人信息
數據存儲組成:教師姓名+年齡+教師ID+教師密碼 +教師電話號碼+教師性別+教師照片+教師職稱
關鍵字:教師ID
相關聯的處理:P02、P05
?? ??? ??? ?
數據存儲編號:F03
數據存儲名稱:讀取學生成績
? ? ? ? 簡述:由學號查詢該學生的學生成績
數據存儲組成: 學生id+學生姓名+課程名稱+學生成績+授課老師
關鍵字:課程ID+學生ID
相關聯的處理:P03
?? ??? ?
數據存儲編號:F04
數據存儲名稱:存儲修改的信息
? ? ? ? 簡述:存儲修改的信息
數據存儲組成: 包括學生成績塊+用戶密碼塊+用戶個人信息塊
關鍵字:教師ID+學生ID+課程ID
相關聯的處理:P04、P05、P06、P07、P08
(4)外部實體的描述
外部實體編號:S01
外部實體名稱:教師用戶
簡 ? ? ? ?述:登錄系統的教師用戶
輸入的數據流:D002
輸出的數據流:D001
4、概念模型設計
4.1E-R圖
?
圖2 系統E-R圖
5. 邏輯模型設計及優化
5.1數據庫表:
表1 學生個人信息表(student_info表)
字段名?? ?數據類型?? ?長度?? ?備注
stu_id?? ?mediumint?? ?8?? ?primary key
stu_name?? ?varchar?? ?20?? ?
stu_person_id?? ?varchar?? ?30?? ?
stu_password?? ?varchar?? ?20?? ?
stu_age?? ?tinyint?? ?3?? ?
stu_sex?? ?varchar?? ?1?? ?
stu_tel?? ?varchar?? ?30?? ?
stu_major?? ?varchar?? ?20?? ?
stu_grade?? ?varchar?? ?20?? ?
stu_class?? ?varchar?? ?20?? ?
stu_photo?? ?varchar?? ?40?? ?
stu_entrance?? ?date?? ??? ?
表2學生成績表(stu_score表)
字段名?? ?數據類型?? ?長度?? ?備注
stud_id?? ?mediumint?? ?8?? ?primary key
course_id?? ?mediumint?? ?8?? ?primary key
score?? ?tinyint?? ?3?? ?
表3課程表(course表)
字段名?? ?數據類型?? ?長度?? ?備注
course_id?? ?mediumint?? ?8?? ?primary key
course_name?? ?Varchar?? ?20?? ?
teacher_id?? ?mediumint?? ?8?? ?primary key
表4教師個人信息表(teacher_info表)
字段名?? ?數據類型?? ?長度?? ?備注
teacher_id?? ?mediumint?? ?8?? ?primary key
teacher_name?? ?varchar?? ?20?? ?
teacher_password?? ?varchar?? ?20?? ?
course_id?? ?mediumint?? ?8?? ?
teacher_tel?? ?varchar?? ?20?? ?
professional?? ?varchar?? ?20?? ?
teacher_age?? ?tinyint?? ?3?? ?
teacher_sex?? ?varchar?? ?1?? ?
teacher_photo?? ?varchar2?? ?20?? ?
表5課程表(course_info表)
字段名?? ?數據類型?? ?長度?? ?備注
course_id?? ?mediumint?? ?8?? ?primary key
course_name?? ?varchar?? ?20?? ?
6、應用程序設計
?
圖3系統登錄界面
?
圖4教師個人信息頁面
?
圖5修改個人信息頁面
?
圖6查看學生成績頁面
?
圖7錄入學生成績頁面
?
圖8修改學生成績頁面
?
圖9修改個人密碼頁面
7、課程設計心得體會
本次數據庫課程設計收獲很大,當然也花了好多的心思和時間,首先,我們為團隊合作,共同開發這個項目,團隊意識真的很重要,我們就在團隊合作上出了些小問題,經過交流得到了解決,問題導致了我們的項目完成時間的推遲,這讓我們意識到團隊的合作是很不容易的,首先是對項目的認識必須統一,當我們對項目的需求沒有統一理解時,這將為失敗埋下伏筆,這樣注定失敗,至少是在代碼組合時無法兼容,更嚴重可能會要全部返工。團隊合作的第二個重點是:合理分工,合理的分工能讓項目完成的更快更好,合作更加的愉快,不合理的分工會導致大家的心態不一,出現分歧,出現問題,出了問題就無法繼續項目的開發了。我們本次分工上也出現了一些問題,主要原因是團隊每個人技術特長不一,最后還是進行了合理的安排。完成了項目的基本功能。
在實際開發的過程中給了我很多的實踐經驗,課程設計跟平時的理論課程有很大的區別,就是動手能力要求高,同時也提高我們的動手能力,課堂上的理論,我們通過項目得到了實際的應用。當然也發現了很多自己以前未能發現的知識上的不知,實踐是檢驗真理的唯一標準,也是檢驗自己知識掌握程度的機會,在動手編碼的過程中,我發現了很多數據庫知識上的缺陷,也發現了自己編碼的不良之處,通過和同學老師的交流得到了改正,并收獲了很多的實踐經驗。
參考文獻
[1] 王珊 薩師煊 .數據庫系統概論(第4版).高等教育出版社2006
[2] 卓越科技 .零起點網頁制作培訓教程.電子工業出版社.2009
附錄:
PHP數據庫連接源代碼
package com.hnwl.util;
?? ? ? //設置字符編碼
? ? header('Content-Type:text/html;charset=utf-8');=
?? ?//轉換硬路徑常量
?? ?define('ROOT_PATH',substr(dirname(__FILE__),0,-8));
?? ?//創建一個自動轉義的狀態常量?? ?
?? ?//拒絕php低版本
?? ?if(PHP_VERSION<'4.1.0')
?? ?exit('PHP Version is to Low!');
?? ?//引入函數庫
?? ?require ROOT_PATH.'includes/global.func.php';
?? ?require ROOT_PATH.'includes/mysql.func.php';
?? ?//數據庫連接
?? ? ? ?define("DB_USER","root");
? ? ? ? define("DB_PWD","root");
? ? ? ? define("DB_HOST","localhost");
? ? ? ? define("DB_NAME","stu_grade_info");
?//初始化數據庫 用 函數實現
?? ? ? ?_connect();//數據庫連接
?? ? ? ?_select_db();//選擇指定的數據庫
?? ? ? ?_set_names(); ?//設置字符集
?? ??? ?
PHP前臺頁面源代碼(登陸頁部分)
<?php
require dirname(__FILE__).'/includes/common.inc.php';//轉換成硬路徑速度快
if($_GET['action']=='login'){
?? ? ?include ROOT_PATH.'includes/login.func.php';
? ? ? ? $_clean=array();
? ? ? ? $_clean['user_id']=_check_username($_POST['user_id'],2,20);
? ? ? ? $_clean['password']=_check_password($_POST['password'],3);
? ? ? ? $_clean['level']=$_POST['level'];
? ? ? ? $_clean=_mysql_string($_clean);
? ? ? ??
?? ?if($_clean['level']==1){
?? ??? ?//學生
?? ??? ?if(!!$_rows=_fetch_array("select stu_id,stu_name from stu_info where stu_id='{$_clean['user_id']}' and stu_password='{$_clean['password']}' ?limit 1")){
?? ??? ??? ? _setcookies($_rows['stu_id'],$_clean['level']);
?? ? ? ? ? ?_close();//關閉數據庫
?? ? ? ? ? ?_location(null,'manage.php');
?? ??? ?}else{
?? ??? ??? ?_alert_back('用戶名或密碼不正確!');
?? ??? ?}
?? ?}else if($_clean['level']==2){
?? ??? ?//教師
?? ? ? if(!!$_rows=_fetch_array("select teacher_id,teacher_name from teacher_info where teacher_id='{$_clean['user_id']}' and teacher_password='{$_clean['password']}' ?limit 1")){
? ? ? ? ? ? ?_setcookies($_rows['teacher_id'],$_clean['level']);
? ? ? ? ? ? _close();//關閉數據庫
? ? ? ? ? ? _location(null,'manage.php');
? ? ? ? }else{
? ? ? ? ?? ?_alert_back('用戶名或密碼不正確!');
? ? ? ? }
?? ?}else{
?? ??? ?_alert_back('非法操作!');
?? ?}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>成績信息管理系統</title>
<link rel="stylesheet" type="text/css" href="style/basic.css"/>
<link rel="stylesheet" type="text/css" href="style/index.css"/>
</head>
<body>
<div id="main">
? ? <h2 class="top">您好,歡迎登陸學生成績信息管理系統!</h2>
? ??
? ? <div id="login">
? ? ? ? <p class="header">學生成績信息管理系統</p>
? ? ? ? <img src="images/logo.png"/>
? ? ? ? <form action="index.php?action=login" method="post">
?? ? ? ? ? ?<dl>
?? ??? ? ? ? ? ?<dd> 用 戶 ID:<input type="text" ?name="user_id" /></dd>
?? ??? ? ? ? ? <dd>密 碼:<input type="password" ?name="password" /></dd>
?? ??? ? ? ? ? <dd>身份登陸:<input type="radio" name="level" value="1" checked="checked" class="radio"/>學生 <input type="radio" name="level" class="radio" value="2" />教師 </dd>
?? ??? ? ? ? ? <dd><input type="submit" ?name="submit" value="登陸" class="submit" /> <input type="reset" ?name="reset" value="重置" class="reset"/></dd>
?? ? ? ? ? ?</dl>
? ? ? ? </form>
? ? </div>
??
</div>
? ?<div id="footer">
? ? ? ? <p>版權所有 翻版必究</p>
? ? ? ? <p>本程序由<span>再飄一會兒</span>提供 源代碼可以任意修改或發布(c) 429354764@qq.com </p>
? ? </div>
</body>
</html>
總結
以上是生活随笔為你收集整理的基于php的成绩管理设计(含源文件)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab fftshift_MATL
- 下一篇: php 云端桌面,开源云桌面程序DZZ