php+MySQL図書管理システム(一)

6224 ワード

第一に用いられる技術
技術と言語:php+MySQL
開発環境:windows 8.1
開発ツール:wampsever+sublime 2
オープンソースクラスライブラリ:PHPExcelダウンロードアドレス
第2需要分析
モジュール名
機能の説明
管理者ログイン
管理者ID、パスワードを入力します.システムにログインするか、ID/パスワードを返すエラーが発生しました.
図書入庫
1.単冊入庫2.一括入庫(最終テストの便利)図書情報はファイルに保存され、各図書情報は1行である.一行の内容は以下の通り(書号、カテゴリ、書名、出版社、年、著者、価格、数量)Note:年、数量は整数タイプ;価格は2桁の小数型です.残りは文字列タイプSample:(book_no_1,Computer Science,Computer Architecture,xxx,2004,xxx,90.00,2)
図書の検索
要求は本の種類、書名、出版社、年(年区間)、著者、価格(区間)を調べることができる.各図書情報は以下の内容を含む:(書号、カテゴリ、書名、出版社、年、著者、価格、総蔵書量、在庫)オプションの要求:ユーザーの指定属性によって図書情報をソートすることができる.(デフォルトは本名)
本を借りる
1.借用証カード番号を入力すると、その借用証のすべての借用書が表示されます(戻り、フォーマットはクエリーモジュールと同じです).本番号を入力この本に在庫がある場合は、本を借りることに成功し、同時に在庫数を1つ減らします.そうでなければ、本に在庫がなく、最近返却された時間を出力します.
本を返す
1.借用証カード番号を入力すると、その借用証のすべての借用書が表示されます(戻り、フォーマットはクエリーモジュールと同じです).本番号を入力本が借りた本のリスト内にある場合、本を返すことに成功し、同時に在庫を1つ追加する.エラーメッセージが出力.
第3データベース設計
オブジェクト名
属性を含める

ブックナンバー、カテゴリ、タイトル、出版社、年、著者、価格、総蔵書量、在庫
借書証
カード番号、氏名、単位、カテゴリ(教師学生など)
管理者
管理者ID、パスワード、名前、連絡先
貸し出し記録
カード番号、借書証番号、借期、還期、担当者(管理者ID)
建表sql
--                  
create database Libray; 

--           

Create TABLE Book(
	BookID int(12) PRIMARY KEY,
	Classification varchar(20),
	BookName varchar(20),
	Press varchar(20),
	PublicTime date,
	Author varchar(20),
	Price real,
	NumberAll int(5),
	StoreNumber int(5)
);

Create TABLE Card(
	CardID int(12) PRIMARY KEY,
	UserName varchar(20),
	Department varchar(20),
	Category bit
);

Create TABLE Admin(
	AdminID int(12) PRIMARY KEY,
	Password_MD5 varchar(16),
	AdminName char(20),
	Contect char(11)
);

Create TABLE Record(
	BookID int(12),
	OutTime date,
	InTime date,
	AdminID int(12),
	CardID int(12),
	PRIMARY KEY (CardID, BookID),
	FOREIGN KEY (CardID) REFERENCES Card(CardID),
	FOREIGN KEY (BookID) REFERENCES Book(BookID)
);

第四にPHPExcelを用いて図書データを導入する
ダウンロードアドレスPHPExcelのオープンソースパッケージをダウンロードし、classesというフォルダをあなたのプロジェクトに配置し、使用するときはrequire(「.../HPExcel.php」)後で中のクラスを使ってxlsファイルを読み書きすることができて、とても簡単で使いやすいです.
ここでは使い方を簡単に説明し、何かできないことや新しい機能が必要な場合はソースコードを直接読むといいでしょう.
canRead($filePath)){
		//echo "yes";
	}else{
		//           
		$objPHPExcelReader = new PHPExcel_Reader_Excel5();
		if($objPHPExcelReader->canRead($filePath)){
		}else{
			echo "alert('            ,
				      !');";
			return;
		}
	}
	$objPHPExcel = $objPHPExcelReader->load($filePath);
	//  excel          
	$currentSheet = $objPHPExcel->getSheet(0);
	//       
	$allColumn = $currentSheet->getHighestColumn();
	//       
	$allRow = $currentSheet->getHighestRow();
	//     
	mysql_connect("127.0.0.1", "root", "");
	$link = mysql_connect("127.0.0.1", "root", "") 
				or die("        ".mysql_error());
	if($link){
		//echo "    !";
	}
	$db_select = mysql_select_db("libray");
	if ($db_select) {
		//echo "yes";
	}
        //         cell     
	//         ,                    
	//    ,      SQL          
	//                   
	$allInsertNumber = 0;
	$insertSuccessNumber = 0;
	for($currentRow = 2; $currentRow <= $allRow; $currentRow++){
		$sql = "insert INTO Book values (";
		for($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++){
			$str = $currentColumn.$currentRow;
			$val = $currentSheet->getCell($str)->getValue();
			if($currentColumn == 'B' || $currentColumn == 'C'
				|| $currentColumn == 'D' || $currentColumn == 'F'){
				$val = convertToUTF8($val);
				$val = "'".$val."'";
			}
			if ($currentColumn == 'E') {
				$val = excelTime($val);
			}
			if ('A' != $currentColumn) {
				$sql = $sql.",";
			}
			$sql = $sql.$val;
		}
		$sql = $sql.")";
		$b = mysql_query($sql);
		$allInsertNumber++;
		if ($b) {
			echo "yes";
			$insertSuccessNumber++;
		}else{
			echo "no";
		}
		//echo "$sql";
	}
	echo "  $allInsertNumber    ,     $insertSuccessNumber    !";
	mysql_close($link);
	//           
	function convertToUTF8($str){
		return iconv('utf-8','gb2312', $str);
	}
	//        
	function excelTime($date, $time = false) {
    	if(function_exists('GregorianToJD')){
        	if (is_numeric( $date )) {
        	$jd = GregorianToJD( 1, 1, 1970 );
        	$gregorian = JDToGregorian( $jd + intval ( $date ) - 25569 );
        	$date = explode( '/', $gregorian );
        	$date_str = str_pad( $date [2], 4, '0', STR_PAD_LEFT )
       		."-". str_pad( $date [0], 2, '0', STR_PAD_LEFT )
        	."-". str_pad( $date [1], 2, '0', STR_PAD_LEFT )
        	. ($time ? " 00:00:00" : '');
        	return $date_str;
        	}
    	}else{
        	$date=$date>25568?$date+1:25569;
        	/*There was a bug if Converting date before 1-1-1970 (tstamp 0)*/
        	$ofs=(70 * 365 + 17+2) * 86400;
        	$date = date("Y-m-d",($date * 86400) - $ofs).($time ? " 00:00:00" : '');
   		}
  		return $date;
	}
?>

上までデータベースに図書データを挿入できます