第一篇:c語言圖書管理系統
C語言——圖書管理系統
代碼部分: #include
/*定義數據庫相關操作變量*/ MYSQL mysql;
// MYSQL_RES *result;
//定義結果集變量 MYSQL_ROW row;
//定義行變量 char ch[2];
void ShowAll();
/*顯示所有的圖書信息*/ void AddBook();
/*添加圖書信息*/ void ModifyBook();
/*修改圖書信息*/ void DeleteBook();
/*刪除圖書信息*/ void QueryBook();
/*查詢圖書信息*/
/*顯示菜單*/ void showmenu(){
system(“cls”);
printf(“nnnnn”);
printf(“t╔═══════════════════════════╗n”);
printf(“t║
Welcome To Lemon Books System
║n”);
printf(“t╠═══════════════════════════╣n”);
printf(“t║t 1添加圖書信息
║n”);
printf(“t║t 3刪除圖書信息
║n”);
printf(“t║t 5退出
║n”);
printf(“t╚═══════════════════════════╝n”);
printf(“n
ENTER YOUR CHOICE(1-6):”);
}
void inquire()/*詢問用戶是否顯示主菜單*/ {
printf(“t 顯示主菜單?(y/n):”);
scanf(“%s”,ch);
if(strcmp(ch,“Y”)==0||strcmp(ch,“y”)==0)/*判斷是否要顯示查找到的信息*/
{
showmenu();
/*顯示菜單*/
}
else
{
exit(0);
} }
/*顯示主菜單,連接數據庫*/ int main(){
int n;
//定義變量
存儲用戶輸入的編號
mysql_init(&mysql);//初始化mysql結構
showmenu();
/*顯示菜單*/
scanf(“%d”,&n);/*輸入選擇功能的編號*/
while(n)
{
switch(n)
{
case 1:
ShowAll();
/*調用顯示所有圖書數據的過程*/
break;
case 2:
AddBook();
/*添加圖書信息*/
break;
case 3:
ModifyBook();
/*修改圖書信息*/
break;
case 4:
DeleteBook();
/*刪除圖書信息*/
break;
case 5:
QueryBook();
/*查詢圖書信息*/
break;
case 6:
exit(0);
/*退出*/
default:break;
}
scanf(“%d”,&n);
} }
void ShowAll()
/*調用顯示所有圖書數據的過程*/ {
/*連接數據庫*/
if(!mysql_real_connect(&mysql,“127.0.0.1”,“root”,“111”,“db_books”,0,NULL,0))
{
printf(“nt 不能連接數據庫!n”);
}
else
{
/*數據庫連接成功*/
if(mysql_query(&mysql,“select * from tb_book”))
{
//如果查詢失敗
printf(“nt 查詢 tb_book 數據表失敗!n”);
}
else
{
result=mysql_store_result(&mysql);//獲得結果集
if(mysql_num_rows(result)!=NULL)
{ //有記錄的情況,只有有記錄取數據才有意義
printf(“t ════════════════════════════
n”);
printf(“t
顯 示 所 有 圖 書 信 息
n”);
printf(“t ════════════════════════════ n”);
printf(“t圖書編號
圖書名
作者
出版社
n”);
printf(“t-------------------------n”);
while((row=mysql_fetch_row(result)))
{
//取出結果集中記錄
fprintf(stdout,“t
%s
%s
%s
%s
n”,row[0],row[1],row[2],row[3]);//輸出這行記錄
}
printf(“t ════════════════════════════ n”);
}
else
{
printf(“nt 沒有記錄信息!n”);
}
mysql_free_result(result);
//釋放結果集
}
mysql_close(&mysql);
//釋放連接
}
inquire();
/*詢問是否顯示主菜單*/ }
void AddBook()
/*添加圖書信息*/ {
int rowcount;
/*結果集中的行數*/
char id[10];
/*編號*/
char *bookname;
char *author;
char *bookconcern;
char *sql;
char dest[500] ={“
”};
/*連接數據庫*/
if(!mysql_real_connect(&mysql,“127.0.0.1”,“root”,“111”,“db_books”,0,NULL,0))
{
printf(“nt 不能連接數據庫!n”);
}
else
{
/*數據庫連接成功,插入數據*/
printf(“t ════════════════════════════ n”);
printf(“t
添 加 圖 書 信 息
n”);
printf(“t ════════════════════════════ n”);
if(mysql_query(&mysql,“select * from tb_book”))
{
//如果查詢失敗
printf(“nt 查詢 tb_book 數據表失敗!n”);
}
else
{
result=mysql_store_result(&mysql);//獲得結果集
rowcount=mysql_num_rows(result);//獲得行數
row=mysql_fetch_row(result);
//獲取結果集的行
printf(“t 圖書編號:”);
scanf(“%s”,id);
/*輸入圖書編號*/
sql=“insert into tb_book(ID,bookname,author,bookconcern)values(”;
strcat(dest,sql);
strcat(dest,“'”);
strcat(dest,id);
strcat(dest,“', '”);
if(mysql_num_rows(result)!=NULL)
{
/*判斷輸入的編號是否存在*/
do
{
//存在相同編號
if(!strcmp(id,row[0]))
{
// printf(“%s”,row[0]);
printf(“nt 記錄存在,按任意鍵繼續!n”);
getch();
mysql_free_result(result);
/*釋放結果集*/ mysql_close(&mysql);
/*釋放連接*/
inquire();
/*詢問是否顯示主菜單*/
return;
}
}while(row=mysql_fetch_row(result));
}
bookname =(char*)malloc(50);
author =(char*)malloc(50);
bookconcern =(char*)malloc(50);
//不存在相同的編號
printf(“t 圖書名:”);
scanf(“%s”,bookname);
/*輸入圖書名*/
strcat(dest,bookname);
/*將圖書編號追加到sql語句后面*/
printf(“t 作者:”);
scanf(“%s”,author);
/*輸入作者*/
strcat(dest,“', '”);
strcat(dest,author);
printf(“t 出版社:”);
scanf(“%s”,bookconcern);
/*輸入出版社*/
strcat(dest,“', '”);
strcat(dest,bookconcern);
strcat(dest,“')”);
//printf(“%s”,dest);
if(mysql_query(&mysql,dest)!=0)
{
fprintf(stderr,“t 不能插入記錄!”,mysql_error(&mysql));
}
else
{
printf(“t 插入成功!n”);
}
mysql_free_result(result);
//釋放結果集
}
mysql_close(&mysql);
//釋放連接
}
inquire();
/*詢問是否顯示主菜單*/ }
void ModifyBook()
/*修改圖書信息*/ {
char id[10];
/*結果集中的行數*/
char *sql;
char dest[500] ={“
”};
char dest1[500] ={“
”};
char *bookname;
char *author;
char *bookconcern;
if(!mysql_real_connect(&mysql,“127.0.0.1”,“root”,“111”,“db_books”,0,NULL,0))
{
printf(“t 不能連接數據庫!n”);
}
else
{
/*數據庫連接成功*/
// printf(“連接成功”);
printf(“t 請輸入您想要修改的圖書編號.”);
scanf(“%s”,id);
/*輸入圖書編號*/
sql = “select * from tb_book where id=”;
strcat(dest,sql);
strcat(dest,id);
/*將圖書編號追加到sql語句后面*/
//printf(“%sn”,dest);
/*查詢該圖書信息是否存在*/
if(mysql_query(&mysql,dest))
{
//如果查詢失敗
printf(“n 查詢 tb_book 數據表失敗!n”);
}
else
{
result=mysql_store_result(&mysql);//獲得結果集
if(mysql_num_rows(result)!=NULL)
{
//有記錄的情況,只有有記錄取數據才有意義
printf(“t 發現記錄信息,是否顯示?(y/n)”);
scanf(“%s”,ch);
if(strcmp(ch,“Y”)==0||strcmp(ch,“y”)==0)/*判斷是否要顯示查找到的信息*/
{
printf(“t ════════════════════════════
n”);
printf(“t
***** 顯示圖書信息 *****
n”);
printf(“t ════════════════════════════ n”);
printf(“t圖書編號
圖書名
作者
出版社
n”);
printf(“t-------------------------n”);
while((row=mysql_fetch_row(result)))
{
//取出結果集中記錄
fprintf(stdout,“t
%s
%s
%s
%s
n”,row[0],row[1],row[2],row[3]);//輸出這行記錄
}
printf(“t ════════════════════════════ n”);
}
printf(“t Modify?(y/n)”);
scanf(“%s”,ch);
if(strcmp(ch,“Y”)==0||strcmp(ch,“y”)==0)
/*判斷是否需要錄入*/
{
sql = “update tb_book set bookname= '”;
strcat(dest1,sql);
//
printf(“%s”,sql);
bookname =(char*)malloc(20);
author =(char*)malloc(20);
bookconcern =(char*)malloc(20);
printf(“t 圖書名:”);
scanf(“%s”,bookname);
/*輸入圖書名*/
strcat(dest1,bookname);
// printf(“%s”,&bookname);
printf(“t 作者:”);
scanf(“%s”,author);
/*輸入作者*/
strcat(dest1,“', author= '”);
strcat(dest1,author);
/*追加sql語句*/
printf(“t 出版社:”);
scanf(“%s”,bookconcern);
/*輸入出版社*/
strcat(dest1,“', bookconcern = '”);
strcat(dest1,bookconcern);
/*追加sql語句*/
strcat(dest1,“' where id= ”);
strcat(dest1,id);
//printf(“%s”,dest1);
if(mysql_query(&mysql,dest1)!=0)
{
fprintf(stderr,“t 不能修改記錄!n”,mysql_error(&mysql));
}
else
{
printf(“t 修改成功!n”);
}
}
}
else
{
printf(“t 沒有發現要修改的信息!n”);
}
}
mysql_free_result(result);
//釋放結果集
}
mysql_close(&mysql);
//釋放連接
inquire();
/*詢問是否顯示主菜單*/ }
void DeleteBook()
/*刪除圖書信息*/ {
char id[10];
/*結果集中的行數*/
char *sql;
char dest[100] ={“
”};
char dest1[100] ={“
”};
if(!mysql_real_connect(&mysql,“127.0.0.1”,“root”,“111”,“db_books”,0,NULL,0))
{
printf(“t 不能連接數據庫!n”);
}
else
{
printf(“t 請輸入您想要刪除的圖書編號.”);
scanf(“%s”,id);
/*輸入圖書編號*/
sql = “select * from tb_book where id=”;
strcat(dest,sql);
strcat(dest,id);
/*將圖書編號追加到sql語句后面*/
//printf(“%sn”,dest);
/*查詢該圖書信息是否存在*/
if(mysql_query(&mysql,dest))
{
//如果查詢失敗
printf(“n 查詢 tb_book 數據表失敗!n”);
}
else
{
result=mysql_store_result(&mysql);//獲得結果集
if(mysql_num_rows(result)!=NULL)
{ //有記錄的情況,只有有記錄取數據才有意義
printf(“t 發現記錄信息,是否顯示?(y/n)”);
scanf(“%s”,ch);
if(strcmp(ch,“Y”)==0||strcmp(ch,“y”)==0)/*判斷是否要顯示查找到的信息*/
{
printf(“t ════════════════════════════
n”);
printf(“t
***** 顯示圖書信息 *****
n”);
printf(“t ════════════════════════════ n”);
printf(“t圖書編號
圖書名
作者
出版社
n”);
printf(“t-------------------------n”);
while((row=mysql_fetch_row(result)))
{
//取出結果集中記錄
fprintf(stdout,“t
%s
%s
%s
%s
n”,row[0],row[1],row[2],row[3]);//輸出這行記錄
}
printf(“t ════════════════════════════ n”);
}
printf(“t 是否刪除?(y/n)”);
scanf(“%s”,ch);
if(strcmp(ch,“Y”)==0||strcmp(ch,“y”)==0)
/*判斷是否需要錄入*/
{
sql = “delete from tb_book where ID= ”;
printf(“%s”,dest1);
strcat(dest1,sql);
strcat(dest1,id);
// printf(“%s”,dest1);
if(mysql_query(&mysql,dest1)!=0)
{
fprintf(stderr,“t 不能刪除記錄!n”,mysql_error(&mysql));
}
else
{
printf(“t 刪除成功!n”);
}
}
}
else
{
printf(“t 沒有發現要刪除的信息!n”);
}
}
mysql_free_result(result);
//釋放結果集
}
mysql_close(&mysql);
inquire();
/*詢問是否顯示主菜單*/ }
void QueryBook()
/*查詢圖書信息*/ {
char id[10];
/*結果集中的行數*/
char *sql;
char dest[100] ={“
”};
if(!mysql_real_connect(&mysql,“127.0.0.1”,“root”,“111”,“db_books”,0,NULL,0))
{
printf(“t 不能連接數據庫!n”);
}
else
{
printf(“t 請輸入您想要查詢的圖書編號:”);
scanf(“%s”,id);
/*輸入圖書編號*/
sql = “select * from tb_book where id=”;
strcat(dest,sql);
strcat(dest,id);
/*將圖書編號追加到sql語句后面*/
if(mysql_query(&mysql,dest))
{
//如果查詢失敗
printf(“n 查詢 tb_book 數據表失敗!n”);
}
else
{
result=mysql_store_result(&mysql);//獲得結果集
if(mysql_num_rows(result)!=NULL)
{ //有記錄的情況,只有有記錄取數據才有意義
printf(“t ════════════════════════════
n”);
printf(“t
顯示圖書信息
n”);
printf(“t ════════════════════════════ n”);
printf(“t圖書編號
圖書名
作者
出版社
n”);
printf(“t-------------------------n”);
while((row=mysql_fetch_row(result)))
{
//取出結果集中記錄
fprintf(stdout,“t
%s
%s
%s
%s
n”,row[0],row[1],row[2],row[3]);//輸出這行記錄
}
printf(“t ════════════════════════════ n”);
}
else
{
printf(“t 沒有發現要查詢的信息!n”);
}
mysql_free_result(result);
//釋放結果集
}
mysql_close(&mysql);
//釋放連接
}
inquire();
/*詢問是否顯示主菜單*/ }
說明部分
附加MySQL數據庫
將工程文件夾中的data文件夾下的db_books文件夾拷貝到本地Mysql數據庫安裝文件夾的data文件夾中。即可完成對數據庫的附加。
連接MySql的步驟
MySQL為C語言提供了連接數據庫的API,要想正常使用這些API,需要做以下兩件事情:(1)包含這些API的聲明文件,即mysql.h。
(2)讓編譯器找到這些API的可執行程序,即DLL庫。下面介紹一下詳細的步驟: 1.
下面解決,讓編譯器找到mysql.h的問題。需要在編譯環境中作如下的設置: 在Visual C++ 6.0中,選擇Tools(工具)/Options(選項)菜單項,如下圖所示。
選擇菜單命令
即可打開Options對話框,在Options對話框中選擇Directories選項卡,在Show directories for下拉列表框中選擇Include files選項,在Directiories列表框中添加本地安裝MySQL的include目錄路徑。如下圖所示。默認的路徑應該在C:Program FilesMySQLMySQL Server 5.0include。
添加mysql.h文件
通過上述設置,編譯器就可以知道MySQL的API接口中有哪些函數,以及函數的原型是怎樣的。在編譯時,所編寫的程序已經能夠通過編譯(compile)這步了。
2.引入庫函數
經過上一步的設置,程序已經可以編譯通過了,但是編譯通過并不等于可以生成可執行文件。還需要告訴編譯器這些API函數的可執行文件在哪個DLL文件(libmysql.dll)中。
在工程中選擇Tools/Options菜單命令,將彈出Options對話框,在該對話框中選擇Directories選項卡,在Show directories for下拉列表框中選擇Include files選項。添加本地安裝的MySQL的Lib目錄路徑。默認的安裝路徑是C:Program FilesMySQLMySQL Server 5.0libdebug 或者C:Program
FilesMySQLMySQL Server 5.0libopt)。設置完成的效果如下圖所示。
引用庫
單擊OK按鈕,關閉Options對話框。選擇Project/Settings菜單命令。如下圖所示。
選擇Project/Settings菜單項
下面添加libmysql.lib到工程中。選擇Project/Settings菜單項,將彈出Project Settings對話框,在該對話框中選擇Link選項卡。在Object/library modules文本框末尾添加libmysql.lib。如下圖所示。
添加libmysql.lib到工程中
最好將libmysql.lib以及libmysql.dll文件拷貝到工程的目錄下。設置完成后就可以運行程序了程序運行界面如下圖所示:
第二篇:C語言程序設計圖書管理系統
C語言程序設計
實驗報告
題 目: 圖書管理管理系統 院 系: 信息科技學院 專 業: 姓 名: 學 號:
指導教師: 楊呈勇 日 期: 09-09-18 問題定義 …………………………………………………………………………..3 2 系統設計 ……………………………………………………………………3 2.1 總體設計………………………………………………………………………………4
2.2 詳細設計………………………………………………………………………………4 2.2.1 借書模塊 ……… ………………………………………………… 4 2.2.2 圖書維護………………………………………………………………………… 5 ① 新增記錄 …………………………………………………………………… 5 ② 更改系統…………………………………………….………………… 6 ③刪除系統 …………………………………………… 6 ④ 查找系統……………………………………………….………………….6 ⑤ 顯示系統 ………………………………………………………………….7 3 系統實現 ………………………………………………………………………10 3.1 編碼 ………………………………………………………………………8 3.1.1 程序預處理 ……….……………………………………………………………9 3.1.2 主函數main()……….……………………………………………………….9 4 系統維護 ………………………………………………………………………16 5 歸納總結 ………………………………………………………………………16 5.1 開發經驗 ………………………………………………………………………16 5.2 實訓中遇到的問題及解決方法 ………………………………………………16 5.3 設計中的不足之處……………………………………………………………………16 5.4 感想和心得體會 ……………………………………………………………………16
圖書管理系統
本題目設計目的是訓練學生的基本編程能力,了解管理信息系統的開發流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結構體、單鏈表、文件及各種語句的運用如for();switch();if….else等方面的知識。通過本程序的訓練,使學生能對C語言的文件操作有一個更深刻的了解,初步掌握鏈表的一些結構及構成。掌握利用單鏈表存儲結構實現對學生成績管理的原理,為進一步開發出高質量的管理信息系統打下堅實的基礎。
1、問題定義
圖書信息包括:編號、書名、作者名、分類號、出版單位、出版時間、庫存數量,價格等。試設計一圖書信息管理系統,使之能提供以下功能:(1)系統以菜單方式工作
(2)圖書信息錄入功能(圖書信息用文件保存)(3)圖書信息瀏覽功能(4)圖書信息查詢功能
查詢方式:可以按書名,按作者名,按出版單位,按出版時間進行查詢。(5)圖書信息的刪除與修改
在問題定義階段要考慮題目的可行性和需求分析,接下來進入開發階段,完成系統設計和系統實現的任務。
2、系統設計 2.1 總體設計
采用模塊化的程序設計方法,即將較大的任務按照一定的原則分為一個個較小的任務,然后分別設計各個小任務。需要注意的是劃分出來的模塊應該相對獨立但又相關,且容易理
解。可以用模塊化層次結構圖(即模塊圖)來分析其任務的劃分,一般從上到下進行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細化描述。
圖2.1
圖書管理系統功能模塊圖
? ? ? ? 本圖書管理系統要求采用單鏈表實現,如圖2.1所示,它由如下四大功能模塊組成: 借書模塊。通過輸入讀者的編號和圖書的編號,查找到要該借的書,完成借書這一項任務
還書模塊。通過輸入讀者的編號和圖書的編號,查找到要該還的書,完成還書這一項任務
圖書維護模塊。完成對圖書信息的維護。在此圖書管理系統中,它實現了對圖書信息的新曾、更改、刪除、查找和顯示操作,并將追加后的數據存入源數據文件。讀者維護模塊。一是實現對讀者記錄的存盤,即將讀者信息寫入數據文件中;
2.2 詳細設計
2.2.1 借書模塊
通過輸入讀者的信息和要借的書的編號。系統顯示相應的內容,若該文件中沒有數據,系統會提示單鏈表為空,沒有任何讀者記錄或圖書操作,此時,用戶應選擇調用create()函數,進行讀者記錄的輸入,即完成在單鏈表1中添加記錄的操作。值得一提的是,這里的字符串和數值的輸入分別采用了函數來實現,在函數中完成輸入數據任務,并對數據進行條件判斷,直到滿足條件為止,這樣一來,大大減少了代碼的重復和冗余,符合模塊化程序設計的特點。
2.2.2 還書模塊
還書模塊主要實現了在單鏈表中按讀者和圖書的編號查找滿足相關條件的借書記錄。在
用戶選擇4,調用查詢函數search()中,為指向保存了讀者信息的單鏈表的首地址的指針變量。為了遵循模塊化編程的原則,我們將在單鏈表中進行的指針定位操作,設計一個
int retbook(int bookid)
{
for(int i=0;i { if(borbook[i]==bookid) { borbook[i]=0; return 1; } } return 0; } //讀出讀者信息 void disp() { cout << setw(5)<< no < for(int i=0;i if(borbook[i]!=0) cout << borbook[i] << “|”; cout << “]”< } }; 若沒有該記錄,則顯示無此記錄,返回到上一操作。 2.2.3 圖書維護模塊 此模塊主要實現了對圖書記錄的新增、更改、刪除、查找和顯示操作。因為圖書記錄是以單鏈表的結構形式存儲的,所以這些操作都在單鏈表中完成。下面分別介紹著4個功能模塊。 ①新增記錄。該操作需要對單鏈表中目標節點的數據域中的值進行追加新增要輸入圖書的編號和書名,int addbook(int n,char *na) { Book *p=query(n); if(NULL==p) { top++; book[top].addbook(n,na); return 1; } return 0; } ②更改系統。該操作可以將原本錯誤的圖書記錄更改,將之改為正確的記錄。首先輸入原來的記錄的圖書的編號,在此之后輸入新的記錄的書名。 ③刪除系統。該操作可以將原本記錄得圖書信息,在不用之后選擇將此刪除的一種方法,在彈出的窗口輸入原來的圖書的編號,就可以將之刪除。 ④ 查找系統。該操作可以幫助讀者快速找到將要借的圖書,只要輸入圖書的編號,如果有這本書,就將顯示出。反之就會顯示不存在。Book *query(int bookid) { for(int i=0;i<=top;i++) if(book[i].getno()==bookid &&book[i].gettag()==0) { return &book[i]; } return NULL; } ⑤顯示系統。該操作可以顯示出圖書現在的信息。cout << “輸入圖書編號:”< cin >> bookid; cout << “輸入圖書書名:”< cin >> bname; addbook(bookid,bname); break; case '2': cout << “輸入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout << “ 該圖書不存在 ”< break; } cout << “輸入新的書名:”< cin >> bname; b->setname(bname); break; case '3': cout <<“ 讀入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout <<“ 該圖書不存在” << endl; break; } b->delbook(); break; case '4': cout << “ 讀入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout <<“ 該圖書不存在”<< endl; break; } b->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<“輸入錯誤,請從新輸入:”; } } }cout << “輸入圖書編號:”< cin >> bookid; cout << “輸入圖書書名:”< cin >> bname; addbook(bookid,bname); break; case '2': cout << “輸入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout << “ 該圖書不存在 ”< break; } cout << “輸入新的書名:”< cin >> bname; b->setname(bname); break; case '3': cout <<“ 讀入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout <<“ 該圖書不存在” << endl; break; } b->delbook(); break; case '4': cout << “ 讀入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout <<“ 該圖書不存在”<< endl; break; } b->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<“輸入錯誤,請從新輸入:”; } } } cout << “輸入圖書編號:”< cin >> bookid; cout << “輸入圖書書名:”< cin >> bname; addbook(bookid,bname); break; case '2': cout << “輸入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout << “ 該圖書不存在 ”< break; } cout << “輸入新的書名:”< cin >> bname; b->setname(bname); break; case '3': cout <<“ 讀入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout <<“ 該圖書不存在” << endl; break; } b->delbook(); break; case '4': cout << “ 讀入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout <<“ 該圖書不存在”<< endl; break; } b->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<“輸入錯誤,請從新輸入:”; } } 3、系統實現 3.1 編碼 3.1.2 主函數main()include #include #include //輸入/輸出文件流類 #include using namespace std; //最多的讀者 const int Maxr=100; //最多的圖書 const int Maxb=100; //每位讀者最多借五本書 const int Maxbor=5; //圖書庫類,實現對圖書的維護,查找,刪除等 class BDatabase { private: //圖書記錄指針 int top; //圖書記錄 Book book[Maxb]; public: //構造函數,將book.txt讀到book[]中 BDatabase() { Book b; top=-1; fstream file(“book.txt”,ios::in); while(1) { file.read((char *)&b,sizeof(b)); if(!file)break; top++; book[top]=b; } file.close(); } //全刪 void clear() { top=-1; } //增加圖書 int addbook(int n,char *na) { Book *p=query(n); if(NULL==p) { top++; book[top].addbook(n,na); return 1; } return 0; } //查找圖書 Book *query(int bookid) { for(int i=0;i<=top;i++) if(book[i].getno()==bookid &&book[i].gettag()==0) { return &book[i]; } return NULL; } //圖書庫維護 void bookdata(); void disp() { for(int i=0;i<=top;i++) if(book[i].gettag()==0) book[i].disp(); } //析構函數,將book[]寫到book.txt文件中 ~BDatabase() { fstream file(“book.txt”,ios::out); for(int i=0;i<=top;i++) if(book[i].gettag()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } }; void BDatabase::bookdata() { char choice; char bname[40]; int bookid; Book *b; while(choice!='0') { cout <<“nnnttt圖 書 維 護 ”< cout<<“tt1 新 增n tt2 更 改ntt3 刪 除ntt4 查 找ntt5 顯 示ntt6 全 刪ntt0 退 出”< cin >> choice; switch(choice) { case '1': cout << “輸入圖書編號:”< cin >> bookid; cout << “輸入圖書書名:”< cin >> bname; addbook(bookid,bname); break; case '2': cout << “輸入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout << “ 該圖書不存在 ”< break; } cout << “輸入新的書名:”< cin >> bname; b->setname(bname); break; case '3': cout <<“ 讀入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout <<“ 該圖書不存在” << endl; break; } b->delbook(); break; case '4': cout << “ 讀入圖書編號:”< cin >> bookid; b=query(bookid); if(b==NULL) { cout <<“ 該圖書不存在”<< endl; break; } b->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<“輸入錯誤,請從新輸入:”; } } } //main()函數的實現,程序的主界面的引導 int main() { char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!='0') { cout < cout <<“ttt1 借 書nnttt2 還 書 nnttt3 圖 書 維 護nnttt4 讀 者 維 護nnttt0 離 開”< cin >> choice; switch(choice) { case '1': cout <<“ 借書 讀者編號:”; cin >>readerid; cout <<“ 圖書編號: ”; cin >>bookid; //按編號查找 r=ReaderDB.query(readerid); if(NULL==r) { cout <<“ 不存在該讀者,不能借書”<< endl; break; } b=BookDB.query(bookid); if(b==NULL) { cout <<“ 不存在該圖書,不能借書”<< endl; break; } if(b->borrowbook()==0) { cout << “ 該圖書已借出,不能借書”<< endl; break; } r->borrowbook(b->getno()); break; case '2': cout<<“還書n 讀者編號:”; cin >>readerid; cout << “ 圖書編號:”; cin >>bookid; r=ReaderDB.query(readerid); if(r==NULL) { cout <<“ 不存在該讀者,不能還書” << endl; break; } b=BookDB.query(bookid); if(b==NULL) { cout <<“ 不存在該圖書,不能還書” < break; } b->retbook(); r->retbook(b->getno()); break; case '3': BookDB.bookdata(); break; case '4': ReaderDB.readerdata(); break; default:cout<<“輸入錯誤,請從新輸入:”; 4、系統維護 經測試與調試確認軟件無錯時,開發就告一段落,這時可以交付軟件供用戶使用,但是在軟件的使用過程中還會面臨更加漫長的工作,即軟件維護。一般維護的工作有:更改使用中發現的錯誤;為適應實際環境而對程序進行修改;為滿足新的需求而對程序作必要的改進等等。 5、歸納總結 5.1 開發經驗 通過對本題目的開發,體會到要掌握以下幾點內容。 ? 大程序的設計風格。按“自頂向下,逐步細化,模塊化”的方法進行程序設計。? 編寫主函數,并進行測試與調試。當被調函數又需要調用其他函數時,也要遵循逐步細化的原則。C語言提供豐富的庫函數,編程序時要善于使用庫函數,避免不必要的勞動。? 定義函數時,應選好參數的個數和數據類型。? 文件使用方法。文件使用完畢后應及時關閉。 5.2 實訓中遇到的問題及解決方法 在實訓過程中,我遇到許多的問題,比如有些語句有語法錯誤,表達式不正確,或缺少}或;等。或者是沒有宏定義,申明某些變量。這些都比較容易解決。通過查閱課本和請教同學,在經過WIN-TV編譯,知道哪有錯誤就改一下就行。比較嚴重的是,我的代碼在求解平均成績和總分時沒有錄入,且亂碼。自已改了很久,也在網上查詢但是都不行。最后在老師的幫助下及查閱有關資料,把代碼改出來了。 5.3 設計中尚存的不足之處 關于這次的程序,也有挺多不足的地方。首先,我覺得程序還不夠完善,比如沒有排序前和排序后的學生記錄輸出結果顯示和有些程序功能沒有滿足所給題目要求及好幾項都沒有顯示出學生具體的信息,甚至有些地方有點亂;其次,有些地方好像功能有點重復了,且編寫的代碼有重復;最后,就是該程序界面不夠美觀大方,有些文件不能鏈接。 5.4 感想和心得體會 通過這次實訓,我感觸甚深,要把所學的理論知識運用于解決實際問題不僅要付出艱辛的勞動,還得要有科學的方法和堅持不懈的努力。加上我們只是學了一個學期的c語言,我們所學的知識還不足以獨立編寫程序代碼。但是我認為只要我們認真的去學去做,我們會受益非淺。這次實訓讓我進一步理解了“編程是什么”,“如何去編程”,“編程的目的又是什么”,??發現自己的知識竟是如此貧乏,頓時感到了壓力的存在,從而也激發了我的學習熱情。它會成為我今后不斷進取、永不懈怠的動力。 在整個實訓過程中,老師給了我很大的幫助,使我由不了解怎樣運用鏈表到逐漸懂得鏈表的結構及初步掌握鏈表結構。還重新復習了一些語句的使用,比如for(0;switch();if….elser();結構體的使用;枚舉等。而且我能夠堅持虛心的向老師以及同學請教問題。它使我明白了虛心好學的重要性,更讓我懂得了如何跟老師同學去相處、去溝通。沒有老師和同學們的無私幫助,我不可能圓滿完成這次實訓任務。非常感謝幫助過我的所有老師和同學們,在此,謹向他們一并表示感謝!我開始喜歡這個程序設計了,尤其覺得它是很有挑戰性的,是對知識點扎實程度的考察,也是對個人能力的考察,還是對個人化毅力的考驗。它讓我明白做任何事都不應該輕易放棄。這樣的課程設計,既有利于教學,又可以教會學生書本以外的很多知識。現在我對它越來越感興趣,今后我會更加關注C語言程序,把C語言學好。希望老師以后多多指導,給予一定的幫助! 圖書管理系統源代碼 #include Length();//計算鏈表長度 DblNode 象,讀入圖書館書籍數據 ofstream magFileOut;// 文件流對象,保存圖書館雜志數據 ifstream magFileIn;// 文件流對象,讀入圖書館雜志數據 ofstream readerFileOut;// 文件流對象,保存圖書館讀者數據 ifstream readerFileIn;// 文件流對象,讀入圖書館讀者數據 ofstream loanFileOut;// 文件流對象,保存圖書館借閱信息數據 ifstream loanFileIn;// 文件流對象,讀入圖書館借閱信息 ofstream managerFileOut;// 文件流對象,保存圖書館管理員數據 ifstream managerFileIn;// 文件流對象,讀入圖書館管理員數據 public: Library();// 構造函數 ~Library();//析構函數 void Run();// 圖書館類的運行函數 void CreateBibliotheca();// 創建書目 void CreateReader();// 創建讀者庫 void CreateManager();// 創建管理員信息 int ShowMainMenu();// 顯示主菜單函數 void Borrow();// 借書操作 void Return();// 還書操作 void Require();// 查詢操作 void SaveInfo();// 保存圖書館信息 void OpenInfo();// 讀入圖書館信息 }; 目錄 第一章 緒論.....................................................................................................................................1 第二章 需求分析..............................................................................................................................2 2.1任務概述............................................................................................................................2 2.1.1 圖書管理系統完成的主要目標...........................................................................2 2.1.2用戶的特點............................................................................................................3 2.2需求規定............................................................................................................................3 2.2.1對功能的規定........................................................................................................3 2.2.2讀者管理功能........................................................................................................4 2.2.3系統管理功能........................................................................................................4 第三章 概要設計.............................................................................................................................4 3.1總體設計............................................................................................................................4 3.1.1系統目標設計........................................................................................................4 3.1.2系統功能分析........................................................................................................5 3.2系統設計思想.....................................................................................................................5 3.3 系統模塊功能解析............................................................................................................5 第四章 詳細設計.............................................................................................................................6 4.1程序設計說明....................................................................................................................6 4.1.1用戶登錄模塊........................................................................................................6 4.1.2用戶添加模塊........................................................................................................7 4.1.3書籍查詢模塊........................................................................................................8 4.1.4圖書借閱模塊........................................................................................................9 4.1.5圖書歸還模塊......................................................................................................10 4.1.6新書入庫模塊......................................................................................................11 第五章 編碼與測試.......................................................................................................................13 5.1各功能模塊的實現...........................................................................................................13 5.2 測試.................................................................................................................................19 5.2.1借閱卡管理測試..................................................................................................19 5.2.2書籍管理測試......................................................................................................19 5.2.3系統管理測試......................................................................................................19 結束語.............................................................................................................................................20 致 謝...........................................................................................................................................21 參考文獻.........................................................................................................................................21 圖書管理系統 摘要:本文介紹了在VB6.0環境下采用“自上而下地總體規劃,自下而上地應用開發”的策略開發一個管理信息系統的過程。通過分析傳統的人工管理圖書館的不足,創建了一套行之有效的計算機管理圖書館的方案。文章詳細介紹了圖書管理信息系統的系統分析部分,包括可行性分析、組織機構分析、管理職能分析、業務流程分析、數據流程分析、數據字典、處理描述等等;系統設計部分主要介紹了系統功能設計和數據庫設計;系統實現部分列出了幾個主要的程序框圖,并附帶了一些主要的窗口和程序。關鍵字:圖書管理系統,VB6.0,sqlserver2000,信息系統 Library Management System Abstract:This article introduces the detailed process of exploring a management information system under the environment of VB6.0, utilizing “Top-Bottom” overall plan and a strategy according to “Bottom-Top” application and exploitation.That is to establish a set of effective scheme for library management by computer, through analyzing disadvantages of traditional library management by human resources.This article emphasizes on three sections.The system analysis section of library management information includes feasible analysis, organizing organs analysis, management function analysis, technological process of business analysis, technological process of data analysis, data dictionary, disposal description and the like.The system design section mainly focuses on system function design and data base design.And the system realization section has provided several major program charts, together with the main windows and programs.Key words: library management system, VB6.0,information system 第一章 緒論 隨著人類社會的發展,人類對知識的需求也不斷地增長。在這種形勢下,書籍就漸漸地成為人們獲取并增長知識的主要途徑,而圖書館就自然而然地在人們的生活中占據了一定的位置,如何科學地管理圖書館不但關系到讀者求知的方便程度,也關系到圖書館的發展,因此,開發一套完善的圖書館管理系統就必不可 少了。 圖書館管理系統是典型的信息管理系統,其開發主要包括后臺數據庫的建立和維護以及前端的應用程序的開發兩個方面。對于前者要求建立數據的一致性和完整性,對于后者則要求應用程序功能的完備,易用等的特點。基于上述考慮本系統主要利用VB6.0作前端的應用開發工具,利用sqlsever 作為后臺的數據庫,利用WINDOWS作為系統平臺開發的圖書管理系統。另外本圖書館管理系統利用軟件工程化思想和方法,總體上是采用結構化生命法進行系統分析和設計的,而系統實現等步驟則采用了原型法和面對對象的方法 系統開發的總目標是實現內部圖書借閱管理的系統化、規范化和自動化。能夠對圖書進行注冊登記,也就是將圖書的基本信息(如:書名、作者、價格等)預先存入數據庫中,供以后檢索。能夠對借閱人進行注冊登記,包括記錄借閱人的姓名、地址、電話等信息。提供方便的查詢方法。如:以書名、作者、出版社、出版時間(確切的時間、時間段、某一時間之前、某一時間之后)等信息進行圖書檢索,并能反映出圖書的借閱情況;以借閱人編號對借閱人信息進行檢索;以出版社名稱查詢出版社聯系方式信息。提供統計分析功能。可以展現出圖書類型比例、庫存與借出比例。提供舊書銷毀功能,對于淘汰、損壞、丟失的書目可及時對數據庫進行修改。能夠對使用該管理系統的用戶進行管理,按照不同的工作職能提供不同的功能授權。提供較為完善的差錯控制與友好的用戶界面,盡量避免誤操作。圖書館的基本功能就是為讀者提供借閱服務,讀者通過借閱這一過程,可以把圖書帶出圖書館,從而使讀者能夠更方便的瀏覽圖書。借書過程中,圖書管理員要對讀者的借書資格進行審查,對符合借書條件的讀者,允許其借書,對其借書記錄進行登記;對沒有借書資格的讀者,禁止其借書。 在VB6.0環境下采用“自上而下地總體規劃,自下而上地應用開發”的策略開發一個管理信息系統的過程。通過分析傳統的人工管理圖書館的不足,創建了一套行之有效的計算機管理圖書館的方案。文章詳細介紹了圖書管理信息系統的系統分析部分,包括可行性分析、組織機構分析、管理職能分析、業務流程分析、數據流程分析、數據字典、處理描述等等;系統設計部分主要介紹了系統功能設計和數據庫設計;系統實現部分列出了幾個主要的程序框圖,并附帶了一些主要的窗口和程序。 第二章 需求分析 2.1任務概述 2.1.1 圖書管理系統完成的主要目標 進入系統前需要身份認證、用戶名、密碼、輸入正確方可進入。用戶可以根據需要進行書庫管理。用戶可以進行借書證的辦理、查詢、掛失等操作。用戶可 以添加賬戶和修改密碼。2.1.2用戶的特點 最終用戶包括讀者(具有借閱卡的人)、圖書管理員,鑒于此軟件應用于大學圖書管理,讀者基本都是在校大學生即校職工和領導,圖書管理員都是接受過高等教育的職工,因此他們都懂得運用基本的計算機知識。大學圖書管理系統的使用頻度很高,假如一個一萬人的大學來講,每天圖書館的平均日流量為1.5萬。因此,該軟件的可靠性、可用性、可維護性顯得尤為重要。 2.2需求規定 2.2.1對功能的規定 1、圖書信息查詢/借書信息查詢:圖書館主要向讀者提供圖書借閱的服務。讀者為了借閱圖書,一般情況下,需要在借書之前查詢所要借閱的圖書情況,所以圖書館需要為讀者提供圖書查詢功能。例如,讀者可能想借閱某方面的書,但不知道圖書館在該方面有哪些圖書可供借閱,所以需要對圖書館的圖書進行查詢;或者,讀者知道想借閱的圖書信息,但不知道該圖書館是否有該書或不知道圖書在圖書館的位置、是否被借出、是否可以借閱等信息,這也需要使用圖書查詢功能。一般的圖書查詢中,讀者是通過圖書登記卡、瀏覽圖書登記卡中的信息得到圖書信息的。經過圖書查詢,讀者獲得圖書館是否有自己想要的圖書,該圖書的簡單信息以及圖書在圖書館的借閱位置等信息。 2、新書入庫:為了能正常運行,圖書館要及時更新館藏圖書。對于新書,要購進,供讀者借閱;所以要設計到圖書的批量入庫。對于批量入庫,圖書管理員要批量登記圖書的信息,包括書名ID、ISBN、圖書名稱、作者、出版社、單價、入庫時間、圖書總量、現存總量等。 3、借閱圖書/歸還圖書:圖書館的基本功能之一就是為讀者提供借閱服務,讀者通過借閱這一過程,可以把圖書帶出圖書館,從而使讀者能夠更方便的瀏覽圖書。借書過程中,圖書管理員要對讀者的借書資格進行審查,對符合借書條件的讀者,允許其借書,對其借書記錄進行登記;對沒有借書資格的讀者,禁止其借書。具體的步驟如下:讀者向圖書管理員提交請求和圖書借閱卡,圖書管理員檢查讀者提供的借閱卡,如果該借閱證真實準確,讀者已經借閱的圖書并沒有超過允許借書量,而且讀者沒有逾期未還的圖書,則允許讀者借書,否則,讀者不能從圖書館借書。讀者拿到要借閱的圖書,同時拿到自己的借閱卡,借書過程完畢。當借閱圖書的數量超過5本或者出現未按期歸還圖書的情況,則不好進行借閱處理。圖書館的另一基本功能就是為讀者提供還書服務,讀者在一本圖書借閱期滿之前把該圖書還給圖書館,一般的還書步驟如下:讀者把所借的圖書和自己的借閱卡交給圖書管理員。圖書管理員對圖書進行檢查,看有無損壞,如果出現圖書的損壞情況,讀者應進行相應的賠償。圖書管理員查看是否超過規定借閱期限,如果已經過期,則讀者要按規定交納罰金。圖書管理員進行登記,同時把還書信息記入借閱卡。讀者拿回自己的借閱卡,還書過程借書。讀者逾期未歸還圖書超過三天,將按照每本每天進行一定的罰款。 4、書籍掛失:對圖書由于丟失而不能即時還書的情況,讀者要即時到圖書管理員進行登記,確保圖書信息的更新。進行書籍掛失的步驟一般如下:讀者將所丟圖書信息告訴圖書管理員并將借閱卡交給圖書管理員。圖書管理員對該圖書信息進行登記,并按圖書的價格,要求讀者進行相應賠償。圖書管理員將信息記入借閱卡。讀者拿回自己的借閱卡,掛失功能結束。 2.2.2讀者管理功能 1、辦理借閱卡:圖書館向讀者提供借閱服務,讀者必須具有有效憑證方可借閱。因此,讀者必須辦理借閱卡獲取有效憑證。讀者在辦理借閱卡時,必須輸入個人有關注冊信息,包括讀者姓名、性別、出生日期、家庭住址、身份證號碼、電話號碼等信息。系統根據讀者提供的信息,辦理借閱卡并生成個人帳號、讀者可自行修改密碼。 2、借閱卡信息查詢;圖書館在正常運營中要面對大量的讀者信息,需要掌握每個讀者的信息,即時準確的掌握讀者的基本情況,這些是圖書館運營的保證。讀者要進行信息查詢,可以通過系統將自己的借閱卡賬戶、密碼輸入系統,系統通過核對找到讀者的信息。如果讀者的信息正確,系統將讀者的信息包括讀者姓名、性別、出生日期、家庭住址、身份證號碼、電話號碼等信息。如果讀者的信息不正確,系統將提示錯誤,并且系統設定,當錯誤次數超過5次時,系統將不予查詢。 3、借閱卡掛失:對借閱卡的丟失要即時進行掛失處理,以防止其他人盜用自己的有效信息并出現私自借書等行為。借閱卡掛失的一般步驟可分為:讀者將掛失情況即時到圖書管理員處進行登記,并填寫登記單。圖書管理員將讀者情況進行登記掛失,注銷借閱卡的信息,并咨詢讀者是否重新辦理。若讀者需重新辦理,則重新填寫相關信息,系統自動生成心的借閱卡信息記錄,讀者重新設置帳號即密碼,并交納相應的費用。若讀者不需辦理,則系統將信息注銷。讀者獲得新的圖書借閱卡。 2.2.3系統管理功能 1、注冊管理員:為了對圖書館管理系統進行管理,圖書館需要若干名圖書管理員進行管理,在圖書管理員對系統進行管理之前必須進行注冊功能,以確定管理員身份。對管理員進行注冊,系統生成相應信息。其中管理員的基本信息包括:成員ID、密碼等。系統管理員每次登陸前輸入自己的ID與密碼,系統對其信息進行核實,如基本信息正確,則系統管理員可進行系統管理功能,若系統檢查不正確,則系統管理員不可以進行相應的操作。 2、修改密碼:服務圖書館管理員可能由于某些原因,如電腦中毒導致管理員密碼的泄露,為避免圖書管理信息遭到破壞,系統具有修改密碼的功能,確保圖書管理功能的安全性。 3、退出功能:系統管理員每次離開必須進行退出功能,確保管理功能不被他人所用,這樣更方便圖書管理系統出現問題時,找到責任人。 第三章 概要設計 3.1總體設計 3.1.1系統目標設計 系統開發的總目標是實現內部圖書借閱管理的系統化、規范化和自動化。能夠對圖書進行注冊登記,也就是將圖書的基本信息(如:書名、作者、價格等) 預先存入數據庫中,供以后檢索。能夠對借閱人進行注冊登記,包括記錄借閱人的姓名、地址、電話等信息。提供方便的查詢方法。如:以書名、作者、出版社、出版時間(確切的時間、時間段、某一時間之前、某一時間之后)等信息進行圖書檢索,并能反映出圖書的借閱情況;以借閱人編號對借閱人信息進行檢索;以出版社名稱查詢出版社聯系方式信息。提供統計分析功能。可以展現出圖書類型比例、庫存與借出比例。提供舊書銷毀功能,對于淘汰、損壞、丟失的書目可及時對數據庫進行修改。能夠對使用該管理系統的用戶進行管理,按照不同的工作職能提供不同的功能授權。提供較為完善的差錯控制與友好的用戶界面,盡量避免誤操作。3.1.2系統功能分析 根據以上功能,將圖書管理系統的數據分為:數據輸入部分:主要包括圖書基本信息的錄入、借閱人基本信息的錄入、用戶基本信息的錄入。數據輸出部分:主要是各種統計查詢,包括:根據圖書信息(如書名、作者、出版社等)查閱圖書及其借閱信息、統計輸出圖書類型比例等。數據處理部分:主要涉及借閱和歸還的處理,如一本書借出后,必須在數據 庫中將該書標記為已借出,以防出現數據庫中有書但圖書館無書的情況;一本書歸還后,同樣必須在數據庫中將其標記為已經歸還,以便再次借出。 概念設計階段主要任務和目標是根據需求分析的結果,包括一般聯系實體,畫出對應的ER圖。對于復雜的系統,通常首先要對它的各功能模進行分析,然后再把它的功能結構圖畫出來,便是設計和優化。功能分析之后,再根據各個崗位、各個用戶對數據和使用權限的不同要求作出局部ER圖,然后再把各個局部ER圖綜合起來形成統一的整體ER圖。 3.2系統設計思想 1、圖書管理系統是典型的信息管理系統(MIS),其開發主要包括后臺數據庫的建立和維護以及前端應用程序的開發兩個方面。圖書管理系統使用的是SQL Server2000的數據管理系統和以Visual Basic6.0為開發工具。 2、首先進行系統設計分析,系統設計主要包括系統功能分析、系統模塊設計以及運行環境的選擇、系統實現過程。 3、然后根據系統功能分析設計出需要的數據庫,繪制系統數據流圖與總結數據字典、設計數據庫結構。 4、最后在實現各個功能模塊時,采用先模塊后系統集成的方式,即各系統功能模塊分別獨立設計和調試,在創建系統主窗體時才將各個功能模塊通過主窗體菜單系統集成到一起,最后進行系統整體的設計和調試。 3.3 系統模塊功能解析 (1)系統設計分析 本圖書管理系統主要有以下功能: 圖書征訂:包括圖書征訂數據的錄入、修改、刪除與審校等功能。圖書編目:包括圖書數目信息的錄入、修改、刪除功能。圖書典藏:包括新書分配、庫室調配等功能。 圖書流通:包括圖書借閱、續借、圖書返還,圖書書目的查詢的功能。系統用戶管理:包括系統用戶數據的錄入、修改與刪除等功能。 讀者數據管理:包括讀者類別管理,讀者個人數據的錄入、修改和刪除功能。(2)系統功能分析 權限功能:權限功能設置的對象為高級管理員、普通管理員、讀者。高級管 刪除所有信息;普通管理員只能對授權范圍內進行相應修改及刪除;讀者 只能查詢借閱記錄和圖書書目不能修改。 錄入功能:為普通管理員提供相應的錄入功能,為高級管理員提供對所有信息的錄入功能。 查詢功能:為所有用戶提供查詢的功能,可查詢允許范圍內的所有信息。維護功能:為普通管理員提供查詢及相應的修改,刪除功能,為高級管理提 供對所有信息的修改刪除功能。 打印功能:可打印圖書征訂計劃。 退出功能:各個功能模塊和主窗體都設有關閉命令按鈕,可方便地退出各模 塊或系統。 第四章 詳細設計 4.1程序設計說明 4.1.1用戶登錄模塊 1.程序描述:此程序用于用戶登陸的至用戶界面,程序通過輸入用戶的ID,用戶密碼的正確性來實現對驗證用戶的真實性。2.功能:實現用戶的登錄功能 3.性能:用戶通過輸入用戶ID,用戶名和密碼進行用戶登陸,通過認證后,用戶 即可進入用戶界面。 4.輸入項:輸入用戶ID,用戶名,密碼5.輸出項:用戶主頁面。流程邏輯如圖所示: 輸入用戶名和密碼N數據庫是否打開Y連接失敗返回N用戶名和密碼是否正確Y輸入次數是否超過5次YN重新輸入密碼關閉數據庫返回登陸成功進入主界面 圖4-1用戶登錄流程邏輯 4.1.2用戶添加模塊 1.程序描述:此程序用于添加新的用戶,用戶通過向數據庫內輸入必要的信息來注冊成為新的用戶,才通過一系列的驗證之后,即注冊成為真正的用戶。 2.功能:實現對用戶的添加功能。 3.性能:查詢新用戶的用戶名是否存在,若存在則停止添加返還數據庫;若用戶不存在,則進行添加,并進行注冊,注冊成功后返回。 4.輸入項:輸入用戶的詳細信息,包括姓名,出生日期,性別,地址,身份證號碼,電話號碼等信息。 5.輸出項:若添加成功,則輸出提示用戶注冊成功界面;若未成功,則提示輸出未成功原因界面。 6.流程邏輯如下圖所示: 輸入用戶信息N判斷數據庫是否打開提示連接失敗返回Y查詢數據庫中是否有該用戶Y提示已經存在該用戶關閉數據庫并返回N向數據庫中添加新用戶提示注冊成功返回 圖4-2用戶添加模塊流程邏輯 4.1.3書籍查詢模塊 1.程序描述:此程序用于實現用戶對想要借閱的查詢功能。用戶通過輸入相應的圖書信息來查詢,數據庫根據用戶提供的信息來搜索,最后給出客戶相應的圖書信息。 2.功能:實現圖書查詢功能。 3.性能:對進行想要查詢的書籍進行搜索,若存在此書則顯示該書的詳細信息;若不存在此書,則提示沒有此書并返回。 4.輸入項:輸入圖書的詳細信息,包括圖書名稱,書籍ID,圖書作者,出版社,單價等信息。 5.輸出項:若輸入的圖書存在即輸出圖書詳細信息界面;若輸入的圖書不存在則顯示圖書不存在界面。 6.流程邏輯如下圖所示: 輸入圖書信息判斷數據庫是否打開Y查詢是否有該書YN連接失敗返回N關閉數據庫返回顯示該書的信息關閉數據庫返回 圖4-3圖書查詢模塊流程 4.1.4圖書借閱模塊 1.程序描述:此程序用于圖書的借閱,用戶通過登錄自己的借閱ID后,對需要借閱的圖書進行借閱操作,如果符合借閱的要求,則可進行借閱。2.功能:實現對圖書的書籍借閱功能。 3.性能:首先驗證借閱者輸入的借閱ID是否存在,若存在進行下一步;若不存在則返回。 4.若借閱ID存在,則檢查此借閱ID是否借閱書籍超出4本,若超出則提示超出借閱數目,返回;若沒有超出,則進行下一操作。 5.對想要借閱的圖書ID進行搜索,若此書不存在,則提示此書不存在;若此書存在則進行下一步操作。 將借閱者借閱的數量増一,將數據庫中此書數量減一,同時提醒借閱成功,然后返回。 6.輸入項:輸入借閱證的ID,圖書ID 7.輸出項:若借閱證ID正確且圖書ID正確且符合借閱要求,則輸出提示借閱成功界面;若存在借閱ID或圖書ID或不符合借閱要求等問題,則輸出提示沒有借閱成功原因的界面。8.流程邏輯如下圖 輸入書籍ID和借閱IDN數據庫是否打開YN借閱卡ID是否存在YY判斷借閱ID是否借書超出4本提示超出最大借書數量關閉數據庫返回提示不存在該借閱者關閉數據庫返回數據庫連接失敗返回NN數據庫中是否存在書籍IDY將借閱者的借書數量加1提示不存在該書籍關閉數據庫返回將書籍的數量減1提示借書成功關閉數據庫返回 圖4-4圖書借閱模塊 4.1.5圖書歸還模塊 1.程序描述:此程序用于圖書的歸還,用戶在登錄自己的ID之后,用戶可以對需要歸還的圖書進行操作,如果符合歸還要求,則可以將圖書歸還。2.功能:實現對圖書的書籍歸還功能。 3.性能:首先驗證借閱者輸入的借閱ID是否存在,若存在進行下一步;若不存在則返回。 對想要歸還的圖書ID進行搜索,若此書不存在,則提示此書不存在;若此書存在則進行下一步操作。將借閱者借閱的數量減一,將數據庫中此書數量加一,同時提醒借閱歸還,然后返回。 4.輸入項:輸入借閱證ID和圖書ID 5.輸出項:若借閱證ID和圖書ID正確,則輸出提示圖書歸還成功界面;若借閱證ID或圖書ID不正確,則輸出提示沒有成功原因的界面。 6.流程邏輯如下圖: 輸入書籍ID和借閱IDN數據庫是否打開YN借閱卡ID是否存在YN提示不存在該書籍關閉數據庫返回提示不存在該借閱者關閉數據庫返回數據庫連接失敗返回數據庫中是否存在書籍IDY將借閱者的借書數量減1將書籍的數量加1提示還書成功關閉數據庫返回 圖4-5圖書歸還模塊 4.1.6新書入庫模塊 1.程序描述:此程序用戶對新進圖書的入口登記處理。用戶可以將新書的詳細信息進行輸入,保存在數據庫中后,新書即登記成功。 2.功能;實現新進圖書入庫功能。 3.性能:對數據庫查詢是否已存在此書,若存在則將此書數量加一,提示添加成功;若沒有此書,則將此書的基本信息存入數據庫,并提示添加書籍成功。 4.輸入項:輸入新書的書籍ID,書名,作者,出版社,單價等信息。 5.輸出項:若添加成功,則輸出提示新書添加成功界面;若沒有添加成功,輸出提示未成功原因界面。 6.流程邏輯如下圖 輸入書籍信息N數據庫是否打開關閉數據庫返回Y是否已經存在Y該書將該書的數量加1提示添加書籍成功關閉數據庫N將該書信息存入數據庫是否是第一條N記錄提示添加書籍成功關閉數據庫返回Y提示添加第一本書籍關閉數據庫返回圖4-6新書入庫模塊 返回 第五章 編碼與測試 5.1各功能模塊的實現 (1)用戶登錄窗體 圖5-1 用戶登錄窗體 用戶登錄代碼: Const MaxLogTimes As Integer = 3 Private Sub cmdcancel_Click() If MsgBox(“是否真的退出系統登錄?”, vbYesNo, “登錄驗證”)= vbYes Then Unload Me End If End Sub Private Sub cmdok_Click() Static intLogTimes As Integer intLogTimes = intLogTimes + 1 If intLogTimes > MaxLogTimes Then MsgBox “超過登錄次數!”, vbCritical, “登錄驗證” Else With Library_Manage.rsSysUsers .Open If.RecordCount > 0 Then .MoveFirst .Find “編號=” & Trim(txtLog(0))& “" If.EOF Then MsgBox Trim(txtLog(0))& ”不是系統用戶,請檢查輸入!“, vbCritical, ”登錄驗證“ txtLog(0).SetFocus txtLog(0).SelStart = 0 txtLog(0).SelLength = Len(txtLog(0)) ElseIf.Fields(”口令“)<> Trim(txtLog(1))Then MsgBox ”口令錯誤,請檢查輸入口令!“, vbCritical, ”登錄驗證“ txtLog(1).SetFocus: txtLog(1)= ”“ Else CurrentUserNum =.Fields(編號) CurrentUserPassword =.Fields(”口令“) CurrentUserStatus =.Fields(”權限“) MsgBox ”歡迎使用常州信息學院管理系統!“, vbInformation, ”登陸成功!“ Unload Me End If End If .Close End With End If End Sub Private Sub Form_Load() SysLogon.BackColor = RGB(192, 210, 270)End Sub(2)用戶管理窗體界面 圖5-2 用戶管理窗體 用戶管理窗體代碼 '保存 Private Sub cmdSave_Click() Dim objcopy As New Recordset If Trim(txtNum)= ”“ Then MsgBox ”不能為空!“, vbCritical, ”系統用戶管理“ txtNum.SetFocus txtNum.SelStart = 0 txtNum.SelLength = Len(txtNum) ElseIf Len(Trim(txtPwd))<> 6 Then MsgBox ”用戶口令須為6位字符串!“, vbCritical, ”系統用戶管理“ txtPwd.SetFocus txtPwd.SelStart = 0 txtPwd.SelLength = Len(txtPwd)ElseIf Not txtAuth Like ”[0,1]“ Then MsgBox ”用戶權限必須為0或1“, vbCritical, ”系統用戶管理“ txtAuth = ”“ txtAuth.SetFocus Else Set objcopy = Library_Manage.rsSysUsers.Clone '對錯? With objcopy If.RecordCount > 0 Then .MoveFirst .Find ”編號“ & Trim(txtNum)& ”“ If Not.EOF And.AbsolutePosition <> Library_Manage.rsSysUsers.AbsolutePosition Then MsgBox ”編號:“ & Trim(txtNum)& ”已被使用,請選擇其他編號!“, vbCritical, ”系統用戶管理“ txtNum.SetFocus txtNum.SelStart = 0 txtNum.SelLength = Len(txtNum) Exit Sub Else '保存記錄 Library_Manage.rsSysUsers.Update MsgBox ”數據保存成功!“, vbInformation, ”系統用戶管理“ cmdAdd.Enabled = True cmdDel.Enabled = True isAdding = False: picNavigation.Enabled = True End If End With End If End Sub Private Sub Form_Load() cmdMove(0).Value = True End Sub(3)讀者數據管理窗體界面 圖5-3 讀者數據管理窗體 讀者數據管理窗體代碼 Library_Manage.Library_Manage_Con.Execute ”TRUNCATE TABLE 讀者類別“ With Library_Manage.ReaderType If.State = adStateClosed Then.Open .AddNew .Fields(”編號“)= ”0“ .Fields(”名稱“)= ”特殊“ .Fields(”借書量“)= Val(txtSp(1)) .Fields(”借書期“)= Val(txtSp(2)) .Fields(”有效期“)= Val(txtSp(3)) .Update .AddNew .Fields(”編號“)= ”1“ .Fields(”名稱“)= ”館員“ .Fields(”借書量“)= Val(txtL(1)) .Fields(”借書期“)= Val(txtL(2)) .Fields(”有效期“)= Val(txtL(3)) .Update .AddNew .Update .AddNew .Fields(”編號“)= ”2“ .Fields(”名稱“)= ”教師“ .Fields(”借書量“)= Val(txtT(1)) .Fields(”借書期“)= Val(txtT(2)) .Fields(”有效期“)= Val(txtT(3)) .Update .AddNew .Fields(”編號“)= ”3“ .Fields(”名稱“)= ”學生“ .Fields(”借書量“)= Val(txtS(1)) .Fields(”借書期“)= Val(txtS(2)) .Fields(”有效期“)= Val(txtS(3)) .Update End With End Sub Private Sub Form_Load()cmdMove(0).Value = True End Sub Private Sub SSTab1_DblClick()End Sub(4)圖書征訂管理窗體 圖5-4 圖書征訂管理窗體 圖書征訂管理代碼 txtPubDate.SelLength = Len(txtPubDate) ElseIf Trim(txtAuthor)= ”“ Then MsgBox ”作者不能為空!“, vbCritical, ”圖書征訂管理“ txtAuthor.SetFocus txtAuthor.SelStart = 0 txtAuthor.SelLength = Len(txtAuthor) ElseIf Val(txtNum)= ”“ Then MsgBox ”正的數量無效!“, vbCritical, ”圖書征訂管理“ txtNum.SetFocus txtNum.SelStart = 0 txtNum.SelLength = Len(txtNum) ElseIf Not IsDate(txtDate)= ”“ Then MsgBox ”作者不能為空!“, vbCritical, ”圖書征訂管理“ txtDate.SetFocus txtDate.SelStart = 0 txtDate.SelLength = Len(txtDate) Else '保存記錄 Library_Manage.rsBooksOrder.Update MsgBox ”數據保存成功!“, vbInformation, ”圖書征訂管理“ cmdAdd.Enabled = True: cmdDel.Enabled = True cmdExam.Enabled = True: cmdRefresh.Enabled = True isAdding = False: picNavigation.Enabled = True End If End Sub Dim objcopy As Recordset Private Sub cmbOut_Click() AddListOut End Sub Private Sub cmdAddAll_Click(Index As Integer)'選擇全部條碼 ListItem_Add lstPre(Index), LstIn(Index), Index, True End Sub Private Sub cmdAddOne_Click(Index As Integer)'選擇當前條碼 ListItem_Add lstPre(Index), LstIn(Index), Index, False End Sub Private Sub cmdExit_Click() If LstIn(0).ListCount > 0 Then If MsgBox(”你選定了部分新書準備入庫,但沒執行保存操作“ & vbCr & ”是否要執行保存操作?“, vbCritical + vbYesNo, ”圖書典藏管理“)= vbYes Then SSTab1.Tab = 0 cmdSave.Value = True End If ElseIf LstIn(1).ListCount > 0 Then If MsgBox(”你選定了部分新書準備入庫,但沒執行保存操作“ & vbCr & ”是否要執行保存操作?“, vbCritical + vbYesNo, ”圖書典藏管理“)= vbYes Then SSTab1.Tab = 1 cmdSave.Value = True End If End If Unload Me End Sub '刷新新書或調出庫室條碼列表 Private Sub cmdRefresh_Click(Index As Integer) Select Case Index Case 0 '刷新新書列表 With Library_Manage.rsBooksBibli If.State = adStateClosed Then.Open .Requery End With AddListNew Case 1 '刷新庫室條碼列表 With Library_Manage.rsBooksStore If.State = adStateClosed Then.Open .Requery End With AddListOut End Select End Sub Public Sub AddListNew() lstPre(0).Clear With Library_Manage.rsBooksBibli If.State = adStateClosed Then.Open If.RecordCount > 0 Then .MoveFirst While Not.EOF lstPre(0).AddItem.Fields(”條碼“) .MoveNext Wend Else lstPre(0).AddItem ”當前無待分配新書" End If End With End Sub 5.2 測試 5.2.1 借閱卡管理測試 進度安排測試辦理借閱證信息,檢查個人賬號、讀者可自行修改密碼。測試查詢借閱卡信息的正確性,包括輸入的讀者信息等。測試借閱卡掛失功能,包括讀者信息等。 5.2.2 書籍管理測試 進度安排:測試新書入庫信息的正確性。測試借書、還書功能信息正確性。測試書籍掛失信息的正確性。測試圖書信息查詢的正確性。測試借書信息查詢的正確性。 5.2.3 系統管理測試 進度安排測試注冊管理員信息的正確性。測試修改密碼信息的正確性。 結束語 對于這篇論文我有不少心得體會。這次是對我們掌握所學知識的一次考核。它可以讓我們了解自己一學期里的學習情況,有助于在今后的學習中加以改進。通過這次上機實驗,我發現了自己對數據庫和vb語言掌握的并不牢,有的知識點根本就不懂。這都要怪自己在平時的學習過程中不夠用心,不懂的地方也沒有及時的去搞懂,課后也沒怎么花時間去研究。這次實驗我覺得自己不僅學到了很多軟件設計方面的知識,也讓我鞏固了以前所學的知識以及看到了自己以前學習中的不足之處。 在今后的學習過程中,我一定會認真學習專業課程,再也不能像以前那樣迷迷糊糊的,課后要多花時間去研究一些有關編程方面的題目,不懂的地方及時把它弄懂。以后自己還要多動手編寫一些程序。在這里我要感謝學校能提供這么一個寶貴的機會,我們可以把課堂上所學的理論知識運用到實踐中去,把書上的東西變成我們自己的。這個機會既讓我們學習鞏固了知識,也讓我們發現了自己的不足之處。特別要感謝我們的指導老師,正因為有了您的幫助我們才可以完成實驗。我也希望今后還會有更多的機會讓我們去實踐,去充實自己。 致 謝 在本次設計的過程中,老師們給了我們很大的幫助。不僅使我們在規定時間內完成了系統的設計,同時還使我們學到了很多有益的知識和寶貴的經驗在此,我謹向他們表示最衷心的感謝。感謝老師的指導,使我們充分利用軟件工程,VB,數據庫原理開發出自己的項目.在開發的過程中使我體會到了工程化開發方法和瀑布模型利用的重要性,在此還要感謝所有合作參與項目開發的同學們這次畢業設計的成功離不開所有參與的同學們的幫助和支持,是他們讓我知道了團隊工作的重要.參考文獻 1、陶宏才.數據庫原理及設計[M].北京:清華大學出版社.2004.2、陸麗娜.軟件工程 [M].北京:經濟科學出版社.1999 3、郝志恒、劉舫.Visual Basic 6.0 編程篇[M] 北京:電子工業出版社 2004 4、劉世峰.數據庫基礎與應用[M] 北京: 中央電大出版社 2003 5、吳斌、魯大林.Visual Basic+SQL Sever數據庫應用系統開發[M] 北京:機械工程出版社 2008 6、邱李華.SQL Server 2000 數據庫應用教程[M] 北京:人民郵電出版社 2007 7、鐘軍.Visual Basic數據庫高級實例導航[M] 北京:清華大學出版社 2003 8、趙松濤.Visual Basic+SQL Server 2000 系統開發實錄[M] 北京: 機械工業出版社 2007 圖書管理系統 背景:當今時代是飛速發展的信息時代,在各行各業中離不開信息處理,這正是計算機被廣泛應用于信息管理系統的環境。計算機的最大好處在于利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大提高了其安全性。 隨著圖書館的藏書、管理人員、讀者數量的不斷增多,如何對書籍以及讀者信息、讀者借閱信息進行管理成為一個難題。圖書涉及大量的數據處理,如果用手工來完成龐大的數據處理,不僅費時費力,還容易出錯。為了滿足圖書管理的需要,急需要一套圖書管理系統來完成這項工作。作為計算機應用的一部分,使用計算機對圖書信息進行管理,具有手工管理所無法比擬的優點。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優點能夠極大地提高圖書管理的效率,也是圖書館信息的科學化、正規化管理的重要條件。因此將詳細分析一個圖書館系統地實現過程。從需求分析、架構設計、系統建模、詳細設計、代碼實現逐步展開分析,整個過程按照軟件實際流程進行。 意義:通過學習JAVA語言,又加深對面向對象分析,確定問題域中的對象及對象間關系,并建立起問題域的對象模型。面向對象的設計方法是一種進行程序設計的新方法,它吸取了結構化程序設計的先進思想,為解決程序結構過于復雜而產生。它的思想是在進行程序設計時,把整個問題分成由相關部分組成的組,每個組考慮和組相關的代碼和數據,同時這些分組將按層次關系組織起來,每個分組轉換為對象的獨立單元。面向對象的程序設計語言都具有多態性、繼承性、封裝性等特點。學習以后對JAVA程序設計有了深入的了解,JAVA語言程序設計要求結構緊湊,概念準確。 實踐項目:圖書管理系統。 主要完成這個項目的,可以實現圖書系統的系統化和自動化,幫助圖書管理人員更好更高效地完成圖書管理工作。需求分析:圖書管理系統需要滿足三方面的需求,這三個方面分別是圖書借閱者、圖書館工作人員和圖書館管理人員。圖書借閱者的需求是查詢圖書館所存的圖書、個人借閱情況及個人信息的修改;圖書館工作人員對圖書借閱者的借閱及還書要求進行操作,同時形成借書或還書記錄;圖書館管理人員的功能最復雜,包括對圖書借閱者、圖書進行管理和維護,及系統狀態的查看、維護。 圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據本人借書證號和密碼登錄系統,還可以進行本人借書情況的查詢并維護部分個人信息。一般情況下,圖書借閱者只應該查詢和維護本人的借書情況和信息,若查詢和維護其他借閱者的借書情況和信息,就要知道其他圖書借閱者的借書證號和密碼。這些是很難得到的,特別是密碼,所以不但滿足了圖書借閱者的要求,還保護了圖書借閱者的個人隱私。 圖書館工作人員有修改圖書借閱者借書和還書記錄的權限,在此模塊中,圖書館工作人員可以為圖書借閱者加入借書記錄或是還書記錄。 圖書館管理人員功能的信息量大,數據安全性和保密性要求最高。本功能實現對圖書信息、借閱者信息、總體借閱情況信息的管理和信息查看及維護。圖書館管理員可以瀏覽、查詢、添加、刪除、修改圖書的基本信息;瀏覽、查詢、添加、刪除和修改圖書借閱者的基本信息,但不能添加、刪除和修改借閱信息,這部分功能應該由圖書館工作人員執行,但是,刪除某條圖書借閱者基本信息記錄時,應實現對該圖書借閱者借閱記錄的級聯刪除。 功能如下:⑴書籍管理部分:主要包括讀者類別和書籍信息管理兩部分。其中,書籍類別管理包括添加書籍類別、修改書籍類別等;書籍信息管理包括書籍信息的添加、書籍信息的修改、書籍信息的查詢、書籍信息的刪除等。 ⑵讀者管理部分:主要包括讀者類別管理和讀者信息管理兩部分。其中,讀者類別管理包括添加讀者類 別、修改讀者類別等;讀者信息管理包括添加讀者信息、修改讀者信息、刪除讀者信息、查詢讀者信息等。 ⑶借閱管理部分:主要包括借書信息管理和還書信息管理兩部分。其中,借書信息管理包括借書信息的添加、借書信息的修改、借書信息的查詢等;還書信息管理部分包括還書信息的添加、還書信息的修改、還書信息的查詢等。 ⑷系統管理部分:包括修改系統用戶密碼、增加新用戶以及退出系統等 所以,該圖書管理系統能夠是圖書管理員方便地管理圖書館內的多種事務,讓圖書館工作人員更有效地 為讀者提供借閱、歸還書籍的服務,也能夠為讀者提供查詢書籍信息、個人借閱信息。 數據庫流程分析: 1.數據處理流程 數據庫或數據表結構確定之后,在實際的數據處理程序設計之前需要對所處理的數據處理流程作必要的分析。所謂對數據處理流程作必要的分析是指找出各數據之間的主要關系,數據存取的主要走向。另外,在實際的數據處理過程中還會有些細節問題。在遇到這些細節問題時,及時處理即可。并且,有些細節問題不是在做數據處理流程分析時事先都能預料的。對于現在這個數據處理系統來說,最主要的工作實際就是三項: 1)讀者信息的基本情況及時錄入數據庫; 2)要將讀者查詢情況及時錄入數據庫; 3)對讀者操作情況進行匯總。 整體數據流:管理員通過密碼進入系統,分別對上述幾大功能逐一實現。 在數據關系簡單的情況下對數據處理,可以在將數據庫設計好之后直接設計程序。但是按正規的數據庫管理系統的設計程序,無論要處理的數據關系復雜與否都應在做程序設計之前做好數據的流程分析。 2.管理窗體 創建該窗體,根據相關操作可以完成個人信息、圖書信息、管理操作、系統設置等功能實現,在圖書信息里可以進行圖書查詢、圖書借閱、圖書歸還、圖書續借等功能。 總結:圖書管理系統可以有效的省去很多的認為登記錯誤,并且能夠節省廣大的師生寶貴時間。另一方面,圖書 館里系統具有界面清晰,操作方便,功能少而使用,實現圖書館工作的自動化,減少手工勞動量帶來的數據遺漏,誤報等人為因素,提高工作效率,也增強系統的通用性。但是完善的系統也會有所弊處,有計算機操控的系統,一旦系統出現問題,整個圖書館的借閱系統也會跟著癱瘓,帶來不便。所以,也要經常的去維護系統,這樣才能給我們提供一個安全的信息處理方法。 管理信息系統創建,首先數據庫在一個管理系統中占有非常重要的地位,數據庫設計的好壞將直接對應用系 統的效率以及實現的效果產生影響。合理的數據庫結構設計可以提高數據存儲的效率,以確保數據的完整性和一致性。設計數據庫系統時應該首先充分了解用戶各個方面的需求,包括現有的以及將來可能增加的需求。數據庫設計一般包括如下幾個步驟:數據庫需求分析;數據庫邏輯結構設計;數據庫概念結構設計;數據庫物理設計。設計中詳細的總結了該系統的系統設計部分,包括功能模塊設計、數據庫結構設計等。系統設計為整個程序構建了骨架,各個功能模塊實現各個細節部分。通過本次課程設計知道了各種數據之間的相互關系,并在操作中用適當的SQL語句和存儲過程實現。本系統還實現了VB通過ODBC對SQL的數據庫快遞、高效訪問和更新功能。 通過這次課程設計懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設計之后,一定把以前所學過的知識重新溫故。 在程序設計與代碼編寫階段我們遇到了很多的問題,由于我們組中的人大部分都是第一次開發數據庫系統,所以對數據庫開發的流程不熟息,而且在數據庫的與編程系統的連接方面也遇到了很多的問題。第三篇:圖書管理系統
第四篇:圖書管理系統
第五篇:圖書管理系統