数据库应用课程设计的报告

数据库应用课程设计的报告,第1张

数据库课程设计报告 目录目录……………………………………………………………………………………1一.设计目标…………………………………………………………………………2二.系统介绍…………………………………………………………………………2三.数据库设计……………………………………………………………………....21.需求分析……………………………………………………………………….22.概念结构设计………………………………………………………………….3 (1)实体设计………………………………………………………………..3 (2)ER图……………………………………………………………………33.逻辑结构设计………………………………………………………………….4四.应用程序设计……………………………………………………………………41.delphi7.0开发环境……………………………………………………………4 2.软件分析…………………………………………………………………..…4 (1)软件的需求分析………………………………………………………..4 (2)软件的基本功能………………………………………………………..5 3.软件的设计与实现…………………………………………………………….6 五.实现的应用系统介绍…………………………………………………………….81.系统模块…………………………………………………………………….82. 文件简介…………………………………………………………………….83 .系统运行…………………………………………………………………….8 六.总结………………………………………………………………………………17 一.设计目标理论应用--运用数据库设计理论设计一个较完善的有实际意义的数据库结构;工具使用--掌握目前流行数据库管理系统工具和前端应用开发工具;应用开发--为数据库开发相应应用程序,构成完整的数据库应用系统;报告编写--用文字处理软件编写高质量的设计报告。二.系统简介名称:超市进销存管系统功能:基于超市管理的全面自动化,减少入库管理、出库管理及库存管理中的漏洞,节约不少管理开支,增加企业收入。 实现对产品的增加、修改、删除、以及日常查询,对产品的出库、入库进行管理。同时对营销状况进行简单的分析,并可以导出各种查询报表。数据库:ACCESS实现:Delphi 7.0系统构架:C/S(Client/Server )三.数据库设计.1.需求分析:超市进销存管理系统2.概念结构设计(1)实体设计商品信息(商品编号,商品名称,商品单位,商品单价,类别,产地,说明)进货信息(进货编号,商品编号,进货单价,进货数量,进货时间,经手人,供货单位)出货信息(出货编号,商品编号,出货单价,出货数量,经手人,接收人及说明等)库存信息(商品编号,库存说明,说明等)用户信息(用户名,密码,用户类型)(2)E-R图包含说明产地商品单价商品类别商品名称商品编号商 品经手人进货数量进货时间进货单价商品编号进货编号供货单位进货记录商品编号出货数量接收人经手人出货单价出货编号出货时间出货记录库存记录说明商品编号库存说明111n3.逻辑结构设计关系模型(第1数据项为主键)商品信息(商品编号,商品名称,商品单位,商品单价,类别,产地,说明)进货信息(进货编号,商品编号,进货单价,进货数量,进货时间,经手人,供货单位)出货信息(出货编号,商品编号,出货单价,出货数量,经手人,接收人及说明等)库存信息(商品编号,库存说明,说明等)用户信息(用户名,密码,用户类型)出货商品金额(出货时间,出货单价,出货数量,出货金额)进货商品金额(进货时间,进货单价,进货数量,进货金额)四.应用程序设计1.Delphi 7.0 开发环境Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了VC功能强大和VB简单易学的特点。它一直是程序员至爱的编程工具。Delphi 7的集成开发环境(1DE)和Delphi以前的版本基本一致。它把单、多个工具栏及一组窗口和应用程序设计在一起,将代码以事件的形式与界面的每一元素建立联系,使用户很方便地在这个高度集成的开发环境的组成和各种辅助工具的使用方法和使用技巧。2.软件分析(1)软件的需求分析:开发本软件的主要目的是为了优化超市的日常管理。采用计算机管理信息系统为实现超市管理科学化和现代化,给它带来了明显的经济效益和社会效益 (2)软件的基本功能与说明:a.商品信息管理商品信息管理:用来管理系统中要用来进行进货,出货 *** 作的商品的信息,包括添加,修改,删除和查询信息。其中,查询可以进行精确查询和模糊快速查询。任意时刻,生成当前表格报表。 b. 用户管理1.用户添加该权限只有管理员拥有,可以添加临时用户,或者增设管理员用户。2.用户删除该权限只有管理员拥有,可以删除用户。3.用户密码修改用来修改登陆用户的密码,长时间地使用一个密码可能会使密码不安全,导致整个系统的不安全,因此有必要定期修改密码。 c. 营销分析1.综合分析某一时间段内,将该超市的进货总额、出货总额进行统计,并算出总盈利;将库存中的商品总量统计出来。用户可以打印分析所得报表。同时提供进货情况查询、出货情况查询、库存情况查询。2.日分析某一天中,将该超市的进货总额、出货总额进行统计,并算出总盈利;将库存中的商品总量统计出来。用户可以打印分析所得报表。 d. 日常 *** 作商品进货 *** 作:用来完成商品的进货 *** 作。商品出货 *** 作:用来完成商品的出货 *** 作。进行进货 *** 作时,进货编号以及进货时间是自动生成的,无需改动,否则会出现错误。所生成的商品编号为该种类型商品的最大编号,且后面有提示用户允许的编号范围,超出此范围会出错,如果编号方式正确且大于最大编号,确定添加后会提示用户填写新加商品的相关信息。进行出货 *** 作时,出货编号自动生成,用记无须改动。在出货单价小于进货的最小单价时会询问是否继续出货,出货数量不能大于库存数量。e.信息查询1.库存信息查询:用来查询库存的商品的信息,可以按照商品编号,商品名称和商品类别来查询,可以将查询结果打印输出。该查询可以精确查找某一确定的商品的库存信息,并将其打印输出。同时,该查询可以根据商品的库存量来将商品中库存不足、库存饱和、库存过剩的商品一一列出并提供打印输出功能。2.进货信息查询:用来查询商品的进货记录,可以按照商品编号,商品名称,商品类别,经手人和进货日期查询,可以将查询结果输出。该查询可以精确查找某一确定的商品或全部商品某一确定时间段的进货情况,并将其打印输出。同时以图表的形式分析该种商品的进货价格走势分析图。3.出货信息查询:用来查询商品的出货记录,可以按照商品编号,商品名称,商品类别,经手人和出货日期查询,可以将查询结果打印输出。该查询可以精确查找某一确定的商品或全部商品某一确定时间段的出货情况,并将其打印输出。同时以图表的形式分析该种商品的出货价格走势分析图。3.软件设计与实现添加、修改、删除是通过delphi自带函数实现的。查询是通过添加SQL语句或者直接在access中建立相对的查询(如出货商品金额、进货商品金额查询)实现的。(1).程序实现//添加adoquery1.Closeadoquery1.SQL.Clearadoquery1.SQL.Add('select * from 进货信息' )adoquery1.Open adoquery1.Appendadoquery1.fieldbyname('进货编号').asstring:=edit1.Textadoquery1.fieldbyname('商品编号').asstring:=edit2.Textadoquery1.fieldbyname('进货单价').asstring:=edit3.Textadoquery1.fieldbyname('进货数量').asstring:=edit4.Textadoquery1.fieldbyname('进货时间').asstring:=edit5.Textadoquery1.fieldbyname('经手人').asstring:=combobox5.Textadoquery1.fieldbyname('供货单位').asstring:=edit7.Textadoquery1.Post快速添加:adoquery1.Append//删除一条记录if Application.MessageBox('真的要删除当前所选记录吗?','删除确认',MB_YESNOCANCEL+MB_ICONQUESTION+MB_DEFBUTTON3)<>IDYES thenabortelseadoquery1.delete//修改一条记录ifApplication.MessageBox('真的要修改当前所选记录吗?','修改确认',MB_YESNOCANCEL+MB_ICONQUESTION+MB_DEFBUTTON3)<>IDYES then AdoQuery1.CancelUpdateselseadoquery1.edit//对表的排序procedure TForm2.DBGrid1TitleClick(Column: TColumn)var i : integerbeginfor i:= 1 to DBGrid1.Columns.Count dobegin//恢复所有标题字体为默认DBGrid1.Columns[i-1].Title.Font.Color := clWindowTextDBGrid1.Columns[i-1].Title.Font.Style := []endif ADOQuery1.Sort<>(Column.FieldName+' ASC') then //判断原排序方式beginADOQuery1.Sort := Column.FieldName+' ASC'Column.Title.Font.Color := clRed//改变标题行字体为红色,表示当前的排序方式为升序Column.Title.Font.Style := [fsBold]endelse beginADOQuery1.Sort := Column.FieldName+' DESC'Column.Title.Font.Color := clBlue//改变标题行字体为红色,表示当前的排序方式为降序Column.Title.Font.Style := [fsBold]endend//查询示例adoquery2.closeadoquery2.sql.clearadoquery2.SQL.Add('select distinct(进货信息.进货编号),商品信息.商品名称,进货信息.商品编号,商品信息.类别,进货信息.进货单价,进货信息.进货数量,进货信息.进货时间,进货信息.经手人,进货信息.供货单位 from 进货信息,商品信息 where 商品信息.商品编号=进货信息.商品编号 and ')adoquery2.SQL.Add('进货时间>=#'+DateToStr(DateTimePicker1.Date)+'# and 进货时间<=#'+DateToStr(DateTimePicker2.Date+1)+'#')adoquery2.Open*五.实现的应用系统介绍1.系统的模块(1)主界面模块Form1(2)信息管理模块Form2,form18(3)日常 *** 作模块Form3(4)信息管理模块Form5(5) 用户管理模块Form14(6)系统管理模块用户登陆:form8关于系统:form10退出系统:from11()登陆窗体Form82.文件简介:(1)文件help包括生成jun_help帮助的所有源程序。(2)文件image系统所有用到的图片文件(3) 文件project系统可执行文件project.exe。系统数据库超市进销存储管理系统.mdb(4) 文件sounds系统所有用到的声音文件(5) 文件unit_date系统自动生成的相关文件3.系统运行:1.欢迎:2.到达主界面后,提示登陆(系统管理—登陆系统)。用户可以查看帮助获得系统的相关信息:3.用户登陆界面:4.若用户为管理员,则可以进行用户管理 *** 作。用户有权添加、修改、删除其它用户。5.若用户为普通用户,则用户只能对自己的相关信息进行修改,添加用户、删除用户不可用。6.商品信息管理模块商品信息管理:用来管理系统中要用来进行进货,出货 *** 作的商品的信息,包括添加,修改,删除和查询信息。其中,查询可以进行精确查询和模糊快速查询。任意时刻,生成当前表格报表。7.营销分析模块:1).综合分析某一时间段内,将该超市的进货总额、出货总额进行统计,并算出总盈利;将库存中的商品总量统计出来。用户可以打印分析所得报表。同时提供进货情况查询、出货情况查询、库存情况查询。2).日分析某一天中,将该超市的进货总额、出货总额进行统计,并算出总盈利;将库存中的商品总量统计出来。用户可以打印分析所得报表。8.商品进出货 *** 作模块:1)进行进货 *** 作时,进货编号以及进货时间是自动生成的,无需改动,否则会出现错误。所生成的商品编号为该种类型商品的最大编号,且后面有提示用户允许的编号范围,超出此范围会出错,如果编号方式正确且大于最大编号,确定添加后会提示用户填写新加商品的相关信息。2)进行出货 *** 作时,出货编号自动生成,用记无须改动。在出货单价小于进货的最小单价时会询问是否继续出货,出货数量不能大于库存数量。9.信息查询模块:1).库存信息查询:用来查询库存的商品的信息,可以按照商品编号,商品名称和商品类别来查询,可以将查询结果打印输出。该查询可以精确查找某一确定的商品的库存信息,并将其打印输出。同时,该查询可以根据商品的库存量来将商品中库存不足、库存饱和、库存过剩的商品一一列出并提供打印输出功能。2).进货信息查询:用来查询商品的进货记录,可以按照商品编号,商品名称,商品类别,经手人和进货日期查询,可以将查询结果输出。该查询可以精确查找某一确定的商品或全部商品某一确定时间段的进货情况,并将其打印输出。同时以图表的形式分析该种商品的进货价格走势分析图。3).出货信息查询:用来查询商品的出货记录,可以按照商品编号,商品名称,商品类别,经手人和出货日期查询,可以将查询结果打印输出。该查询可以精确查找某一确定的商品或全部商品某一确定时间段的出货情况,并将其打印输出。同时以图表的形式分析该种商品的出货价格走势分析图。10关于系统模块:11.用户管理模块:1).用户添加该权限只有管理员拥有,可以添加临时用户,或者增设管理员用户。2).用户删除该权限只有管理员拥有,可以删除用户。3).用户密码修改用来修改登陆用户的密码,长时间地使用一个密码可能会使密码不安全,导致整个系统的不安全,因此有必要定期修改密码。12.退出系统模块:

