Bố cục nội dung đề tài gồm có các phần chính sau: Chương 1: Xây dựng cơ sở dữ liệu quản lý sinh viên.. Chương 1: Xây dựng cơ sở dữ liệu quản lý sinh viên.Chương 2: Thiết kế giao diện Web
Trang 1TRƯỜNG ĐẠI HỌC ĐÀ LẠT
KHOA TOÁN – TIN
BÀI BÁO BÀI TẬP NHÓM
Đề tài 16 : Xây dựng ‘chương trình quản lý sinh viên’ với PHP và MySQL.
Đà Lạt, Ngày 30-04-2010
Trang 2TRƯỜNG ĐẠI HỌC ĐÀ LẠT
KHOA TOÁN – TIN
BÀI BÁO BÀI TẬP NHÓM
Đề tài 16 Xây dựng ‘chương trình quản lý sinh viên’ với PHP và MySQL.
Thành viên nhóm
Trần Ngọc Nhật 0712144 Phạm Thị Miền 0713353
Chu Văn Phương 0713362
Nguyễn Xuân Trung 0713376
Lê Thế Trung 0713378
Đà Lạt, Ngày 30-03-2010
Trang 3LỜI NÓI ĐẦU
Ngày nay,cùng với sự phát triển của khoa học kỹ thuật, các mạng máy tính đã pháttriển một cách nhanh chóng và đa dạng Những ứng dụng, tiện ích từ sự phát triển này hỗtrợ cho con người rất nhiều trong công việc cũng như trong mọi lĩnh vực khác nhau.Trong đó có tiện ích từ Website Do đó Website được nhiều người quan tâm, nghiên cứu
và phát triển
Từ thực tế học tập, yêu cầu quản lý sinh viên của lớp nói riêng và của khoa nóichung Nhóm chúng tôi đã tạo lập một Website động “ Xây Dựng Chương Trình Quản
Lý sinh viên” với các thao tác cơ bản: Nhập, xuất , thêm, xóa, sửa ……
Trong đề tài này chúng tôi sử dụng các ngôn ngữ : HTML, PHP và MySQL.Trongđó: HTML là ngôn ngữ đánh dấu để tạo nên các trang Web PHP là một ngôn ngữ lậptrình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viếtcho máy chủ, mã nguồn mở, nó rất thích hợp với Web và có thể dễ dàng nhúng vào trangHTML MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở, nó được sử dụng cho việc bổtrợ PHP, làm nơi lưu trữ thông tin trên trang Web khi viết khi viết bằng PHP
Bố cục nội dung đề tài gồm có các phần chính sau:
Chương 1: Xây dựng cơ sở dữ liệu quản lý sinh viên
Chương 2: Thiết kế giao diện Web
Chương 3: Những thao tác chính
I Giới thiệu class MySQL.php và Xtemplete.php
II Trang index.php
III Trang function.php
VI Trang config.php
V Trang login.php
VI Trang register.php
VII Trang seach.php
VIII Trang hienthi.php
IX Trang hieuchinh.php
X Trang backup.php
XI Trang Ajax
Nhóm chúng tôi xin chân thành cảm ơn thầy Dương Bảo Ninh, người đã hướngdẫn, giúp đỡ chúng tôi hoàn thành đề tài này Do hạn chế về kỹ năng, kiến thức, thời giannên đề tài còn nhiều thiếu sót, rất mong sự góp ý của quý thầy, cô cùng toàn thể các bạn
sinh viên Góp ý xin gửi về: nhóm Đoàn Kết,Lớp TNK31, Khoa Toán – Tin, Đại Học Đà
Lạt hoăc email :
Phamthimientnk31@gmail.com
Trang 5Chương 1: Xây dựng cơ sở dữ liệu quản lý sinh viên.
Chương 2: Thiết kế giao diện Web
Chương 3: Những thao tác chính
I Giới thiệu class MySQL.php và Xtemplete.php
II Trang index.php
III Trang function.php
VI Trang config.php
V Trang login.php
VI Trang register.php
VII Trang seach.php
VIII Trang hienthi.php
IX Trang hieuchinh.php
X Trang backup.php
XI Trang Ajax
TỔNG KẾT
TÀI LIỆU THAM KHẢO
Phần 1 Xây dựng cơ sở dữ liệu quản lý sinh viên
Trang 6I Cấu trúc cơ sở dữ liệu
Cơ sở dữ liệu gồm 14 bảng
1 Bảng ngành
MaNghanh varchar(3) NOT NULL,
TenNghanh varchar(30) NOT NULL,
PRIMARY KEY (MaNghanh)
2 Bảng lớp
MaLop varchar(10) NOT NULL,
TenLop varchar(50) default NULL,
NamBD varchar(7) NOT NULL,
NamKT varchar(7) NOT NULL,
MaN varchar(7) NOT NULL,
MaHDT varchar(2) NOT NULL,
PRIMARY KEY (MaLop)
3 Bảng dân tộc
MaDToc varchar(6) NOT NULL,
TenDToc varchar(20) NOT NULL,
PRIMARY KEY (MaDToc)
4 Bảng chính sách
MaCS varchar(4) NOT NULL,
TenCS varchar(20) NOT NULL,
PRIMARY KEY (MaCS)
5 Bảng khu vực
MaKV varchar(6) NOT NULL,
TenKV varchar(20) NOT NULL,
PRIMARY KEY (MaKV)
6 Bảng đối tượng
MaDT varchar(2) NOT NULL,
TenDT varchar(50) NOT NULL
7 Bảng hệ đào tạo
MaHe varchar(2) NOT NULL,
TenHe varchar(10) NOT NULL,
PRIMARY KEY (MaHe)
8 Bảng sinh viên
Mssv varchar(7) NOT NULL,
Trang 7HoTen varchar(35) NOT NULL,
Image varchar(50) NOT NULL,
NgaySinh date NOT NULL,
Phai varchar(3) NOT NULL,
NoiSinh varchar(50) NOT NULL,
MaLop varchar(10) NOT NULL,
PRIMARY KEY (Mssv)
9 Chi tiết lý lịch
Mssv varchar(7) NOT NULL,
HKTT varchar(200) NOT NULL,
MaDT varchar(6) NOT NULL,
TonGiao varchar(30) NOT NULL,
NgayVDang date NOT NULL,
NgayVDoan date NOT NULL,
NgayVHSV date NOT NULL,
HoTenCha varchar(35) NOT NULL,
NamSinhCha date NOT NULL,
NgheNghiepCha varchar(30) NOT NULL,
HoTenMe varchar(35) NOT NULL,
NamSinhMe date NOT NULL,
NgheNghiepMe varchar(30) NOT NULL,
MaLT varchar(4) NOT NULL,
DiaChi varchar(100) NOT NULL,
SDT varchar(15) NOT NULL,
Email varchar(50) NOT NULL,
DienCS varchar(6) NOT NULL,
PRIMARY KEY (Mssv)
10 Bảng tốt nghiệp
Mssv varchar(10) NOT NULL,
Xeploai varchar(10) NOT NULL,
Namtotnghiep varchar(10) NOT NULL,
PRIMARY KEY (Mssv)
11 Bảng lưu trú
MaLT varchar(4) NOT NULL,
HinhThuc varchar(20) NOT NULL,
Trang 8PRIMARY KEY (MaLT)
12 Bảng khen thưởng kỷ luật
Mssv varchar(10) NOT NULL,
DiemTB float default NULL,
LyDo varchar(50) NOT NULL,
Hocky int(2) NOT NULL,
Namhoc varchar(15) NOT NULL,
Ma varchar(2) NOT NULL,
PRIMARY KEY (Mssv)
13 Bảng config
Config_name varchar(20),// title cua trang web
Config_value varchar(100), // lượt truy cập trang web
Trang 9I Giao diện chính của trang web
1 Trang chủ
Trang chủ là giao diện chính của chương trình, ở tại trang này khi có một yêu cầu thì kết quả được hiển thị ngay tại trang chủ
Giao diện của trang chủ
Để thiết kế được giao diện trên ta dùng HTML với sự định dạng của CSS:
Giao diện được thiết kế bằng ngôn ngữ html
a) phần head
<head>
<title>{WEB_TITLE}</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="{PATH}/style.css" />
</head>
b) phần thân
Trang 10<img src="{PATH}/images/banner.gif" alt="banner" />
</div><! End #banner >
</div><! End #header >
</div><! End #luottc >
</div><! End #sidebar >
<div class="clear"></div><! End clear >
</div><! End #info >
<div id="list_view"></div><! End #list_view >
<script type="text/javascript">
StartLoad();
</script>
</div><! End #primary >
<div class="clear"></div><! End clear >
</div><! End #content >
<div id="footer">
<ul>
Trang 11<li><a href="#Introduction">Introduction</a></li>
<li><a href="#About">About US</a></li>
<li><a href="#Contact">Contact US</a></li>
</ul>
<! BOX box_copyright() >
</div><! End #footer >
</div><! End #wrapper >
</body>
Trong quá trình thiết kế chúng tôi sử dụng các mẫu dánh đấu để chèn code vào chương trình nhằm mục đích bảo mật và là cho trang chủ dơn giản, ngắn gọn
Phần 3 Những thao tác kết nối cơ sở dữ liệu và giao diện web
I Class Mysql.php và Class Xtemplate.php
Trang 12Đây là hai lớp chính do chúng tôi tự định nghĩa và cài đặt bằng ngôn ngữ PHP, nó chứa những đối tượng mà chúng tôi sẽ sử dụng xuyên suốt quá trình thực hiện chương trình.
1.Mysql.php
Định nghĩa lại các hàm của Mysql luôn luôn phù hợp với mọi phiên bản của PHP.Chứa các thủ tục liên kết đến cơ sơ dữ liệu, thực thi câu truy vấn, ghi nhận lỗi trong quátrình làm Được cài đặt như sau:
Hàm này có tác dụng ghi nhận lỗi trong quá trình làm giúp người dùng tiện sửa lỗi
function Connect($Server, $Username, $Password, $Database){
$this->link_id = @mysql_connect($Server, $Username, $Password);
Trang 13$Query = @mysql_query($Sql, $this->link_id) or $this->Error('Không thể thực hiện được câu truy vấn.<br/>Lỗi : '.mysql_error(),$Sql);
return $Query;
}
Hàm này có chức năng thực thi câu truy vấn
function Fetch_array($Query, $type = MYSQL_BOTH){
var $XTemplate_folder = 'XTemplate';
var $cache = array();
function Get_XTemplate($filename, $box = ''){
Trang 14function Replace($search, $replace, $object){
$object = str_replace($search, $replace, $object);
Trang 15$str = '';
$this->cache['block_'.$block] = $s;
}return $this->cache['block_'.$block];
}
Lấy một đoạn nội dung có đánh dấu là $block.
function Assign_vars($code, $arr){
foreach($arr as $key => $value)
$code = $this->Replace('{'.$key.'}',$value, $code);return $code;
}
function Assign_blocks_content($code, $arr){
foreach($arr as $block => $value)
$code = preg_replace('#<! Begin '.$block.' >[\r\n]*(.*?)[\r\n]*<! End '.$block.' >#s',$value,$code);
Trang 16II.Trang Index.php
Trang Index.php là trang chính để kết nối được giao diện web với các trang code viết bằng PHP Nó có chức năng gọi các trang liên quan khi người dung thực hiện các câu lênh
);
$tpl->Display($html);
}
Trang 18for($i = 0; $i < count($fields); $i++)
$sets = $fields[$i].' = '.$values[$i].', ';
$sets = substr($sets, 0 , -2);
if($where == '')
$Mysql->Query('UPDATE '.$prefix.$table.' SET '.$sets);else{
$where = $tpl->Replace('^',' AND ',$where);
$where = $tpl->Replace('+',' OR ',$where);
$where = $tpl->Replace(',',' '.$ssanh.' ',$where);
$Mysql->Query('UPDATE '.$prefix.$table.' SET '.$sets.''.$where);
}}
if($action == 3){
Trang 19$Mysql->Query('DELETE FROM '.$prefix.$table.' WHERE '.
$field.' '.$ssanh.' "'.$paterm.'"');
$info = '<center><h2><i>Không có dữ liệu trong mục này !</i></h2></center>';
else
$info = $tpl->Assign_blocks_content($info,array(
$block => $s,)
}
$str = '</select>';
Trang 20error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
header("Content-Type: text/html; charset=UTF-8");
$Mysql = new Mysql;
$Mysql->Connect($Server, $Username, $Password, $Database);
Trang 21$cache['config_'.$name] = stripslashes($r['config_value']);
}return $cache['config_'.$name];
}
function UsetCookie($name, $value, $set = true){
$expire = ($set)? NOW + 24 * 60 * 60 : 0;
@setcookie($name, $value, $expire);
Usetcookie('LEVEL','',false);
}
if($isLogged){
exit("<h2>Bạn đã đăng nhập !</h2>");
Trang 22VI Trang register.php.
Quản lý việc đăng ký tài khoản của người dung, những ngửơi này không có quyềnadmin
Trang 23echo 'Email này đã có người sử dụng bạn vui lòng chọn email khác';
$Mysql->Query('INSERT INTO '.$prefix.'user VALUES("'.$user.'","'
$pass.'","2","'.$email.'")');
exit();
}else{
Trang 24$html = $tpl->Get_XTemplate('register');
$tpl->Display($html);
}
?>
VII Trang seach.php.
Trang này có chức năng tìm kiếm dữ liệu theo yêu cầu của người dùng
<?php
if($value[0] == 'Search'){
$html = $tpl->Get_XTemplate('search');
$option = '<select id="searchType">'
'<option value="1">Mã số sinh viên</option>'
'<option value="2">Họ tên sinh viên</option>'
'<option value="3">Mã lớp</option>'
'<option value="4">Tên lớp</option>'
'<option value="5">Mã khoa</option>'
'<option value="6">Tên khoa</option>'
'</select>';
$html = $tpl->Replace('{OPTION}',$option,$html);
Trang 25$tpl->Display($html);
}else{
$html = $tpl->Get_XTemplate('search');
$option = '<select id="searchType">'
'<option value="Student">Mã số sinh viên</option>'
Trang 26'<option value="Student">Họ tên sinh viên</option>'.'<option value="Class">Mã lớp</option>'.
'<option value="Class">Tên lớp</option>'
'<option value="File">Mã khoa</option>'
'<option value="File">Tên khoa</option>'
Trang 27$tpl->Display($html);
}
?>
VIII Trang hienthi.php.
Hiển thị thong tin trong cơ sơ dữ liệu theo theo yêu cầu của người dùng
Trang 28$info = Get_info($value[1], $r, 'box_giangkhoa','boxes','info.rows',$arr);}elseif($value[1] == 'Lop'){
Trang 29Hiệu chinh dữ liệu theo tiêu chí nào đó theo nhu cầu của người dùng Chỉ admin
$sql = 'UPDATE sinhvien SET maSV = "'.$_POST['masv'].'", hoTen = "'
$_POST['hoten'].'",NamSinh = "'.$_POST['namsinh'].'", danToc = "'.$_POST['dantoc'].'",maLop = "'.$_POST['malop'].'" WHERE maSV = "'.$_POST['masv'].'"';
}elseif($_COOKIE['Action'] == 3){
Trang 30$sql = 'UPDATE chitietltlich SET Mssv = "'.$_POST['mssv'].'", HoTen =
"'.$_POST['hoten'].'",HKTT = "'.$_POST['HKTT'].'", MaDT = "'
$_POST['MaDT'].'",Diachi = "'.$_POST['Diachi'].'", SDT = "'.$_POST['SDT'].'",Email =
"'.$_POST['Email'].'",DienCS = "'.$_POST['DienCS'].'" WHERE Mssv = "'
$_POST['mssv'].'"';
$Mysql->Query($sql);
unset($_POST);
}elseif($_COOKIE['Action'] == 4){
$sql = 'UPDATE khoa SET maKhoa = "'.$_POST['makhoa'].'", tenKhoa =
"'.$_POST['tenkhoa'].'",namthanhlap = "'.$_POST['namthanhlap'].'" WHERE maKhoa =
$Mysql->Query($sql);
unset($_POST);
}elseif($_COOKIE['Action'] == 6){
$sql = 'UPDATE lop SET maLop = "'.$_POST['malop'].'", maKhoahoc =
"'.$_POST['makh'].'",maKhoa = "'.$_POST['makhoa'].'",maCT = "'.$_POST['mact'].'"WHERE maLop = "'.$_POST['malop'].'"';
Trang 31$option = '<select id="searchType">'.
'<option value="1">Mã số sinh viên</option>'
'<option value="2">Họ tên sinh viên</option>'
'<option value="3">Mã lớp</option>'
'<option value="5">Khoa</option>'
'<option value="6">Khoá học</option>'
'<option value="7">Lớp</option>'
'<option value="8">Giảng khoa</option>'
'<option value="9">Môn học</option>'
'<option value="10">Kết quả</option>'
Trang 32}elseif($value[1] == 6){
$r = Search('lop','1','','');
$arr = array('MALOP','MAKHOAHOC','MAKHOA','MACT');
Trang 33$info = Get_info($value[1], $r,'box_hieuchinhlop','boxes','info.rows',$arr);
$info = $tpl->Assign_vars($info,array(
'TYPE' => $value[1]
));
$Mysql->Free_resurt($r);
}UsetCookie('Action',$value[1]);
}
$main = $tpl->Assign_blocks_content($main,array(
'info' => $info)
Trang 34$match = $Mysql->Fetch_array($Mysql->Query("SELECT VERSION()"));
$match = explode('.', $match[0]);
define('MYSQL_VERSION',(int) sprintf('%d%02d%02d', $match[0], $match[1],intval($match[2])));
unset($match);
if(MYSQL_VERSION >= 40102) define('ENGINE_KEYWORD','ENGINE');else define('ENGINE_KEYWORD','TYPE');
$q = $Mysql->Query("SHOW TABLES FROM ".$Database);
if($Null && !$Default) $str = " Default NULL";
elseif(isset($Default)) $str = " NOT NULL Default '".$Default."'";elseif(!$Null){ $str = " NOT NULL";}
if($Extra) $str = " auto_increment";
$str = ",\n";
if($Key == 'PRI') $pri_arr[] = $Field;
elseif($Key == 'MUL') $key_arr[] = $Field;
}unset($Field, $Type, $Null, $Default, $Extra);
Trang 35for($i = 0; $i < count($key_arr); $i++)
$str = " KEY `".$key_arr[$i]."` (`".$key_arr[$i]."`),\n";}
$collation = $r3[1];
if(strpos($collation, '_'))
$str = " DEFAULT CHARACTER SET ".substr($collation,
0, strpos($collation, '_'))." COLLATE ".$collation;
else
$str = " DEFAULT CHARACTER SET ".$collation;
}if($Comment)
$str = " COMMENT='".addslashes($Comment)."'";
$str = ";\n\n";
$field_ex = substr($field_ex, 0,-1);
if($_POST['export_data']){