㈠ web系統(圖書管理系統)的開發過程包含哪些工作內容
前端視圖層(view)的操作與python後端的控制層(controler)與模型層(model)的交互,已經實現對mysql資料庫中數據的增刪改查。已完成的功能所需數據全部來自mysql資料庫,具體已經實現的功能如下: 用戶登陸 用戶注冊 圖書信息添加 圖書信息刪除 圖書信息修改 按書名查詢圖書信息與圖書信息展示 借閱記錄展示 讀者信息展示 2.圖書管理系統基本框架 3.前段界面 表1登錄界面 表2注冊界面 表3讀者信息 表4添加書籍 表5刪除書籍 表6查找書籍 表7借閱記錄 4.資料庫設計 1.書籍信息表 2.學生信息表 3.借書記錄表 4.用戶表
㈡ 長沙一小學將淘汰巴士打造成智能圖書館,這種圖書館對於學生教育有何好處
這種圖書館的建立不僅能夠豐富孩子們的生活增長知識,而且還能教育學生養成節能環保的好習慣,對於孩子的成長來說有著較大好處。
智能圖書館對於學生教育有何好處?
在閱讀方面,同樣也可以在圖書館的智能終端上進行操作,通過系統管理來查看書籍的數量和種類上的需求。學生通過掃碼就可以進入圖書館系統學習。根據系統的設定好自己所需要的內容之後,就可以查看,除此之外,在閱讀前都可以直接用手機控制學習進度以及閱讀速度。在使用上會有更好的體驗。同時還可以通過自己閱讀喜歡的書籍或者將喜歡的內容分享給朋友或者家人來進行學習。可以設置自己想看的書籍或者想學習的內容,也可以分享給別人一起學習。
㈢ 圖書借閱管理系統 C語言版的代碼
由於字數限制只能發一個文件的代碼,要其他文件的話就找我吧!
#include <dos.h>
#include <bios.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define LEFT 0x4b00 /*左*/
#define RIGHT 0x4d00 /*右*/
#define DOWN 0x5000 /*下*/
#define UP 0x4800 /*上*/
#define SPACE 0x3920 /*空格*/
#define ESC 0x011b /* ESC鍵*/
#define ENTER 0x1c0d /*回車鍵*/
#define Backspace 0xe08 /*擦除鍵*/
#define ALT_B 12288 /*組合鍵ALT_B */
#define ALT_M 12800/*組合鍵ALT_M */
#define ALT_H 8960/*組合鍵ALT_H */
int key;/*按鍵變數*/
int textx,texty;/*游標坐標,x行,y列*/
struct menustruct/*菜單用的結構體*/
{
char name[10];/*主菜單名*/
char str[10][20];/*選項*/
int n;/*選項數*/
}ml[3];/*使用了3個,可根據需要增刪*/
typedef struct BookList/*書的結構體*/
{
char num[20];/*圖書編號*/
char name[20];/*書名*/
int price;/*書的價格*/
char person[20];/*借閱人*/
int yes;/*判斷書是否存在或者已經借出,1存在,0借出*/
struct BookList *next;
}Book;
typedef struct MemberList/*會員的結構體*/
{
char name[20];/*會員的姓名*/
char sex[2];/*會員的性別*/
int age;/*會員的年齡*/
struct MemberList *next;
}Member;
char save[4096];/*保存文本區域空間*/
/*char sav1[4096];*/
char c[4096];/*清屏專用空間*/
int i,j;/*常用變數*/
void Menu();/*初始化界面*/
void Selectitem();/*定義菜單*/
void DrawSelectitem();/*顯示主菜單*/
void BlackText(int x,int y,char *z);/*選中菜單*/
void RedText(int x,int y,char *z);/*正常菜單*/
void Run();/*具體操作過程*/
void DrawMl(int n);/*顯示下拉菜單*/
void MoveMl(int n,int x);/*菜單選項的控制*/
void Enter(int m,int n);/*菜單選項的具體功能*/
void BookAdd();/*添加圖書*/
void BookConsult();/*圖書查詢*/
void BookDel();/*刪除圖書資料*/
void BookBorrow();/*借書*/
void BookReturn(); /*還書*/
void MemberAdd(); /*增加會員*/
void MemberConsult();/*查詢會員*/
void MemberDel(); /*刪除會員*/
void MemberBook(); /*查詢會員借書信息*/
void Help(); /*幫助*/
void Ver(); /*版本信息*/
void ClrScr();/*自定義清屏函數*/
void DrawFrame(int left,int up,int right,int down,int textcolor,int backgroundcolor);/*畫邊框*/
/***主函數****/
void main(void)
{
Menu();/*初始化界面*/
Run();/*具體操作過程*/
}
/*初始化界面*/
void Menu()
{
system("cls"); /*調用系統的清屏命令*/
textbackground(BLUE);/*將背景設置為藍色*/
window(1,1,25,80);
clrscr();
textx=3;/*游標初始化位置*/
texty=2;
gotoxy(1,2);
printf("%c",218);/*畫左上角*/
for(i=0;i<78;i++)
printf("%c",196); /*畫水平直線*/
printf("%c",191);/*畫右上角*/
for(i=3;i<=23;i++)
{
gotoxy(1,i);
printf("%c",179); /*畫垂直線*/
gotoxy(80,i);
printf("%c",179);
}
printf("%c",192); /*畫左下角*/
for(i=0;i<78;i++)
printf("%c",196);
printf("%c",217); /*畫右下角*/
gotoxy(1,1);
textcolor(7); /*設置灰色*/
for(i=0;i<80;i++)
cprintf("%c",219);/*用符號實現畫主菜單的灰色背景區*/
Selectitem(); /*調用選項函數*/
DrawSelectitem(); /*畫選項*/
gettext(2,3,78,23,c); /*保存當前文本區域*/
}
/*定義菜單*/
void Selectitem()
{
strcpy(ml[0].name,"Book");/*下面的具體選項補空格是為了各菜單黑色背景相同*/
strcpy(ml[0].str[0],"Add ");/*添加圖書*/
strcpy(ml[0].str[1],"Consult ");/*查詢圖書*/
strcpy(ml[0].str[2],"Del ");/*刪除圖書資料*/
strcpy(ml[0].str[3],"Borrow ");/*借書*/
strcpy(ml[0].str[4],"Return ");/*還書*/
strcpy(ml[0].str[5],"Exit ");/*退出系統*/
ml[0].n=6; /*保存菜單的項數*/
strcpy(ml[1].name,"Member");
strcpy(ml[1].str[0],"Add ");/*添加新會員*/
strcpy(ml[1].str[1],"Consult ");/*查詢會員資料*/
strcpy(ml[1].str[2],"Del ");/*刪除會員資料*/
strcpy(ml[1].str[3],"Member&book ");
ml[1].n=4;
strcpy(ml[2].name,"Help");/*系統幫助*/
strcpy(ml[2].str[0],"This System ");
strcpy(ml[2].str[1],"Ver ");
ml[2].n=2;
}
/*顯示主單名*/
void DrawSelectitem()
{
for(i=0;i<3;i++)
RedText(i,1,ml[i].name); /*顯示主菜單名,且首字母為紅色*/
}
/*正常顯示菜單*/
void RedText(int x,int y,char *z)
{
textbackground(7); /*設置背景顏色為淺灰色*/
gotoxy(3+x*20,y);
for(j=0;z[j];j++)
{
if(j==0)
textcolor(RED);/*第一個字母顯示紅色*/
else
textcolor(BLACK); /*設置黑色*/
cprintf("%c",z[j]); /*輸出菜單名*/
}
}
/*顯示選中菜單*/
void BlackText(int x,int y,char *z)
{
textbackground(0); /*設置背景顏色為黑色*/
textcolor(15); /*設置文本顏色為白色*/
gotoxy(3+20*x,y);/*定位坐標*/
cputs(z); /*輸出菜單名字元串*/
}
/*按鍵操作過程*/
void Run()
{
while(1)
{
gotoxy(texty,textx);
key=bioskey(0);/*接收按鍵*/
switch(key)
{
case ALT_B:
case ESC: DrawMl(0);break; /*顯示下拉菜單1*/
case ALT_M: DrawMl(1);break;/*顯示下拉菜單2*/
case ALT_H: DrawMl(2);/*顯示下拉菜單3*/
case UP: /*上游標鍵的操作控制*/
{
if(textx==3)
textx=23;
textx--;
gotoxy(texty,textx);
}break;
case DOWN: /*下游標鍵的操作控制*/
{
if(textx==23)
textx=3;
textx++;
gotoxy(texty,textx);
}break;
case LEFT: /*左游標鍵的操作控制*/
{
if(texty==2)
texty=79;
texty--;
gotoxy(texty,textx);
}break;
case Backspace: /*擦除鍵的設置*/
{
if(texty==2&&textx==3)
continue;
else
{
if(texty!=2)
texty--; /*擦除鍵的細節問題,先擦去東西,然後游標還要往後退一格*/
else
if(texty==2)
{
texty=78;
textx--;
}
gotoxy(texty,textx);
printf(" ");
gotoxy(texty,textx);
}
}break;/*end case 0xe08*/
case RIGHT: /*右游標鍵的操作控制*/
{
if(texty==79)
texty=2;
texty++;
gotoxy(texty,textx);
}break;
case SPACE: /*空格鍵的操作*/
{
if(texty==79)
continue;
else
{
gotoxy(texty,textx); /*空格的細節操作*/
printf(" ");
texty++;
gotoxy(texty,textx);
}
}break;
case ENTER: /*回車的控制操作*/
{
if(textx==23)
continue;
textx++;
texty=2;
gotoxy(texty,textx);
}break;
default : /*非控制鍵的結果*/
{
if(texty==79&&textx==23)/*到達最後就不再輸出*/
continue;
else
if(texty==79&&textx!=23) /*到行的最後*/
{
textx++;
texty=2;
}
gotoxy(texty,textx);/*輸出結果*/
printf("%c",key);
if(texty==79) /*如果texty==79就不執行*/
continue;
else /*如果沒到行尾就繼續執行,使游標向前移動一位*/
texty++;
}
}
}/*大循環的大括弧*/
}
/*畫邊框函數*/
void DrawFrame(int l,int u,int r,int d,int tcolor,int bcolor)
{
textbackground(bcolor); /*背景顏色*/
textcolor(bcolor); /*文本顏色*/
for(i=l;i<=r;i++) /*輸出背景區域*/
{
for(j=u;j<=d;j++)
{
gotoxy(i,j);
printf("%c",219); /*輸出背景字元*/
}
}
textcolor(tcolor);/*邊框顏色*/
for(i=u+1;i<d;i++) /*在背景區域內輸出邊框線*/
{
gotoxy(l,i);
cprintf("%c",179); /*垂直線*/
gotoxy(r,i);
cprintf("%c",179);
}
for(i=l+1;i<r;i++)
{
gotoxy(i,u);
cprintf("%c",196); /*水平線*/
gotoxy(i,d);
cprintf("%c",196);
}
gotoxy(l,u);
cprintf("%c",218);/*左上角*/
gotoxy(r,u);
cprintf("%c",191);/*右上角*/
gotoxy(l,d);
cprintf("%c",192);/*左下角*/
gotoxy(r,d);
cprintf("%c",217); /*右下角*/
/* gettext(l+1,u+1,r-1,d-1,save1);*//*保存邊框內區域*/
}
/*顯示具體下拉選擇項目*/
void DrawMl(int n)
{
gettext(1,1,80,25,save);/*保存被掩蓋的地方*/
BlackText(n,1,ml[n].name);/*反選顯示主菜單*/
DrawFrame(3+20*n-1,2,3+20*n+19,3+ml[n].n,0,7);/*下拉菜單的邊框*/
for(i=3;i<3+ml[n].n;i++)/*輸出所選菜單各選項*/
{
if(i==3)
BlackText(n,i,ml[n].str[i-3]);/*默認選中第一項*/
else
RedText(n,i,ml[n].str[i-3]);/*其餘各項首字元紅色顯示*/
}
gotoxy(79,1);
MoveMl(n,3);/*菜單選項的控制*/
}
/*菜單選項的控制,n決定水平項,x決定下拉的選項*/
void MoveMl(int n,int x)
{
int flag=1;
while(flag)
{
gotoxy(79,1);
key=bioskey(0);/*接收按鍵*/
gotoxy(79,1);
switch(key)
{
case ESC:/*退出循環*/
puttext(1,1,80,25,save);/*恢復打開菜單前的樣子*/
flag=0;
break;
case LEFT:/*移到左邊的選項*/
puttext(1,1,80,25,save);/*恢復打開菜單前的樣子*/
if(n==0)/*往左移動越界的話移到最後一個選項*/
DrawMl(2);
else
DrawMl(n-1);
flag=0;
break;
case RIGHT:/*移動右邊的選項*/
puttext(1,1,80,25,save);/*恢復打開菜單前的樣子*/
if(n==2)/*往右移動越界的話移到第一個選項*/
DrawMl(0);
else
DrawMl(n+1);
flag=0;
break;
case UP:/*具體選項往上移動*/
RedText(n,x,ml[n].str[x-3]);/*輸出紅色字體*/
if(x==3)/*移到最上面再按上鍵,就移到最下面*/
x=3+ml[n].n-1;
else
x--;/*移動到新的要顯示的內容*/
BlackText(n,x,ml[n].str[x-3]);/*輸出黑色字體*/
flag=1;
break;
case DOWN:/*具體選項往下移動*/
RedText(n,x,ml[n].str[x-3]);
if(x==(3+ml[n].n-1))/*移動到最底下再按下鍵就移到最上面*/
x=3;
else
x++;/*移動到新的要顯示的內容*/
BlackText(n,x,ml[n].str[x-3]);
flag=1;
break;
case ENTER:
puttext(1,1,80,25,save);/*恢復打開菜單前的樣子*/
Enter(n,x-3);/*菜單選項的具體功能*/
flag=0;
break;
}
gotoxy(79,1);
}
}
/*菜單選項的具體功能*/
void Enter(int m,int n)
{
switch(m)
{
case 0:switch(n) /*選擇了圖書菜單選項*/
{
case 0:BookAdd();break;/*添加圖書*/
case 1:BookConsult();break;/*圖書查詢*/
case 2:BookDel();break;/*刪除一本圖書資料*/
case 3:BookBorrow();break;/*借書*/
case 4:BookReturn();break;/*還書*/
case 5:exit(0);break;
} break;/*退出系統*/
case 1: switch(n) /*選擇了會員菜單選項*/
{
case 0: MemberAdd();break;/*添加會員*/
case 1: MemberConsult();break;/*會員查詢*/
case 2:MemberDel();break;/*刪除一個會員資料*/
case 3:MemberBook();/*查詢某個會員所借圖書情況*/
}break;
case 2:switch(n) /*選擇了幫助菜單選項*/
{
case 0:Help();break;
case 1:Ver();
}
}/*結束外switch*/
}
㈣ 圖書館管理系統
圖書館管理系統
摘 要
圖書管理系統是典型的信息管理系統(MIS),其開發主要包括後台資料庫的建立和維護以及前端應用程序的開發兩個方面。對於前者要求建立起數據一致性和完整性強、數據安全性好的庫。而對於後者則要求應用程序功能完備,易使用等特點。
因此本人結合開入式圖書館的要求,對MS SQL Server2000資料庫管理系統、SQL語言原理、Delphi應用程序設計,Delphi資料庫技術進行了較深入的學習和應用,主要完成對圖書管理系統的需求分析、功能模塊劃分、資料庫模式分析,並由此設計了資料庫結構和應用程序。系統運行結果證明,本文所設計的圖書管理系統可以滿足借閱者、圖書館工作人員和高級管理員三方面的需要。
第一章對資料庫應用系統開發和圖書管理系統進行了簡明的介紹,並分析了開發圖書管理系統所應進行的工作。
第二章對資料庫的設計和SQL語言的使用進行了系統分析,為深入理解資料庫應用打下了基礎。
第三章學習了具體的開發工具Delphi 6.0,對其資料庫組件,SQL語言在Delphi中的應用等資料庫編程關鍵技術進行了系統的介紹。
第四章分析了圖書管理信息系統的應用需求,按照資料庫設計理論一步一步地給出了系統需求說明書、局部ER圖、全局ER圖、系統關系模式,子模式,利用MS SQL Server2000建立了資料庫
第五章進行了具體的程序設計,具體劃分了三類用戶的操作許可權,設計了了三個操作界面。實現了資料庫表的瀏覽,記錄的添加、刪除和修改,報表的生成,實現了多資料庫表的連接操作,實現了多條件查詢和模糊查詢,並靈活實現了對不可更新查詢結果集的更新操作,實現了主從表操作,實現了密碼維護功能,最後,系統還可以導入資料庫以對任意同結構的資料庫進行操作。
設計充分利用Delphi 6、MS SQL Server2000資料庫技術的強大力量,提高了編程效率和可靠性。
關鍵詞:資料庫,SQL語言,MS SQL Server,Delphi6,
資料庫組件,圖書管理,窗體,listview組件
24
37
§5.2 數據模塊窗體的設置 ……………………………………………………… 第一章 緒 論
§1.1 資料庫應用系統開發簡介
在資料庫應用系統開發之前,對開發資料庫的基本概念應當了解,對資料庫的結構、開發資料庫應用程序的步驟、開發體系及方法都應當有相當清晰的了解和認識。
資料庫應用系統開發的目標是建立一個滿足用戶長期需求的產品。開發的主要過程為:理解用戶的需求,然後,把它們轉變為有效的資料庫設計。把設計轉變為實際的資料庫,並且這些資料庫帶有功能完備、高效能的應用。
資料庫技術在計算機軟體鄰域研究中一直是非常重要的主題,產生於60年代,30多年來資料庫技術得到了迅速發展,並已形成較為完整的理論體系和一大批實用系統。並且,近年來,隨著World Wide Web(WWW)的猛增及Internet技術的迅速發展,使得資料庫技術之時成為最熱門技術之一。
1.1.1 資料庫
如圖1.1顯示了資料庫系統的主要組件。資料庫由DBMS(資料庫管理系統)處理,DBMS則由開發人員和用戶通過應用程序直接或間接地使用。它主要包括四個要素:用戶數據、元數據、索引和應用元數據。
1.1.1.1 用戶數據
目前,大多數主流資料庫管理系統把用戶數據表示為關系。現在把關系看作數據表。表的列包含域或屬性,表的行包含對應業務環境中的實體的記錄。並非所有的關系都同樣符合要求,有些關系比其它關系更結構化一些。第二章描述了一個用以產生良好結構關系的過程,稱作規范化。
為了對比結構差的關系和結構好的關系之間的差別,以本文所設計的圖書管理系統中的圖書和圖書借閱者關系為例來說明,假若設計關系R1(借書證號,姓名,性別,身份編號,身份證,聯系電話,圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價格,數量);這個關系的問題出在它有關於兩個不同主題的數據,就是圖書借閱者和圖書。用這種方式構成的關系在進行修改時,會出現問題。因為一個圖書借閱者可能借閱多本書,如果某個圖書借閱者的某個欄位(如聯系電話)出現變更,它所借閱的圖書記錄(可能多個)也就必須變化,這是不好的。因此數據用兩個關系表示更好。現在如果某圖書借閱者改變了它的聯系電話,只有關系(表)user的對應行需要改變。當然,要想產生一個,顯示圖書名稱及其借閱者聯系電話的報表,就需要將這兩個表的行結合起來。結果表明,將關系分別存儲,在生成報表的時候將它們結合起來,比把它們存儲在一個合成的表中更好。
user(借書證號,姓名,性別,身份編號,身份證,聯系電話,)
book(圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價格,數量)
1.1.1.2 元數據
資料庫是自描述的,這就意味著它自身包含了它的結構的描述,這種結構的描述稱作元數據。因為DBMS產品是用來存儲和操縱表的,所以大多數產品把元數據以表的形式存儲,有時稱作系統表。這些系統表存儲了資料庫中表的情況,指出每一個表中有多少列,那一列是主關鍵字,每一列的數據類型的描述,它也存儲索引、關鍵字、規則和資料庫結構的其他部分。
在表中存儲元數據不僅對DBMS是有效的,對用戶也是方便的,因為他們可以使用與查詢用戶數據同樣的查詢工具來查詢元數據。本文第二章所介紹的SQL語言可以同時用於元數據和用戶數據。
1.1.1.3 索引
第三種類型的數據改進了資料庫的性能和可訪問性,這種數據經常稱作開銷數據,盡管有時也採用其他類型的數據結構,如鏈表,但它主要還是索引。索引可以用來排序和快速訪問數據。下面以本人的圖書管理信息系統中的book表為例來說明。
假定數據在磁碟上是按』圖書編號』的遞增順序排列的,用戶想列印一個按』圖書名稱』排序的圖書數據報表。為此,所有的數據都需要從源表中提取出來並排序,除非表很小,否則這是一個很費時的過程。或者,可以在『圖書名稱』欄位上創建一個索引,該索引的條目按照『圖書名稱』排序,這樣,該索引的條目可以讀出來,並用來按順序訪問book數據。
索引用於快速訪問數據。例如,一個用戶只想訪問book表中『圖書類別』值為『01』的那些學生。如果沒有索引,則必須搜索整個源表;但有了索引之後,可以找到索引條目,並使用它來挑選所有合適的行。
索引對排序和查找是有幫助的,但要付出代價。book表中的行每次改變時,索引也必須改變,這意味著索引並非隨意的,應該在真正需要時保存。
1.1.1.4 應用元數據
存儲在資料庫中的第四種數據是應用元數據,它用來存儲用戶窗體、報表、查詢和其他形式的查詢組件。並非所有的DBMS都支持應用組件,支持組件的DBMS也不一定把全部組件的結構作為應用元數據存儲在資料庫中。然而,大多數現代的DBMS產品存儲這種數據作為資料庫的一部分。一般來說,資料庫開發人員和用戶都不直接訪問應用元數據,想反,他們通過DBMS中的工具來處理這些數據。
MS SQL Server2000中就支持窗體、存儲過程等應用元數據。
1.1.2 資料庫管理系統
資料庫管理系統(DBMS)是指資料庫系統中管理數據的軟體系統。DBMS是資料庫系統的核心組成部分。對資料庫的一切操作,包括定義、更新及各種控制,都是通過DBMS進行的。DBMS總是基於某種數據模型,可以把DBMS看成是某種數據模型在計算機系統上的具體實現。根據數據模型的不同,DBMS可以分成層次型、網狀型、關系型、面向對象型等。MS SQL Server2000就是一種關系型資料庫管理系統。
關系模型。關系模型主要是用二維表格結構表達實體集,用外鍵表示實體間聯系。關系模型是由若干個關系模式組成的集合。關系模式相當於前面提到的記錄類型,它的實例稱為關系,每個關系實際上是一張二維表格。
關系模型和層次、網狀模型的最大判別是用關鍵碼而不是用指針導航數據,表格簡單用戶易懂,編程時並不涉及存儲結構,訪問技術等細節。關系模型是數學化模型。SQL語言是關系資料庫的標准化語言,已得到了廣泛的應用。
如圖1.1所示,DBMS的特點和功能可以分為三個子系統:設計工具子系統、運行子系統和DBMS引擎。
設計子系統有一個方便資料庫及其應用創建的工具集。它典型地包含產生表、窗體、查詢和報表的工具。DBMS產品還提供編程語言和對編程語言的介面。
運行子系統處理用設計子系統開發的應用組件。它所包含的運行處理器用來處理窗體和資料庫的數據交互,以及回答查詢和列印報表等。
DBMS引擎從其他兩個組件接受請求,並把它們翻譯成對操作系統的命令,以便讀寫物理介質上的數據。DBMS引擎還涉及事務管理、鎖、備份和恢復。
1.1.3 創建資料庫
1.1.3.1 資料庫模式
資料庫模式定義了資料庫的結構、表、關系、域和業務規則。資料庫模式是一種設計,資料庫和應用正是建立在此基礎上的。
域是一列可能擁有的值的集合。必須為每一個表的每一列確定域。除了數據的物理格式外,還需要確定是否有些域對表來說是唯一的。
資料庫模式的最後一個要素是業務規則,它是對需要反映在資料庫和資料庫應用程序中的業務活動的約束。業務規則是模式的一個重要部分,因為他們指定了無論什麼數據變化到達DBMS引擎,允許的數據值必須滿足的約束。不管無效的數據變化請求是來自窗體的用戶、查詢/修改請求還是應用程序,DBMS都應該拒絕。
遺憾的是,不同的DBMS產品用不同的方法實施業務規則。在某些情況下,DBMS產品不具備實施必要業務規則的能力,必須以代碼形式把它們編入應用程序。
1.1.3.2 創建表
1.1.3.3 定義聯系
1.1.4 應用組件
資料庫應用包括窗體、查詢、報表、菜單和應用程序。
§1.2 圖書管理系統
當今時代是飛速發展的信息時代。在各行各業中離不開信息處理,這正是計算機被廣泛應用於信息管理系統的環境。計算機的最大好處在於利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。
尤其對於復雜的信息管理,計算機能夠充分發揮它的優越性。計算機進行信息管理與信息管理系統的開發密切相關,系統的開發是系統管理的前提。本系統就是為了管理好圖書館信息而設計的。
圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數據的管理,現今,有很多的圖書館都是初步開始使用,甚至尚未使用計算機進行信息管理。根據調查得知,他們以前對信息管理的主要方式是基於文本、表格等紙介質的手工處理,對於圖書借閱情況(如借書天數、超過限定借書時間的天數)的統計和核實等往往採用對借書卡的人工檢查進行,對借閱者的借閱許可權、以及借閱天數等用人工計算、手抄進行。數據信息處理工作量大,容易出錯;由於數據繁多,容易丟失,且不易查找。總的來說,缺乏系統,規范的信息管理手段。盡管有的圖書館有計算機,但是尚未用於信息管理,沒有發揮它的效力,資源閑置比較突出,這就是管理信息系統的開發的基本環境。
數據處理手工操作,工作量大,出錯率高,出錯後不易更改。圖書館採取手工方式對圖書借閱情況進行人工管理,由於信息比較多,圖書借閱信息的管理工作混亂而又復雜;一般借閱情況是記錄在借書證上,圖書的數目和內容記錄在文件中,圖書館的工作人員和管理員也只是當時對它比較清楚,時間一長,如再要進行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費時、費力。如要對很長時間以前的圖書進行更改就更加困難了。
基於這此問題,我認為有必要建立一個圖書管理系統,使圖書管理工作規范化,系統化,程序化,避免圖書管理的隨意性,提高信息處理的速度和准確性,能夠及時、准確、有效的查詢和修改圖書情況。
§1.1 系統所做工作
1) 了解應用開發工具的現狀
2) DelPHi6.0編程基礎
3) MS SQL Server基礎
4) 設計資料庫;設計界面
5) 開發資料庫。資料庫實現的一些功能有
l 數據和數據說明的醒目顯示;
l 多條件的查詢、多條記錄的檢索、模糊查詢;
l 數據文件某種存儲格式導入數據窗體,經過數據完整性校驗存入資料庫;
l 資料庫安全性的設計;
l 資料庫的設計、數據介面、界面的設計。
§1.3 本文所作工作
緒論部分對資料庫應用系統的結構、開發進行了簡要介紹,分析了圖書管理信息系統設計的特點和任務。
第二章介紹了資料庫的設計和範式分析,並系統介紹了SQL語言,為設計和理解應用程序做了鋪墊。
第三章對系統介紹了Delphi 6.0的資料庫編程技術、SQL語言在Delphi 6.0中的應用、MS SQL Server基礎。
第四章分析了圖書管理系統的應用需求,設計了系統的資料庫結構,並根據需求對系統功能進行了劃分和細化。
第五章根據第四章的設計結果利用MSSQL Server2000和Delphi 6.0進行了具體的應用程序設計。
總結部分介紹了設計體會和編程體會,並指出了系統設計中的不足和改進的方向。
第二章 資料庫理論基礎
一個成功的信息管理系統,是建立在許多條件之上的,而資料庫是其中一個非常重要的條件和關鍵技術。
信息管理系統所涉及的資料庫設計分五個步驟:資料庫需求分析、概念設計、邏輯設計、物理設計與載入測試。
(1) 資料庫需求分析的任務是將業務管理單證流化為數據流,劃分主題之間的邊界,繪制出DFD圖,並完成相應的數據字典。
(2) 概念設計的任務是從DFD出發,繪制出本主題的實體-關系圖,並列出各個實體與關系的綱要表。
(3) 邏輯設計的任務是從E-R圖與對應的綱要表出發,確定各個實體及關系的表名屬性。
(4) 物理設計的任務是確定所有屬性的類型、寬度與取值范圍,設計出基本表的主鍵,將所有的表名與欄位名英文化(現在很多軟體能支持中文欄位,如MS SQL Server,我就是用的中文欄位名),實現物理建庫,完成資料庫物理設計字典。
(5) 載入測試工作貫穿於程序測試工作的全過程,整個錄入、修改、查詢、處理工作均可視為對資料庫的載入測試工作。
要設計出一個好的信息管理系統資料庫,除滿足系統所要求的功能外,還必須遵守下列原則:
² 基本表的個數越少越好。
² 主鍵的個數越少越好。鍵是表間連接的工具,主鍵越少,表間的連接就越簡單。
² 欄位的個數越少越好。
² 所有基本表的設計均應盡量符合第三範式。
資料庫的設計中,如何處理多對多的關系和如何設計主鍵,是兩個有著較大難度、需要重點考慮的問題。下面我們著重從SQL應用、資料庫設計範式和查詢優化等方面來分析本課題的系統關鍵技術和實現難點並加以解決。
§2.1 資料庫系統設計及範式分析
信息系統的主要任務是通過大量的數據獲得管理所需要的信息,這就必須存儲和管理大量的數據。因此建立一個良好的數據組織結構和資料庫,使整個系統都可以迅速、方便、准確地調用和管理所需的數據,是衡量信息系統開發工作好壞的主要指標之一。
2.1.1 資料庫系統設計
資料庫設計主要是進行資料庫的邏輯設計,即將數據按一定的分類、分組系統和邏輯層次組織起來,是面向用戶的。資料庫設計時需要綜合企業各個部門的存檔數據和數據需求,分析各個數據之間的關系,按照DBMS提供的功能和描述工具,設計出規模適當、正確反映數據關系、數據冗餘少、存取效率高、能滿足多種查詢要求的數據模型。
資料庫設計的步驟是:
(1) 資料庫結構定義:目前的資料庫管理系統(DBMS)有的是支持聯機事務處理CLTP(負責對事務數據進行採集、處理、存儲)的操作型DBMS,有的可支持數據倉庫、有聯機分析處理CLAP(指為支持決策的制定對數據的一種加工操作)功能的大型DBMS,有的資料庫是關系型的、有的可支持面向對象資料庫。針對選擇的DBMS,進行資料庫結構定義。
(2) 數據表定義:數據表定義指定義資料庫中數據表的結構,數據表的邏輯結構包括:屬性名稱、類型、表示形式、預設值、校驗規則、是否關鍵字、可否為空等。關系型資料庫要盡量按關系規范化要求進行資料庫設計,但為使效率高,規范化程度應根據應用環境和條件來決定。數據表設計不僅要滿足數據存儲的要求,還要增加一些如反映有關信息、操作責任、中間數據的欄位或臨時數據表。
(3) 存儲設備和存儲空間組織:確定數據的存放地點、存儲路徑、存儲設備等,備份方案,對多版本如何保證一致性和數據的完整性。
(4) 數據使用許可權設置:針對用戶的不同使用要求,確定數據的用戶使用許可權,確保數據安全。
(5) 數據字典設計:用數據字典描述資料庫的設計,便於維護和修改。
為了更好地組織數據和設計出實際應用資料庫,應該注意如下問題:
規范化地重組數據結構:對數據進行規范化表達,這在後面將會具體討論。
關系數據結構的建立:在進行了數據基本結構的規范化重組後,還必須建立整體數據的關系結構。這一步設計完成後資料庫和數據結構設計工作基本完成,只待系統實現時將數據分析和數據字典的內容代入到所設計的數據整體關系結構中,一個規范化資料庫系統結構就建立起來了。
建立關系數據結構涉及三方面內容:確定關聯的關鍵指標項並建立關聯表;確定單一的父系記錄結構;建立整個資料庫的關系結構。
(1)鏈接關系的確定
在進行了上述數據規范化重組後,已經可以確保每一個基本數據表(我們簡稱為表)是規范的,但是這些單獨的表並不能完整地反映事物,通常需要通過指標體系整體指標數據才能完整全面地反映問題。也就是說在這些基本表的各宇段中,所存儲的是同一事物不同側面的屬性。那麼計算機系統如何能知道哪些表中的哪些記錄應與其它表中的哪些記錄相對應,它們表示的是同一個事物呢?這就需要在設計數據結構時將這種各表之間的數據記錄關系確定下來。這種表與表之間的數據關系一般都是通過主或輔關鍵詞之間的連接來實現的。因為在每個表中只有主關鍵詞才能唯一地標識表中的這一個記錄值(因為根據第三範式的要求,表中其它數據欄位函數都依賴於主關鍵詞),所以將表通過關鍵詞連接就能夠唯一地標識出某一事物不同屬性在不同表中的存放位置。
(2)確定單一的父子關系結構
所謂確定單一的父系關系結構就是要在所建立的各種表中消除多對多(以下用M:N來表示)的現象,即設法使得所有表中記錄之間的關系呈樹狀結構(只能由一個主幹發出若干條分支,而不能有若干條主幹交錯發出若干條分支狀況)。所謂的「父系」就是指表的上一級關系表。消除多對多關系可以藉助於E-R圖的方法來解決,也可以在系統分析時予以注意,避免這種情況的發生。
消除這種M:N情況的辦法也很簡單,只需在二表之間增加一個表,則原來M:N的關系就改成了M:1,1:N的關系了。
確定數據資源的安全保密屬性:
一般DBMS都提供給我們自己定義數據安全保密性的功能。系統所提供的安全保密功能一般有8個等級(0-7級),4種不同方式(只讀、只寫、刪除、修改),而且允許用戶利用這8個等級的4種方式對每一個表自由地進行定義。
定義安全保密性的方法一般有如下幾種:
a.原則上所有文件都定義為4級,個別優先順序特別高的辦公室(終端或微機的入網賬號)可定義高於4級的級別,反之則定義為低於4的級別。
b.統計文件(表)和數據錄入文件一般只對本工作站定義為只寫方式,對其它工作站則定義為只讀方式。
c.財務等保密文件一般只對中工作站(如財務科等)定義為可寫、可改、可刪除方式,對其它工作站則定義為只讀方式,而且不是每個人都能讀,只有級別相同和高級別者才能讀
2.1.2 資料庫設計範式分析
建立起一個良好的數據指標體系,是建立數據結構和資料庫的最重要的一環。一個良好的數據指標體系是建立DB的必要條件,但不是充分條件。我們完全可以認為所建指標體系中的一個指標類就是關系資料庫中的一個基本表,而這個指標類下面的一個個具體指標就是這個基本表中的一個欄位。但如果直接按照這種方式建庫顯然還不能算最佳。對於指標體系中數據的結構在建庫前還必須進行規范化的重新組織。
a. 數據組織的規范化形式
在數據的規范化表達中,一般將一組相互關聯的數據稱為一個關系(relation),而在這個關系下的每個數據指標項則被稱為數據元素(data element),這種關系落實到具體資料庫上就是基本表,而數據元素就是基本表中的一個欄位(field)。規范化表達還規定在每一個基本表中必須定義一個數據元素為關鍵字(key),它可以唯一地標識出該表中其它相關的數據元素。在規范化理論中表是二維的,它有如下四個性質:
l 在表中的任意一列上,數據項應屬於同一個屬性(如圖中每一列都存放著不同合同記錄的同一屬性數據)。
l 表中所有行都是不相同的,不允許有重復組項出現(如圖中每一行都是一個不同的合同記錄)。
l 在表中,行的順序無關緊要(如圖中每行存的都是合同記錄,至於先放哪一個合同都沒關系)。
l 在表中,列的順序無關緊要,但不能重復(如圖中合同號和合同名誰先誰後都沒關系,但二者不可重復或同名)。
在對表的形式進行了規范化定義後,數據結構還有五種規范化定義,定名為規范化模式,稱為範式。在這五種範式中,一般只用前三種,對於常用系統就足夠了。而且這五種範式是「向上兼容」的,即滿足第五範式的數據結構自動滿足一、二、三、四範式,滿足第四範式的數據結構自動滿足第一、二、三範式,……,依此類推。
第一範式(first normal form,簡稱1st NF)就是指在同一表中沒有重復項出現,如果有則應將重復項去掉。這個去掉重復項的過程就稱之為規范化處理。在本文所討論的開發方法里,1st NF實際上是沒有什麼意義的。因為我們按規范化建立的指標體系和表的過程都自動保證了所有?/div>
㈤ 誰有圖書管理系統的全套網頁模板,只要前端的,
圖書管理系統 內 容 摘 要 圖書管理系統是典型的信息管理系統。圖書管理工作繁瑣,借閱頻繁,包含大量的信息數據,因此就需要一個完善的圖書管理系統來實現對這些數據的有效管理。本系統的主要任務就是對圖書、讀者、借閱信息、查詢進行統一管理,滿足各類用戶的需求。 其開發主要包括後台資料庫的建立和維護以及前端的應用程序的開發兩個方面。對於前者要求建立數據的一致性和完整性,對於後者則要求應用程序功能的完備,易用等特點。 基於上述考慮本系統主要利用Visual Basic作前端的應用開發工具,利用Access作為 後台的資料庫,充分利用了Visual Basic和Access的優點,利用WINDOWS_XP作為系統平台,使系統更加完善。 關鍵詞:圖書 讀者 系統 管理 Book Management System Abstract The book management system is a typical of the information management systems, book management red tape and to borrow frequently, contains a lot of information, so we need a sound book management system to achieve these data, and to effective management. The system『s main task is to manage books, readers and borrow information, inquiries for unified management to meet the needs of various users. The development includes two keys, database background to the establishment and maintenance of the front-end application development aspects. For the former calls that it the data for integrity and consistency, the latter demanded the application of the complete function, user-friendly features. Based on the above considerations, the system uses Visual basic as outlook for the application and development tools, and Access to the database as a background, and makes full use of the Access and Visual basic advantages; use Windows XP as a platform; which makes the system more perfectly. Keywords : books readers system management 目錄 序 言 . 1 一、概論. 2 (一)圖書管理的現狀. 2 (二)圖書管理的發展背景和意義. 2 二、系統規劃. 3 (一)系統任務. 3 (二)系統目標. 3 (三)系統計劃. 3 (四 )可行性研究. 4 1.技術可行性. 4 2.經濟可行性. 4 3.社會可行性. 4 三、系統分析. 5 (一)系統的需求分析. 5 (二)組織機構圖. 6 (三)業務流程圖. 6 (四)數據流程圖. 7 (五)數據字典. 9 四、系統設計. 13 (一)系統功能模塊圖. 13 (二)資料庫設計. 14 1.E-R圖. 14 2.資料庫表. 16 3.創建表間關系. 17 (三)代碼設計. 18 (四)輸入輸出設計. 18 五、系統實施. 22 (一)登錄界面. 22 (二)系統主界面. 22 (三)添加讀者界面. 23 (四)讀者管理界面. 23 (五)還書登記界面. 23 (六)到期圖書管理界面. 24 六、系統測試與維護. 25 (一)系統測試. 25 (二)系統維護. 27 七、設計總結. 29 參考文獻. 30 附錄:部分程序清單. 31 序言 圖書管理系統是我們接觸以來最平凡的系統,如今是信息化的社會,圖書館信息資源的有效管理已經成為人們獲取信息的關鍵所在,這也將是圖書館信息化建設的重點。書是人類不可缺少的精神食糧,也是現在社會步入文明的見證。在未來對於圖書管理信息化的要求會更高,圖書管理系統的目的是應用信息化的技術對圖書進行的管理,減少大量的數據冗餘和傳統管理的繁瑣工作量,實現圖書管理的系統化,科學化。 系統的主要子模塊有圖書管理,讀者管理,借閱管理等,可實現日常圖書管理業務,最終達到提高工作效率的目的。 一、概論(一)圖書管理的現狀 目前社會上信息管理系統發展飛速,越來越多的企事業單位都引入了信息管理軟體來管理自己日益增長的各種信息。各大高校也相繼採用了圖書管理系統來管理圖書,取得了很大的成效,圖書管理信息系統也在功能上不但完善和加強,為了使圖書管理更加規范化,程序化,科學化,我們研發了這次的圖書管理系統。 作為計算機應用的一部分,使用計算機對圖書信息進行管理,具有手工管理所無法比擬的優點。圖書管理系統的開發是一個老生常談的問題,以其作為資料庫開發的示例是因為它的開放性,比較成熟。隨著資料庫技術、網路技術和科學管理方法的發展,計算機在管理上的應用日益廣泛,管理信息系統逐漸成熟起來,並且給管理帶來了新的革命。鑒於目前學校圖書數目劇增,圖書信息量也呈爆炸性增長的形勢下,對圖書管理系統功能的要求越來越高,圖書管理系統也在此基礎上有了很大的發展,但是各系統力求使其功能簡潔明了,而且齊全、易於操作。 (二)圖書管理的發展背景和意義 當今計算機及網路技術飛速發展,計算機應用在全球范圍內日益普及,而社會也正快速向信息化社會前進,信息系統的作用也越來越大。現在我國的各中小城市的圖書館的圖書管理和借閱管理還停留在紙介質的基礎上,這樣的機制已經不能適應時代的發展,因為它浪費了許多人力和物力,在信息時代這種傳統的管理方法必然被以計算機為基礎的信息管理所取代,因此根據圖書館目前的實際情況來開發一套新的圖書管理系統是十分必要的。圖書管理信息化是信息發展的必然趨勢。通過對管理系統模型的研究,提出一套構造圖書信息管理系統模塊的方法,並利用資料庫、信息系統分析所學的知識,結合其它圖書管理業務常識,建立相關數據模型,利用面向對象開發工具對其進行設計與開發。建立一套有效的圖書信息管理系統,可以減少工作量,將管理工作科學化、規范化,提高圖書館管理的工作質量和工作效率。 二、系統規劃 (一)系統任務 系統的規劃依據目前各學校的圖書管理系統的現狀,確定此次研發的使命。目前學校的圖書管理系統已經不能夠適應越來越多的讀者和圖書信息劇增的局面了,特別是自高校擴招以來,圖書館也加大了購書量,書的類目也越來越多,分得也更細致,而目前高校工作人員以老齡人居多,所以也就要求有一套功能齊全,但是也簡單易用的圖書管理系統的出現。圖書管理的業務其實說起來也都大同小異,管理對象也就是讀者和圖書,但是如果是針對大型的圖書館也還要開慮到其他的方方面面,比如采購何類書籍,每次該采購多少?什麼書等等問題。考慮到時間的關系,本系統就院校內部的管理流程來研發,而沒有設計外部的供應商之類的信息,初步規劃本系統要完成以下任務: 1.界面友好、操作簡單: 系統的界面設計應該簡潔明了,採用標準的WINDOWS 編程技術,使用下拉式菜單,立體彈出式窗口等可視化手段, 每一過程應有相應的功能提示。 2.豐富的查詢功能: 系統的查詢功能要方便靈活,如圖書可以按書目編號、名稱、、出版社、作者等多種關鍵字查詢。 3.靈活多樣的報表功能: 系統應有豐富的報表列印功能,提供相關圖書、讀者、借書信息報表,同時可實現匯總和對數據項的組合輸出功能,方便列印。 (二)系統目標 目前圖書數量及讀者數量增加,以及二者之間產生的借閱信息繁多,因此原有的管理模式已不能適應現行工作的需要。同時,陳舊的