#include<iostream>

#include<fstream>

#include<windows.h>

#include<stdlib.h>

using namespace std

void mainmenu()

void Manage_Book()

void input_Book()

void input_Reader()

void New_Book()

void Seek_Book()

void Borrow_Manage()

void Borrow_Book()

void Return_Book()

void Output_Message()

void Exit_System()

int u,v=3,k=0

struct Book

{

char name[20]

int booknumber

int num_present

int num_all

}book[1000]

struct Reader

{

char name[20]

int readernumber

int card

}reader[3]

void mainmenu()

{

int Num_Choice1,flag=1

system("color E")

for(k<=0k++)

{

input_Book()

input_Reader()

}

while(flag==1)

{

system("cls")

cout<<"\t\t\t◆◆◆◆◆主菜单◆◆◆◆◆"<<endl

<<"\t\t\t☆ 1.图书管理 ☆"<<endl

<<"\t\t\t☆ 2.借阅管理 ☆"<<endl

<<"\t\t\t☆ 3.输出信息 ☆"<<endl

<<"\t\t\t☆ 4.退出系统 ☆"<<endl

<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl

cout<<"请输入所需要的服务编码"<<endl

cin>>Num_Choice1

switch(Num_Choice1)

{

case 1:

Manage_Book()

break

case 2:

Borrow_Manage()

break

case 3:

Output_Message()

break

case 4:

Exit_System()

flag=0

break

default:

flag=0

cout<<"输入有误!!"<<endl

}

}

}

