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
第四にPHPExcelを用いて図書データを導入する
ダウンロードアドレスPHPExcelのオープンソースパッケージをダウンロードし、classesというフォルダをあなたのプロジェクトに配置し、使用するときはrequire(「.../HPExcel.php」)後で中のクラスを使ってxlsファイルを読み書きすることができて、とても簡単で使いやすいです.
ここでは使い方を簡単に説明し、何かできないことや新しい機能が必要な場合はソースコードを直接読むといいでしょう.
上までデータベースに図書データを挿入できます
技術と言語: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;
}
?>
上までデータベースに図書データを挿入できます