第一篇:毕业论文 家庭图书管理系统设计 源程序清单
源程序清单
应用对象脚本:
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课时)》——张友生主讲,希赛教育软考学院出版第三篇:图书管理系统数据库设计
第四篇:图书管理系统设计报告
第五篇:系统分析师学习图书清单