void Manage_Book()

{

int flag1=1,Num_Choice2

system("cls")while(flag1==1)

{

cout<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl

<<"\t\t\t☆ 1.新书入库 ☆"<<endl

<<"\t\t\t☆ 2.图书查询 ☆"<<endl

<<"\t\t\t☆ 3.返回主菜单☆"<<endl

<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl

cin>>Num_Choice2

switch(Num_Choice2)

{

case 1:

flag1=2

New_Book()

break

case 2:

flag1=2

Seek_Book()

break

case 3:

mainmenu()

default:

flag1=1

cout<<"输入有误!"<<endl

system("pause")

system("cls")

}

}}

void input_Book()

{

cout<<"请依照提示输入现有的三本图书的信息:"<<endl

for(int i=0i<3i++)

{

cout<<"书名:"<<endl

cin>>book[i].name

cout<<"书号:"<<endl

cin>>book[i].booknumber

cout<<"库存量:"<<endl

cin>>book[i].num_all

cout<<"现存量:"<<endl

cin>>book[i].num_present

}

}

void New_Book()

{

system("cls")

int j

char newbook_name[20]

cout<<"请输入新书书名:"<<endl

cin>>newbook_name

for(j=0j<1000j++)

{

if(strcmp(newbook_name,book[j].name)==0)

{

book[j].num_all++

book[j].num_present++

break

}

}

if(j==1000)

{

cout<<"请为此新书编号:"<<endl

v++

cin>>book[v].booknumber

strcpy(book[v].name,newbook_name)

book[v].num_all=1

book[v].num_present=1

}

else cout<<"已有此书,库存量加一"<<endl

system("pause")

}

