第一篇:畢業論文 家庭圖書管理系統設計 源程序清單
源程序清單
應用對象腳本:
sqlca.DBMS= ProfileString(“pb.ini”, “database”, “dbms”,“")sqlca.database= ProfileString(”pb.ini“, ”database“, ”database“,”“)sqlca.userid= ProfileString(”pb.ini“, ”database“, ”userid“,”“)sqlca.dbpass= ProfileString(”pb.ini“, ”database“, ”dbpass“,”“)sqlca.logid= ProfileString(”pb.ini“, ”database“, ”logid“,”“)sqlca.logpass= ProfileString(”pb.ini“, ”database“, ”LogPassWord“, ”“)sqlca.servername = ProfileString(”pb.ini“, ”database“, ”servername“, ”“)sqlca.dbparm= ProfileString(”pb.ini“, ”database“, ”dbparm“,”“)
SQLCA.DBMS = ”ODBC“
SQLCA.AutoCommit = False
SQLCA.DBParm = ”Connectstring='DSN=tushu'“
connect;
open(w_login)
版本信息窗口:
確定按鈕腳本:
close(parent)
統計窗口:
打開腳本:
dw_1.settransobject(sqlca)
dw_1.retrieve()
oldsql=dw_1.getsqlselect()
統計條件一的腳本:
string wheresql
string newsql
//設置模糊查詢的WHERE條件
wheresql=”where qikan.qikanno like '“+sle_1.text+”'“
//合成新的SQL Select語句
newsql=oldsql+wheresql
//數據窗口進行查詢
dw_1.setsqlselect(newsql)
dw_1.retrieve()
統計條件二的腳本:
string wheresql
string newsql
//設置模糊查詢的WHERE條件
wheresql=”where qikan.qikanname like '“+sle_2.text+”'“
//合成新的SQL Select語句
newsql=oldsql+wheresql
//數據窗口進行查詢
dw_1.setsqlselect(newsql)
dw_1.retrieve()
統計條件三的腳本:
string wheresql
string newsql
//設置模糊查詢的WHERE條件
wheresql=”where qikan.nian like '“+sle_4.text+”'“
//合成新的SQL Select語句
newsql=oldsql+wheresql
//數據窗口進行查詢
dw_1.setsqlselect(newsql)
dw_1.retrieve()
統計條件四的腳本:
string wheresql
string newsql
//設置模糊查詢的WHERE條件
wheresql=”where qikan.chubanshe like '“+sle_3.text+”'“
//合成新的SQL Select語句
newsql=oldsql+wheresql
//數據窗口進行查詢
dw_1.setsqlselect(newsql)
dw_1.retrieve()
刷新按鈕的腳本:
dw_1.setsqlselect(oldsql)
dw_1.retrieve()
sle_1.text=”“
sle_2.text=”“
sle_3.text=”“
sle_4.text=”“
sle_6.text=”“
sle_7.text=”“
SELECT ”tushu“.”bookname“,”tushu“.”bookno“,”tushu“.”zuozhe“,”tushu“.”wenxianleixing“,”tushu“.”weizhi“,”tushu“.”isbn“
INTO :sle_1.text,:sle_4.text,:sle_2.text,:sle_3.text,:sle_6.text,:sle_7.text
FROM ”tushu“
WHERE ”tushu“.”bookname“ = :sle_5.text
;
if sle_1.text=”“ then
sle_1.text=”無此書“
end if
登陸窗口腳本:
string password=”hjsfdjayewhr“
select password.password
into :password
from password
where password.id=:sle_1.text;
if password=sle_2.text then
open(w_main)
else
messagebox(”提示信息“,”錯誤密碼!“)
end if
close(w_login)
w_luilan_1.dw_1.accepttext()
integer li_rtn
if w_luilan_1.dw_1.modifiedcount()> 0 then
li_rtn = messagebox('提示信息','保存數據嗎?',question!,yesno!,1)
else
close(w_luilan_1)
return
end if
if li_rtn=1 then
cb_3.TriggerEvent(clicked!)
close(w_luilan_1)
elseif li_rtn=2 then
close(w_luilan_1)
end if
錄入書籍窗口腳本:
w_luru_1.dw_1.accepttext()
integer li_rtn
if w_luru_1.dw_1.modifiedcount()> 0 then
li_rtn = messagebox('提示信息','保存數據嗎?',question!,yesno!,1)
else
close(w_luru_1)
return
end if
if li_rtn=1 then
cb_3.TriggerEvent(clicked!)
close(w_luru_1)
elseif li_rtn=2 then
close(w_luru_1)
end if
錄入按扭腳本:
long ll_current_row
string ls_wire_name
ll_current_row = parent.dw_1.insertrow(0)
parent.dw_1.scrolltorow(ll_current_row)
parent.dw_1.setcolumn(1)
parent.dw_1.setfocus()
圖書數據存取窗口腳本:
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_2.settransobject(sqlca)
dw_2.retrieve()
integer li_row,li_cnt
li_row=dw_2.rowcount()
//逐條刪除記錄
for li_cnt=1 to li_row
dw_2.deleterow(1)
next
dw_2.update()
圖書數據備份按扭腳本:
string pname,fname
integer li_rtn,li_save
//獲取存儲文件名
li_rtn=GetFileSaveName(”請輸入保存的文件名“,pname,fname,”TXT“,”Text Files(*.txt),*.txt“)if li_rtn=1 then
li_save=dw_1.saveas(pname,text!,false)
if li_save=1 then
messagebox(”成功“,”存儲文件成功“)
end if
end if
圖書數據讀取按扭腳本:
string pname,fname
integer li_rtn,li_count
li_rtn=GetFileOpenName(”請選擇導入的文件“,pname,fname,”TXT“,”Text Files(*.txt),*.txt“)if li_rtn=1 then
li_count=dw_2.importfile(”g:ygyg.txt“)
if li_count>0 then
sle_1.text=string(li_count)
dw_2.update()
else
messagebox(”錯誤“,”導入文件錯誤“)
end if
end if
密碼查詢窗口腳本:
sle_1.text=”“
sle_2.text=”“
SELECT ”password“.”id“,”password“.”password“
INTO :sle_1.text,:sle_2.text
FROM ”password“
WHERE ”password“.”id“ = :sle_3.text
;
if sle_1.text=”“ then
sle_1.text=”無此用戶“
end if
期刊查詢窗口腳本:
dw_1.settransobject(sqlca)
string ls_qikanno,ls_qikanname
string ls_issn,ls_chubanshe
DECLARE lcursor_qikanno CURSOR FOR
SELECTdistinct
”qikan“.”qikanno“,”qikan“.”qikanname“,”qikan“.”issn“,”qikan“.”chubanshe“
FROM”qikan“
ORDER BY ”qikan“.”qikanno" ASC;
open lcursor_qikanno;
fetch lcursor_qikanno into :ls_qikanno, :ls_qikanname, :ls_issn, :ls_chubanshe;
do while sqlca.sqlcode = 0//判斷是否已讀完表ddlb_1.additem(ls_qikanno)
ddlb_2.additem(ls_qikanname)
ddlb_3.additem(ls_issn)
ddlb_4.additem(ls_chubanshe)//若未讀完表,將數據加入到拉列表框中
fetch lcursor_qikanno into :ls_qikanno, :ls_qikanname, :ls_issn, :ls_chubanshe;
loop
close lcursor_qikanno;//判斷是否已讀完表
第二篇:倉庫庫存管理系統源程序
演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案
倉庫庫存管理系統源程序
#include
char name[20];//物品名稱
int num;
//商品數量
int level;//物品等級
}item;typedef struct node { struct item data;struct node * next;}Node,*Link;//定義為鏈表 void menu()//頁面顯示函數 {
精心收集
精心編輯
精致閱讀 如需請下載!
演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案
system(“cls”);//清屏函數
printf(“***********************************《物品庫存管理》*****************************n”);printf(“
n”);
printf(“n
<1> 物品入庫管理ntn
<2> 物品出庫管理n”);printf(“n
<3> 瀏覽庫內物品信息ntn
<4> 修改物品信息n”);printf(“n
<5> 保存物品信息ntn
<0> 退出庫存管理n”);printf(“
n”);cout<<“********************************************************************************”< void printstart(){ printf(“-----------n”);printf(“n 請選擇操作:”); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 } void Wrong()//錯誤處理函數 { printf(“輸入錯誤!n”);getchar();getchar();menu(); return;} void Nofind(){ printf(“沒有找到該物品!n”);} void printc()//本函數用于輸出中文 { printf(“ 物品編碼 物品名稱 物品數量 n”);} void printe(Node *p)//輸出物品信息函數 { cout< ”< data.code<<“ ”< data.name<<“ ”< data.num<<“ 精心收集 精心編輯 精致閱讀 如需請下載!物品等級 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 ”< data.level;} Node *Locate(Link l,char findmess[],char nameorcode[])//用于定位連接中,符合要求的結點,并返回該指針 { Node *r;if(strcmp(nameorcode,“code”)==0)// { } else if(strcmp(nameorcode,“name”)==0)//按名稱查詢 { r=l->next;while(r!=NULL){ r=l->next;while(r!=NULL){ } if(strcmp(r->data.code,findmess)==0)return r;r=r->next; 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 } } } if(strcmp(r->data.name,findmess)==0)return r;r=r->next;return 0;void Add(Link l)//增加物品函數 { Node *p,*r,*s;char code[10];r=l;s=l->next;while(r->next!=NULL)r=r->next;while(l){ system(“cls”);//清屏函數 cout<<“請輸入商品編碼(輸入'0'返回上一級菜單):”< 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 while(s){ if(strcmp(s->data.code,code)==0){ printf(“物品編碼為'%s'的物品已經存在,如果要修改請選擇'4 修改'!n”,code); printstart(); printc(); printe(s); printstart(); printf(“n”); return; } s=s->next; } p=(Node *)malloc(sizeof(Node)); strcpy(p->data.code,code); printf(“請輸入物品名稱:”); scanf(“%s”,p->data.name);getchar(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 printf(“請輸入物品數量:”); scanf(“%d”,&p->data.num); printf(“請輸入物品等級:”); scanf(“%d”,&p->data.level); p->next=NULL; r->next=p; r=p; shoudsave=1;} menu();} void Qur(Link l)//查詢物品信息函數 { int sel;char findmess[20];Node *p;if(!l->next){ printf(“n沒有信息可查詢!n”); getchar(); getchar();menu(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 return; } system(“cls”);//清屏函數 printf(“n 1按物品編碼查詢n 2按物品名稱查詢n”);scanf(“%d”,&sel);if(sel==1)// { printf(“請輸入要查詢的編碼:n”);scanf(“%s”,findmess);p=Locate(l,findmess,“code”);if(p){ printf(“tttt查詢結果n”); printstart(); cout< printc(); cout< printe(p); cout< printstart(); getchar();getchar(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 } } menu();return;else Nofind();else if(sel==2)// { printf(“請輸入要查找的物品名稱:”);scanf(“%s”,findmess);p=Locate(l,findmess,“name”);if(p){ printf(“ttt查詢結果n”); printstart();cout< printc();cout< printe(p);cout< printstart(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 getchar(); getchar(); menu(); return; } else Nofind(); } else Wrong();getchar(); system(“cls”);//清屏函數 menu();} void Del(Link l)//刪除 { int sel;Node *p,*r;char findmess[20];if(!l->next){ system(“cls”);//清屏函數 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 } printf(“n您的倉庫為空!n”);getchar();getchar();menu();return;system(“cls”);//清屏函數 printf(“n 1按物品編碼出倉n 2按物品名稱出倉n”);scanf(“%d”,&sel);if(sel==1){ printf(“請輸入要出倉的物品編碼:”);scanf(“%s”,findmess);p=Locate(l,findmess,“code”);if(p){ r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf(“n該物品已經成功出倉n”); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 } } shoudsave=1;getchar();getchar();menu();return;else Nofind();else if(sel==2){ system(“cls”);//清屏函數 printf(“請輸入要出倉的物品名:”);scanf(“%s”,findmess);p=Locate(l,findmess,“name”);if(p){ r=l;while(r->next!=p)r=r->next;r->next=p->next; 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 } } } free(p);printf(“n該物品已經成功出倉!n”);shoudsave=1;getchar();getchar();menu();return;else Nofind();else Wrong();void Modify(Link l)//物品信息修改 { Node *p;char findmess[20];if(!l->next){ system(“cls”);//清屏函數 printf(“n您的庫存為空,無需修改!n”); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 } getchar();getchar();menu();return;printf(“請輸入要修改的物品編碼:”);scanf(“%s”,findmess);p=Locate(l,findmess,“code”);if(p){ system(“cls”);//清屏函數 printf(“請輸入新編碼(原來的是%s):”,p->data.code);scanf(“%s”,p->data.code);printf(“請輸入新名稱(原來的是%s):”,p->data.name);scanf(“%s”,p->data.name);getchar();printf(“請輸入新的物品數量(原來的是%d):”,p->data.num);scanf(“%d”,&p->data.num);getchar();printf(“請輸入新的物品等級(原來的是%d):”,p->data.level);scanf(“%d”,&p->data.level); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 getchar(); printf(“n修改資料成功!n”); shoudsave=1; getchar();menu(); return;} else Nofind();getchar();menu();} void Disp(Link l){ int count=0;Node *p;p=l->next;if(!p){ printf(“n 沒有資料可以顯示!n”); getchar();getchar(); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 menu(); return;} printf(“tttt顯示結果n”);printstart();printc();printf(“n”);while(p){ printe(p); p=p->next;} printstart();printf(“n”);} void Save(Link l)//物品信息保存 { FILE *fp;Node *p;int flag=1,count=0;fp=fopen(“c:student”,“wb”); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 if(fp==NULL){ printf(“n重新打開文件時錯誤!n”);exit(1);} p=l->next;while(p){ if(fwrite(p,sizeof(Node),1,fp)==1){ p=p->next; count++;} else { flag=0; break;} } if(flag){ system(“cls”);//清屏函數 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 printf(“n 文件保存成功.(有%d條記錄保存成功.)n”,count); shoudsave=0; getchar(); getchar(); menu();} fclose(fp);} void main()//主函數 { menu();Link l;//鏈表 Node *r;int sel;char ch;int count=0;l=(Node *)malloc(sizeof(Node));l->next=NULL;r=l;while(l){ scanf(“%d”,&sel); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 if(sel==0){ if(shoudsave==1){ getchar();printf(“n 資料已改動,是否將改動的文件保存到文件中(y or n)?n”); } switch(sel){ case 1:Add(l);break;//物品進庫 case 2:Del(l);break;//物品出庫 case 3:Qur(l);break;//查詢物品 case 4:Modify(l);break;//修改物品信息 case 5:Save(l);break;//保存物品信息 } printf(“n 已退出系統!n”);break;scanf(“%c”,&ch);if(ch=='y' || ch=='Y')Save(l); 精心收集 精心編輯 精致閱讀 如需請下載! 演講稿 工作總結 調研報告 講話稿 事跡材料 心得體會 策劃方案 default:Wrong();getchar();break;} 精心收集 精心編輯 精致閱讀 如需請下載! } } 數據庫設計.................................................................2 3.1 專門術語的定義...................................................2 3.1.1 系統中常用的術語(或使用頻率較高的術語).........................2 3.1.2 表格定義及規范.................................................2 3.1.2.1數據約定.....................................................2 3.1.2.2表和表字段命名規范:.........................................3 3.2 數據設計.........................................................3 3.2.1 數據流程圖設計.................................................3 3.2.2實體關系結構設計...............................................4 3.3安全保密設計.....................................................6 3.3.1 邏輯上的安全保密...............................................6 3.3.2 物理上的安全保密...............................................6 3.4 表格與功能模塊相關性分析.........................................7 3.5 表格定義.........................................................7 數據庫設計 3.1 專門術語的定義 暫無 3.1.1 系統中常用的術語(或使用頻率較高的術語)暫無 3.1.2 表格定義及規范 3.1.2.1數據約定 所有數據項都用英文、漢語拼音或縮寫表示,數據庫名稱除外。 所有字段在設計時,除以下數據類型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必須有默認值。字符型的默認值為一個空字符值串;數值型的默認值為數值0;邏輯型的默認值為數值0; 其中:系統中所有邏輯型中數值0表示為“假”;數值1表示為“真”。datetime、smalldatetime類型的字段沒有默認值,必須為NULL。當字段定義為字符串形時建議使用varchar而不用nvarchar。建議在大多數表中(如報銷單,申請單),應都有以下字段: 字段名說明類型默認值 CreatorID創建者int CreatedTime創建時間DatetimeNULL 字符集采用 UTF-8,請注意字符的轉換。 所有數據表第一個字段都是系統內部使用自動序列主鍵列,自增字段,不可空,名稱為:id,確保不把此字段暴露給最終用戶。 除特別說明外,所有字符串字段都采用varchar(50)類型,(無論漢字還是英文,都算一個字符)。 除特別說明外,所有小數的字段都采用 decimal(18,2)的形式表達。 除特別說明外,所有日期格式都采用 datetime 格式(根據需要提取時間格式); 除特別說明外,所有整形都采用 bigint 格式。除特別說明外,所有字段默認都設置為 null。3.1.2.2表和表字段命名規范: 命名規則約束的范圍包括:數據庫的命名、表的命名及字段的命名。數據庫相關的命名規則采用與通常的編程的變量命名規則原則一致,具體要求如下: 1)字段名及表名為典型的名詞結構; 2)中文名稱要求語言精練、文法嚴謹; 3)望文知意、易懂易用,禁止采用如:A002這種命名; 4)主體采用拼音字母的首寫字母拼寫構成,基于慣常法可適度采用無詞義歧義性的英文命名; 5)長度不少于3個字母,不大于12個字母; 6)在對于拼音首字母類似的字段和表,為區別,添加下劃線和數字如男性人數:NXRS,女性人數:NXRS_2。 3.2 數據設計 繪制數據流程圖的目的是為了方便開發人員與用戶的交流,以及為系統的設計提供依據。數據流程圖的繪制過程通常采用自頂向下,逐層分解,直到功能細化為止,形成若干層次的數據流程圖。3.2.1 數據流程圖設計 0層數據流圖 1層數據流圖 3.2.2實體關系結構設計 圖書實體關系 讀者實體關系 圖書借閱關系實體 用戶實體關系 圖書類別實體關系 3.3安全保密設計 3.3.1 邏輯上的安全保密 1、系統對非法使用者的安全保密處理措施 2、系統對正常使用者的安全保密處理措施 3、系統對管理員的安全保密 3.3.2 物理上的安全保密 1、數據庫系統異常時的還原處理措施 2、設備遭異常毀壞時的安全防護措施 3、數據參數做到及時更新,保證系統正常運行 3.4 表格與功能模塊相關性分析 3.5 表格定義 a.圖書信息表 b.讀者信息表 c.借閱表 d.管理員_書籍 e.管理員_學生 圖書管理系統設計報告 一系統開發的目標與意義 1.1設計題目 此次VFP課程設計是綜合應用所學過的數據庫理論知識,自行設計并實現一個較為完整的應用系統。結合一個實際信息系統開發,初步掌握數據庫管理信息系統的方案設計、論證和分析方法。正確運用所學課程的基本理論和知識,了解在Windows環境下,使用Visual FoxPro 6.0開發管理信息系統所需的計算機軟、硬件環境。進一步深刻理解Visual FoxPro 6.0,合理設計并建立數據庫,建立數據庫中表與表之間的關系。在理論教學的基礎上,進一步理解可視化編程的基本概念,熟練掌握可視化編程的方法和步驟。通過編程和上機調試,提高計算機應用與開發水平,特別是VFP平臺的開發水平和能力,提高解決實際問題的能力。從軟件工程的角度,初步樹立正確的程序設計思想,從系統分析、系統設計、系統實現、系統評價出發。培養分析問題、解決問題的能力。提高收集、查閱資料和撰寫項目文檔的能力。 1.2開發意義 針對圖書館特點,圖書管理系統實現后,能夠使界面友好美觀操作簡單易行。全面自動化信息管理,可隨時掌握圖書的進存、借閱等信息,查詢靈活方便,數據存儲安全可靠。進而提高工作效率。改善后的圖書管理系統將功能全面,實用性強。 1.3系統開發過程 1.3.1 分析階段 本階段主要工作是信息的收集,正所謂好的開度等于成功的一半。通過信息的收集工作來確定系統的目標、軟件的總體思路以及所需要的時間。 1.3.2設計階段 在本階段認真設計可以體會到什么叫事半功倍。詳細的規劃具體需要完成的任務、輸入輸出的程序以及采用的數據結構,最好通過一定的算法描述工具詳細描述算法。 1.3.3實施階段 本階段要運用(1)系統論思想,把所做的大系統分解成幾個小系統,但要保證小系統即個功能模塊受高一級系統控制。(2)“自上而下”的設計思想。每一給小程序都可獨立、精確運行,但嚴格受制與高一級程序。 1.3.4維護階段 本階段測試系統的性能是關鍵,通過測試找出設計錯誤、程序錯誤、算法錯誤。通過此階段積累自己的設計經驗。 1.4開發平臺本系統是在WINDOWS XP的操作系統使用VisualFoxPro 6.0開發制作的,硬件環境是P4,256M內存以及1024*768分辨率。 二系統分析 2.1 用戶需求 通過本圖書查詢系統,用戶可以輕而易舉的查到圖書信息、借閱人信息以及節約人與圖書之間的各種關系。例如:(1)輸入借閱人編號可以查閱到其解了哪些書,同時查到這些書籍的信息(作者、出版社、出版年、借還日期等);輸入書籍名稱或書籍編號可以查閱到書籍信息及借閱人信息(姓名、所屬單位、聯系方式等)。(2)數據的輸出,可以把查閱到的各方面信息通過報表形式輸出。 2.2可行性分析 通過對所收集的數據和在設計階段所需要的各項功能進行分析,最終得出所學設計的軟件系統是否可行。并對所存在的問題加以解決;所存在的錯誤加以糾正。 2.2.1數據分析 在分析階段完成,收集各方面信息,使所作的軟件功能完備,方便可行。學生基本情況信息:主要包括姓名、性別、學號、所屬單位、出生年月等 進書基本情況信息:主要包擴書名、圖書分類編號、作者、出版社、出版日期、購入日期等 借書基本情況查詢:主要包括借閱者姓名、借書日期、應還書日期等。在分析階段作出以下圖表,為實施階段打下良好基礎。 圖1 “圖書管理系統”數據結構圖 2.2.2功能分析本系統具有信息錄入、修改、查詢、信息輸出以及系統安全設置等功能。具體情況如下: (1)信息錄入功能:圖書進書信息、學生信息、借閱信息等。 (2)修改功能:對圖書信息、學生信息等進行添加修改。確保數據及時更新。 (3)信息輸出功能:對所需要的信息通過打印機等輸出工具進行輸出。 (4)查詢功能:主要把學生信息與圖書信息建立關聯,實現學生信息與圖書信息的互動。能夠方便快捷的實現圖書被借閱,和學生借閱等信息的查詢。 為了為實施階段打下基礎,做功能結構圖如下: 圖 書 管 理 系 統 系統介紹數據查詢數據錄入維護信息輸出退出 系統介紹界面系統登陸界面學生信息查詢書籍信息查詢借閱信息查詢學生信息錄入新書信息錄入借閱信息錄入學生信息輸出書籍信息輸出圖書去向輸出推出系統界面 圖2系統功能結構圖 三 系統結構設計 3.1數據庫的建立 3.1.1 表的建立本系統共建立三個表,分別是借書表、進書表、學生基本情況表。給表中所包含的信息見2.2.1數據分析所示。 3.1.2 表的關聯 所以是表與表這間建立聯系的紐帶。在本系統所涉及的三個表中索書號和借閱證號都可以作為唯一標示紀錄的索引關鍵字。但考慮到數據修改時是否方便,所以使用學生基本情況表作為父表,以借閱證號作為主索引,避免了關鍵字出復值。在借書表中涉及到“書被誰借去了”所以可以用借閱證號位關鍵字把學生基本情況表和借書表建立起一一對應的關系。在學生基本情況表中涉及到“某學生截了那本書”故可以以索書號作為關鍵字建立唯一索引。因為索書號是唯一確定的,雖讓建立的是唯一索引,卻也可以收到主索引的效果。總而言之,在借書表與學生基本情況表之間以借閱證號位關鍵字建立對應關系,再進書表與學生基本情況表之間用索書號建立起一一對應的關系,最終實現三個表之間的互動。 3.1.3表結構的建立與數據的錄入 打開了Visual FoxPro軟件,運行文件菜單中的新建按鈕,選擇表和新建文件,同時設置好表名及路徑并保存,然后在出現表設計器中進行設計。以下為三個表的設置結構及錄入的記錄: 部分記錄如下: 圖3借書表結構及部分數據截圖 部分數據如下: 圖4進書表結構及部分數據截圖 部分數據如下 圖5 學生節本情況結構及部分數據截圖 3.2系統的設計與實現 3.2.1系統界面與表單設計 漂亮簡捷的系統界面將給使用者一個好的印象,是一套系統的門面。設計的成功與否,見關系到系統的前景與市場。本套系統的界面設計及實現程序如下: 圖6 系統登陸截圖 設計步驟如下: 新建表單“系統登陸.scx”,創建command1、2、3,label1、2、3,combo1和text1。 設置text1的caption屬性為“圖書管理系統”,text2的caption屬性為“操作員”,text3的caption屬性為“密碼”,并設置字體、顏色、大小等內容使其美觀。Label1的caption屬性為“確定”,同理label2、3為“取消、退出” 定義command1控件的click事件,代碼如下: 3.2.2數據查詢表單設計 數據查詢包括按學生學號查詢學生的具體信息、按書籍的名稱查詢書籍的具體信息和借閱情況等。下面列舉單表查詢表單如進書表.scx和多表查詢表單如圖書去向情況和圖書借閱情況.scx說明數據查詢的設計方法,進書表.scx的運行效果如下圖所示: 圖7 圖書信息查詢系統截圖 設計步驟如下: 此表單的設計主要是練習表單向導的用法。新建表單→表單→向導→字段選取→選擇表單樣式→排序次序→完成→運行。 用表單向導來設計表單為使用者帶來極大的便利,尤其是對于我們初學者。但影響創造力的發揮和一些功能的實現。 索書號查詢表單的運行效果如下: 圖8 索書號查詢截圖 設計步驟如下: ★此表單涉及主要是練習用程序和命令來實現查詢的目的。查詢的關鍵是command1即查詢按鈕的屬性設置。其實現代碼如下: command2即退出按鈕的代碼為release thisform; 推出系統地實現: 退出系統地實現主要是通過command1、2的單擊事件click來實現的。其運行效果圖如下: 圖9 退出系統截圖 設計步驟如下 ★command1即YES按鈕的實現代碼為 ,command2即NO按鈕的實現代碼為release thisform。 3.2.3 報表的設計 在數據庫應用系統中,常需要將數據處理結果以報表形式打印出來。在本套系統的報表設計、顯示、答應報表的功能主要用報表設計起來實現。例如下圖: 運行后的結果如圖所示: 圖10報表設計器及部分數據截圖 在報表設計過程中,主要用到表設計器和表向導。為能用到報表設計器的高級操作,我會在以后努力學習表設計器的高級操作,彌補這次課程設計的一個缺憾。 3.2.4主菜單的設計 主菜單是用戶使用本系統的主要途徑,所以合理的設計至關重要,本系統的主菜單是通過菜單設計器來完成,使用的是菜單設計器的非快捷菜單方式,在主菜單確定后,分別再編輯各個子菜單項、命令、過程。本系統使用了命令及過程調用表單的方式。設計步驟如下: 創建第一級菜單。在“項目管理器”中選擇“其他”選項卡,再選擇“菜單”選項,然后單擊“新建”按鈕。出現菜單設計器,輸入各菜單名稱及結果,建立本系統所需要的菜單,如下圖所示:? 圖11 系統主菜單截圖 ★在創建主菜單后,即開始設計子菜單。單擊子菜單項后的“創建”按鈕,可創建其子菜單。如下圖所示: 圖12 系統子菜單編輯截圖 3.2.5主程序設計 主程序是系統運行時執行的主文件,設計主程序的方法為:在“項目管理器”中選擇“代碼”選項卡,再選擇“程序”選項,然后選中一個程序文件,本系統中為“MAIN”,單擊右鍵彈出快捷菜單,選擇“設置主文件”,就可設置一個程序為主文件。 本系統的主程序代碼如下: 四 系統操作說明 ★雙擊 快捷方式,進入到登陸系統。 ★輸入操作員賬號和密碼,單擊確定進入到系統介紹界面。單擊 系統操作界面。見看到菜單欄。在“系統介紹”中有“用戶更改”和“系統主頁”子菜單。在“數據查詢”中涉及到借閱信息、圖書去向、姓名查詢、索書號查詢等子菜單。報表打印中涉及到借書表、進書表、學生信息、和借閱情況等表格。在退出系統一欄中,涉及到系統推出的確認,確定要退出單擊YES,否則單擊NO。 五 結束語 經過為期兩周的課程設計可謂受益匪淺。經過時間才真正的地把文字化為了知識,才真正的為我所用。認識到自己在學習過程中的缺點和不足。為以后的學習生活積累了寶貴的經驗和教訓。心得體會如下: ★再做vfp系統開發時一定要做好信息的收集工作,否則后即工作將墜入五里霧中。信息收集時要求盡可能的考慮周全。這才能為設計階段打下一個良好的基礎。 ★在系統的設計過程中,最好能集思廣益,多聽取一點別人的意見和創意。使程序盡可能完美。一定要學會用算法描述工具,把自己的的意圖詳細簡明的記錄下來。 ★在為文件命名是盡可能不要因其混淆,盡量由數字或字母。在系統設計中我把“系統登陸、系統登錄、登陸系統”三者混淆了。為自己帶來了不盡的苦難。并且均用漢字作為文件名。這樣雖然不易引起混淆,但是影響工作的效率。 ★要學會設置文件路徑,尤其是用向導時。要學會用項目管理器,既可以提高工作效率,又減少了出錯的幾率。 ★★最后誠懇的向老師您提一點建議,如果您一個學期教我們做一套系統,在做這套系統的同時穿插著講知識點,我幼稚的以為效果會更好,避免了在做課程設計已開始的時候找不到北! 六 參考文獻: ㈠李春葆編著.Visual Fox Pro7.0數據庫系統設計與開發.北京:清華大學出版社,2003.8 ㈡李春葆編著.Visual Fox Pro6.0高級編程(應用系統設計篇).北京:清華大學出版社,2000 ㈢史濟民,湯觀全編著.Visual Fox Pro及其應用系統開發.北京:清華大學出版社,2000 ㈣蔡卓毅,林盛雄,林羽揚,黃竺編著.Visual Fox Pro6.0數據庫程序設計與實例.北京:冶金工業出版社,2003 ㈤史德芬編著.全國計算機等級考試二級真題解析——Visual Fox Pro程序設計.北京:海洋出版社,2003 圖書 《系統分析師考試全程指導》——希賽教育軟考學院組編,張友生、王勇主編,清華大學出版社,全國計算機專業技術資格考試辦公室推薦 《系統分析師技術指南(2009版)》——希賽教育軟考學院組編,張友生、王勇主編,清華大學出版社,全國計算機專業技術資格考試辦公室推薦 《系統分析師考前輔導:系統分析與設計》——希賽教育軟考學院組編,張友生、王勇主編,清華大學出版社,全國計算機專業技術資格考試辦公室推薦 《系統分析師教程》——全國計算機專業技術資格考試辦公室組編,張友生主編,清華大學出版社 《系統分析師考試歷年試題分析與解答(綜合知識篇)》——希賽教育軟考學院主編,電子工業出版社 《系統分析師考試歷年試題分析與解答(案例分析與論文篇)》——希賽教育軟考學院主編,電子工業出版社 《系統分析師考試系統分析與設計案例試題分類精解(第3版)》——希賽教育軟考學院組編,張友生、王勇主編,電子工業出版社 《系統分析師考試論文試題分類分析與范文(第3版)》——希賽教育軟考學院組編,張友生、王勇主編,電子工業出版社 視頻 《2009-2011年系統分析師考試真題解析視頻》——王勇主講,希賽教育軟考學院出版 《系統分析師考試培訓視頻教程(88課時)》——張友生主講,希賽教育軟考學院出版 《數學與經濟管理視頻教程(7課時)》——張友生主講,希賽教育軟考學院出版 《系統分析師考試串講視頻課程(12課時)》——張友生、陳志風主講,希賽教育軟考學院出版 《系統分析師考試試題講解視頻教程》——張友生、陳志風主講,希賽教育軟考學院出版 《新技術與新方法串講視頻教程(3課時)》——張友生主講,希賽教育軟考學院出版 《投資決策與項目的選擇視頻教程(3課時)》——張友生主講,希賽教育軟考學院出版第三篇:圖書管理系統數據庫設計
第四篇:圖書管理系統設計報告
第五篇:系統分析師學習圖書清單