void Seek_Book()

{

system("cls")

int k,booknumber

cout<<"请输入所要查询的书号:"<<endl

cin>>booknumber

for(k=0k<1000k++)

{

if(book[k].booknumber==booknumber)

{

cout<<"书号:"<<booknumber<<endl

cout<<"书名:"<<book[k].name<<endl

cout<<"库存量:"<<book[k].num_all<<endl

cout<<"现存量:"<<book[k].num_present<<endl

system("pause")

break

}

}

if(k==1000)

{

cout<<"未找到此书!!"<<endl

system("pause")

}

}

void Borrow_Manage()

{

int flag=1

system("cls")

int Num_Choice3

while(flag==1)

{

cout<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl

<<"\t\t\t☆ 1.借书登记 ☆"<<endl

<<"\t\t\t☆ 2.还书管理 ☆"<<endl

<<"\t\t\t☆ 3.返回主菜单☆"<<endl

<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl

cin>>Num_Choice3

switch(Num_Choice3)

{

case 1:

flag=2

Borrow_Book()

break

case 2:

flag=2

Return_Book()

break

case 3:

mainmenu()

default:

flag=1

cout<<"输入有误!!"<<endl

system("pause")

}

system("cls")

}

}

void input_Reader()

{

system("cls")

cout<<"请依照提示输入现有的三位读者的信息:"<<endl

for(int m=0m<3m++)

{

cout<<"姓名:"<<endl

cin>>reader[m].name

cout<<"编号:"<<endl

cin>>reader[m].readernumber

reader[m].card=0

}

}

void Borrow_Book()

{

system("cls")

char reader_name[20]

int n,book_number

cout<<"请输入读者姓名:"<<endl

cin>>reader_name

for(n=0n<3n++)

{

if(strcmp(reader_name,reader[n].name)==0)

{

if(reader[n].card!=0)

{

cout<<"已借书,不能再借,请按任意键返回"<<endl

system("pause")

mainmenu()

}

else

break

}

}

if(n==3)

{

cout<<"无此读者!输入有误!!按任意键返回主菜单"<<endl

system("pause")

mainmenu()

}

cout<<"请输入所借图书书号:"<<endl

cin>>book_number

for(n=0n<vn++)

{

if(strcmp(reader_name,reader[n].name)==0)

reader[n].card=book_number

}

for(n=0n<vn++)

{

if(book[n].booknumber==book_number)

{

if(book[n].num_present==0)

{

cout<<"该书已经被借完,请按任意键返回"<<endl

system("pause")

for(n=0n<vn++)

{

if(strcmp(reader_name,reader[n].name)==0)

reader[n].card=0

}

mainmenu()

}

else

{

book[n].num_present--

cout<<"借书成功,请按任意键返回"<<endl

system("pause")

break

}

}

}

if(n==v)

{

for(n=0n<vn++)

{

if(strcmp(reader_name,reader[n].name)==0)

reader[n].card=0

}

cout<<"所输入的书号不存在,请按任意键返回主菜单"<<endl

system("pause")

mainmenu()

}

}void Return_Book()

{

system("cls")

int j

char reader_name[20]

int book_number

cout<<"请输入读者姓名:"<<endl

cin>>reader_name

for(j=0j<3j++)

{

if(strcmp(reader_name,reader[j].name)==0)

break

}

if(j==3)

{

cout<<"无此读者!输入有误!!按任意键返回主菜单"<<endl

system("pause")

mainmenu()

}

cout<<"请输入所还图书书号:"<<endl

cin>>book_number

for(j=0j<3j++)

{

if(strcmp(reader_name,reader[j].name)==0)

{

if(book_number==reader[j].card)

{

reader[j].card=0

for(j=0j<vj++)

{

if(book[j].booknumber==book_number)

{

book[j].num_present++

cout<<"还书成功,请按任意键返回"<<endl

system("pause")

break

}

}

}

else

{

cout<<"该读者未借此书"<<endl

system("pause")

}

}

if(j==v)

cout<<"所输入的书号不存在:"<<endl

}

}

void Output_Message()

{

system("cls")

int q

cout<<"以下是图书信息"<<endl<<endl

for(q=0q<vq++)

{

cout<<"书号:"<<book[q].booknumber<<'\t'

cout<<"书名:"<<book[q].name<<'\t'

cout<<"库存量:"<<book[q].num_all<<'\t'

cout<<"现存量:"<<book[q].num_present<<endl

}

cout<<"以下是读者信息"<<endl<<endl

for(q=0q<3q++)

{

cout<<"姓名:"<<reader[q].name<<'\t'

<<"编号:"<<reader[q].readernumber<<'\t'

<<"所借书号:"<<reader[q].card<<endl

}

system("pause")

}

void Exit_System()

{

system("cls")

cout<<"欢迎下次使用,谢谢"<<endl

system("pause")

}

void main()

{

mainmenu()

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10036449.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存