数据结构课程设计图书管理系统及数据库课程设计-职工考勤管理信息系统_第1页
数据结构课程设计图书管理系统及数据库课程设计-职工考勤管理信息系统_第2页
数据结构课程设计图书管理系统及数据库课程设计-职工考勤管理信息系统_第3页
数据结构课程设计图书管理系统及数据库课程设计-职工考勤管理信息系统_第4页
数据结构课程设计图书管理系统及数据库课程设计-职工考勤管理信息系统_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

滨海学院数据库课程设计数据结构课程设计图书管理系统一需求分析该程序是模拟图书馆管理系统,实现图书采编入库、借书、还书、查询等基本业务。此程序规定:(1)管理员能够向系统中输入每种书的基本信息,包括书号、书名、作者、现存量和库存量、借阅记录,并保存记录;(2)用户(读者)能够按书号、书名、作者查询图书信息;(3)管理员能够实现图书采编入库(新购入一本书,经分类和确定书号之后登记到图书账目中去。如果这种书在帐中已有,则只将总库存量增加)、借阅(如果书的现存量大于0,则借出一本,登记借阅者的图书证号和归还期限)、归还(删除对借阅者的登记,改变该书的现存量)、销毁(将图书从账目中删除)等操作。二概要设计系统用到的抽象数据类型定义:1、ADTLinearList{数据元素:D={ai|ai∈D0,i=1,2,…,n,n≥0,D0为某一数据对象}关系:S={<ai,ai+1>|ai,ai+1∈D0,i=1,2,…,n-1}基本操作:InitList(L)DestroyList(L)ClearList(L)EmptyList(L)ListLength(L)Locate(L,e)GetData(L,i)InsList(L,i,e)DelList(L,i,&e)}ADTLinearList2、ADTString{数据对象:D={ai|ai∈CharacterSet,i=1,2,…,n;n≧0}数据关系:R={<ai-1,ai>|ai-1,ai∈D,i=2,…,n;n≧0}基本操作:StrAsign(S,chars)StrInsert(S,pos,T)StrDelete(S,pos,len)StrCopy(S,T)StrEmpty(S)StrCompare(S,T)StrLength(S)StrClear(S)StrCat(S,T)(10)SubString(Sub,S,pos,len)(11)StrIndex(S,pos,T)(12)StrReplace(S,T,V)(13)StrDestroy(S)}ADTString系统中的子程序和功能说明:InitBo(Book&boo);初始化图书信息InitRe(lend&Lin);初始化借阅者信息BinarySearch(Bookboo,charSearchNum[]);二分法查找比较书号Buy(Book&boo,charBuyNum[]);新书采编入库系统Delete(Book&boo,charDeleteNum[]);清除图书信息系统Borrow(Book&boo,lend&Lin,charBorrowNum[],charCaNum[]);借阅图书处理系统Return(Book&boo,lend&Lin,charReturnNum[],charBorrowerNum[]);归还图书系统SearchByNum(Book&boo,charSeaNum[]);按书号查找系统SearchByName(Book&boo);按书名查找系统SearchByAuth(Book&boo);按作者查询系统Menu();主菜单显示系统Search();查询系统子菜单main();主函数系统程序功能结构图图书馆管理系统图书馆管理系统图书信息录入查询图书信息处理图书信息基本信息借阅记录按书号查询按书名查询按作者查询图书采编入库图书借阅情况图书归还情况图书销毁情况三详细设计功能实现过程boolBinarySearch(Bookboo,charSearchNum[])//二分法查找比较书号{ while(low<=high) { 计算中间点; if(查找到书号相同的) { 返回值true; } if(查找书号不相同) 用二分法进一步进行查找; } if(库中没有所要查找的书) 返回值false;}voidBuy(Book&boo,charBuyNum[])/*采编入库*/{if(书库中有此书){总库存加1;现库存加1;}if(书库中无此书){for(i=total;i>mid&&total;i--)/*将新采购的书插在适合位置,保持有序*/空出插入位置;输入新购书籍的相关信息:书号、书名、作者、出版社;boo[i].next=NULL;total++;/*总量加1*/}}voidDelete(Book&boo,charDeleteNum[])/*清除图书信息*/{if(书库中没有此书)输出“无此书”;if(书库中有此书){strcpy(连续两本书的相关信息);现存量减1;库存量减1;}else输出“此书已有借阅者,无法删除!”;}voidBorrow(Book&boo,lend&Lin,charBorrowNum[],charCaNum[])/*借阅图书信息*/{if(没有找到此书)输出“书库中无此书!”;if(书库中有此书){借出一本书后,该书的现存量减1;并在借阅记录链表中插入该条记录;再对应读者信息记录链表,如果已有该读者证号信息,直接在该链表中插入此次借阅记录;如果无该读者证号信息,申请新单链表存放借阅记录。}else输出“该书现存量为0”}voidReturn(Book&boo,lend&Lin,charReturnNum[],charBorrowerNum[])/*归还图书信息*/{if(书库中无此书)输出“无此书记录”;if(书库中有此书){查找图书文件,修改图书的现存量;查找记录借阅信息的单链表,填入还书日期,删除借阅信息;查找记录读者信息的单链表,删除证号信息。}}voidSearchByNum(Book&boo,charSeaNum[])/*按书号查找*/{if(书库中无此书信息)/*用二分法查找*/输出“无此书”;else/*书库中有此书信息*/输出与此书有关的相关信息;}voidSearchByName(Book&boo)/*按书名查找*/{输入想要查找书的书名;用顺序查找法查找;if(查找到需要查找的书)输出与此书相关的信息;}建议画出主要模块流程图。四设计与调试分析1、这个程序设计中要注意定义两个结构体:图书结构体、借阅人结构体。其中定义数组存放图书信息,申请链表存放借阅记录和读者信息记录。2、程序中运用到大多的插入与删除,所以申请链表比较方便插入与删除。但应前期需求分析的准备工作不充分,导致程序运行功能不全,比如查找时关于此书的信息不能全部显示出来,并且添加删除时库存的变化不能直接显示出来。程序的健壮性不能达到预期的结果,这些都是需要改进的。3、在程序中的函数调用是个非常重要的部分,也是经常需要用到的,在编写程序过程中,因为函数调用不准确,使得循环进不去,后来改变函数的调用关系,才达到了预期结果。4、程序中还定义了全局变量,之前没定义全局变量,在下面的编写过程,同样性质的地方需要重复定义,比较麻烦,定义全局变量使得程序比较简明一点。五用户手册【使用说明】1、进入图书馆管理系统主页面2、若有新书要新编入库,选择1,进入新书入库系统,输入入库书的书号,若书库中无该书,则设立新书目,输入新书信息。若书库中已有该书,则输入新信息覆盖修改原书库中该书号对应书的信息。3、若有书籍信息需要删除,选择2,进入清空库存系统,输入想要删除书的书号,则此书信息就已删除。4、若要借阅图书,选择3,进入图书借阅系统,输入需要借阅书的书号以及读者证号,并输入还书日期,则借书成功。5、若要归还图书,选择4,进入图书归还系统,输入需要归还图书的书号以及读者证号,则还书成功。6、若要查找信息,选择5,进入查找信息子系统。若要按书号查找,则选择子系统中的1,输入需要查找的书的书号,若按书名查找,则选择子系统中的2,输入需要查找的书名,若按作者查找,输入需要查找书的作者进行查找,若查找结束,则按0退出。7、若系统使用结束,按0退出。【程序中的头文件】#include<stdio.h>#include<string.h>#include<stdlib.h>#defineMAXSIZE100#defineLIST_INIT_SIZE100intRetotal;/*定义的全局变量*/inttotal;六测试成果1、采编入库2、清空库存3、图书借阅4、图书归还5、图书查找七附录(源程序清单)#include<stdio.h>#include<string.h>#include<stdlib.h>#defineMAXSIZE100#defineLIST_INIT_SIZE100typedefstructBoro{ charBNum[20];charRetDate[8];structBoro*next;}Bor;typedefstructLinkBook{ Bor*next; charCNum[20];intTotal;}lend[LIST_INIT_SIZE];typedefstructLNode{ charCardNum[20]; structLNode*next;}LinkList;typedefstructbook{ charnum[20]; charname[20]; charauth[20]; charpub[20]; intTotNum; intNowNum; LinkList*next;}Book[MAXSIZE];intRetotal;inttotal;voidInitBo(Book&boo){ for(inti=0;i<MAXSIZE;i++) { boo[i].NowNum=0; boo[i].TotNum=0; boo[i].next=NULL; }}voidInitRe(lend&Lin){ for(inti=0;i<LIST_INIT_SIZE;i++) Lin[i].next=NULL;}intmid=0;boolBinarySearch(Bookboo,charSearchNum[]){ intlow=0,high=total; intfound=0; while(low<=high) { mid=(low+high)/2; if(strcmp(boo[mid].num,SearchNum)==0) { found=1; returntrue; } if(strcmp(boo[mid].num,SearchNum)!=0) high=mid-1; else low=mid+1; } if(found==0) returnfalse;}voidBuy(Book&boo,charBuyNum[]){ inti; if(BinarySearch(boo,BuyNum)) { boo[mid].TotNum++; boo[mid].NowNum++; printf("入库成功.\n"); printf("已更改书库中该书的信息。\n"); printf("编号:%s书名:%s",boo[mid].num,boo[mid].name); printf("作者:%s出版社:%s",boo[mid].auth,boo[mid].pub); printf("\n"); } if(!BinarySearch(boo,BuyNum)) { for(i=total;i>mid&&total;i--) boo[i]=boo[i-1]; printf("该书在书库中不存在,设立新书目!\n"); strcpy(boo[i].num,BuyNum); printf("该书购入的数量是:"); scanf("%d",&boo[i].NowNum); boo[i].TotNum=boo[i].NowNum; printf("该书的名字是:"); scanf("%s",&boo[i].name); printf("该书的作者是:"); scanf("%s",&boo[i].auth); printf("该书的出版社是:"); scanf("%s",&boo[i].pub); boo[i].next=NULL; total++; printf("已增加该书的信息!\n"); printf("编号:%s书名:%s",boo[i].num,boo[i].name); printf("作者:%s出版社:%s",boo[i].auth,boo[i].pub); printf("\n"); printf("入库成功.\n"); }}voidDelete(Book&boo,charDeleteNum[]){ if(BinarySearch(boo,DeleteNum)==false||total==0) printf("书库中没有该书.\n"); if(BinarySearch(boo,DeleteNum)) { if(!boo[mid].next) { intj; for(j=mid;j<total;j++) boo[j]=boo[j+1]; strcpy(boo[j].num,boo[j+1].num); strcpy(boo[j].name,boo[j+1].name); strcpy(boo[j].auth,boo[j+1].auth); strcpy(boo[j].pub,boo[j+1].pub); boo[j].TotNum=boo[j+1].TotNum; boo[j].NowNum=boo[j+1].NowNum; printf("已成功删除该书.\n"); } else printf("该书有借阅者,无法删除。\n"); }}voidBorrow(Book&boo,lend&Lin,charBorrowNum[],charCaNum[]){ Bor*p,*q; LinkList*m,*n; if(!BinarySearch(boo,BorrowNum)||total==0) printf("书库里没这书。\n"); if(BinarySearch(boo,BorrowNum)) { if(boo[mid].NowNum>0) { boo[mid].NowNum--; if(boo[mid].next==NULL) { m=(LinkList*)malloc(sizeof(LNode)); boo[mid].next=m; strcpy(m->CardNum,CaNum); m->next=NULL; } else { m=boo[mid].next; while(m->next) m=m->next; n=(LinkList*)malloc(sizeof(LNode)); m->next=n; strcpy(n->CardNum,CaNum); n->next=NULL; } inti=0; for(i=0;i<Retotal;i++) { if(!strcmp(Lin[i].CNum,CaNum)) { p=Lin[i].next; while(p->next)p=p->next; q=(Bor*)malloc(sizeof(Boro)); p->next=q; strcpy(q->BNum,BorrowNum); printf("输入归还日期:"); scanf("%s",&q->RetDate); q->next=NULL; printf("借阅成功.\n"); break; } } if(i==Retotal) { strcpy(Lin[i].CNum,CaNum); p=(Bor*)malloc(sizeof(Boro)); Lin[i].next=p; strcpy(p->BNum,BorrowNum); printf("输入归还日期:"); scanf("%s",&p->RetDate); p->next=NULL; Retotal++; printf("借阅成功.\n"); } } else printf("借阅失败.该书现在库存为0.\n"); }}voidReturn(Book&boo,lend&Lin,charReturnNum[],charBorrowerNum[]){ Bor*p,*q; LinkList*m,*n; intflag=0; if(!BinarySearch(boo,ReturnNum)||!total) printf("书库中无此书.\n"); if(BinarySearch(boo,ReturnNum)) { m=boo[mid].next; if(!strcmp(m->CardNum,BorrowerNum)) { boo[mid].NowNum++; boo[mid].next=m->next; free(m); } else { while(m->next) { if(!strcmp(m->next->CardNum,BorrowerNum)) { n=m->next; m->next=n->next; free(n); boo[mid].NowNum++; break; } m=m->next; } } } for(inti=0;i<Retotal;i++) { if(!strcmp(Lin[i].CNum,BorrowerNum)) { p=Lin[i].next; if(!strcmp(p->BNum,ReturnNum)) { Lin[i].next=p->next; free(p); printf("成功归还该书.\n"); flag=1; break; } else { while(p->next) { if(!strcmp(p->next->BNum,ReturnNum)) { q=p->next; p->next=q->next; free(q); printf("成功归还该书.\n"); flag=1; break; } p=p->next; } } } } for(intk=0;k<Retotal;k++) if(!Lin[k].next) { intj; for(j=k;j<Retotal;j++) Lin[j]=Lin[j+1]; strcpy(Lin[j].CNum,""); Retotal--; } if(flag==0) printf("无该证信息.\n");}voidSearchByNum(Book&boo,charSeaNum[]){ LinkList*p; p=boo[mid].next; if(BinarySearch(boo,SeaNum)==true) { printf("书号:%s\n",boo[mid].num); printf("书名:%s\n",boo[mid].name); printf("作者名:%s\n",boo[mid].auth); printf("出版社:%s\n",boo[mid].pub); printf("现存量:%s\n",boo[mid].NowNum); printf("库存量:%s\n",boo[mid].TotNum); printf("\n"); } else printf("对不起,未找到您想查找的书。\n");}voidSearchByName(Book&boo){ charSeaName[20]; printf("输入想查找的书的书名:\n"); scanf("%s",&SeaName); printf("此书存在!\n"); for(inti=0;i<total;i++) { if(strcmp(SeaName,boo[i].name)==0) { printf("编号:%s书名:%s",boo[i].num,boo[i].name); printf("作者:%s出版社:%s",boo[i].auth,boo[i].pub); printf("总库存量:%s",boo[i].TotNum); printf("现库存量:%s",boo[i].NowNum); printf("\n"); } } }voidSearchByAuth(Book&boo){ charSeaAuth[20]; printf("输入想查找的书的作者:\n"); scanf("%s",&SeaAuth); printf("找到符合该作者的书的详细信息如下:\n"); for(inti=0;i<total;i++) { if(strcmp(SeaAuth,boo[i].auth)==0) { printf("编号:%s书名:%s",boo[i].num,boo[i].name); printf("作者:%s出版社:%s",boo[i].auth,boo[i].pub); printf("\n"); } }}voidMenu(){ printf("图书馆管理系统\n"); printf("1.采编入库2.清空库存\n\n"); printf("3.图书借阅4、图书归还\n\n");printf("5.按要求查找0.退出\n\n");printf("请选择:");}voidSearch(){ charBNum[20]; BookBo; intk; printf("图书馆查询子系统\n"); printf("1、按书号查询2、按书名查找\n\n"); printf("3、按作者查询4、退出子系统\n\n"); printf("请选择:"); scanf("%d",&k); switch(k) { case1: printf("请输入书号:");//输入书号查找 scanf("%s",&BNum); SearchByNum(Bo,BNum); break; case2: SearchByName(Bo); break; case3: SearchByAuth(Bo); break; case4: exit(0); break; }}voidmain(){ BookBo;lendLin;charBNum[20]; charCNum[20];intchoice=10; while(choice!=0) { system("cls"); Menu();//显示菜单 scanf("%d",&choice); switch(choice) { case1://采编入库 printf("请输入入库的书的书号:"); scanf("%s",BNum); Buy(Bo,BNum); system("pause"); break; case2://清空库存 printf("请输入想要清除的书的书号:"); scanf("%s",BNum); Delete(Bo,BNum); system("pause"); break; case3://借阅 printf("请输入想要借阅的书的书号:\n"); scanf("%s",&BNum); printf("请输入图书证号:"); scanf("%s",&CNum); Borrow(Bo,Lin,BNum,CNum); system("pause"); break; case4://归还 printf("请输入想要归还的书的书号:\n"); scanf("%s",&BNum); printf("请输入图书证号:"); scanf("%s",&CNum); Return(Bo,Lin,BNum,CNum); system("pause"); break; case5: Search(); system("pause"); break; case0://退出系统 exit(0); break; default:printf("输入错误!\n");exit(0);break; } }}目录TOC\o"1-2"\h\z\u1概述 11.1设计背景 11.2研究目的 11.3理论基础的分析 21.4预期结果和意义 22需求分析 22.1功能需求 22.2数据流图 32.3功能模块图 42.4系统数据流程图 43概念结构设计 53.1局部E-R图 53.2整体E-R图 84逻辑结构设计 94.1关系模式 94.2数据关系图 95物理结构设计 105.1存储记录结构设计 105.2创建索引 126数据库实施 136.1建立数据库 136.2数据表的创建 136.3建立存储过程 166.4创建触发器 177数据库运行和维护 188结论 191概述1.1设计背景随着企业人事管理的日趋复杂和企业人员的增多,企业的考勤管理变得越来越复杂。规范的考勤管理是现代企业提高管理效益的重要保证,而传统的人工管理存在着效率低、不易统计、成本高和易出错等弊端,已经无法适应现代企业的需求。随着计算机技术和通信技术的迅速发展,将传统的人工考勤管理计算机化,建立一个高效率的、无差错的考勤管理系统,能够有效的帮助企业实现“公正考勤,高效薪资”,使企业的管理水平登上一个新的台阶。企业考勤管理经过如下的业务流程:(1)员工基本信息管理,添加,删除,更改(2)员工考勤管理,员工根据自己的班次在上下班时分别进行出勤操作,采用手动方式或者使用划卡机。由人事部门专门的人员管理出勤和退勤信息。(3)一般在每个月月初进行考勤汇总,汇总信息包括工作日的出勤情况、请假天数、出差天数、休假天数和不同性质的加班记录等。1.2研究目的待开发的系统的名称为企业职工在线考勤系统;我们以中小型企业的考勤管理业务为依托,结合科学管理的理论,设计并开发一个企业考勤管理信息系统,提供一个科学合理的考勤管理解决方案,彻底实现无纸化作业。根据管理权限的不同,将界面分为一般职员、部门经理、系统管理员和最高管理者四个层次,系统目标如下:(1)提供简单、方便的操作。(2)根据企业原来的考勤管理制度,为企业不同管理层次提供相应的功能。(3)通过考勤管理无纸化的实现,使企业的考勤管理更加科学规范。(4)节省考勤管理的成本。(5)提高企业考勤管理的透明度和效率,防止“虚假出勤“的现象。(6)对系统提供必要的权限管理。(7)为企业实现整体信息化的其他相关系统提供必要的数据支持。1.3理论基础的分析本设计利用sqlserver2012建立数据库,表格化存储,利用表的查询,连接,修改,删除数据等管理员工信息,对数据库设定必要的权限,只有经理具有权限能进行查看,修改数据。1.4预期结果和意义考勤系统能实现职工日考勤记录,记录请假信息,记录出差信息等功能,并最终所有信息归入月统计中去。本考勤系统建立了一个高效率的、无差错的考勤管理系统,能够有效的帮助企业实现“公正考勤,高效薪资”,使企业的管理水平登上一个新的台阶。需求分析2.1功能需求(1)数据管理功能是设置和管理基础数据,包括加班、请假类别的定义和班次的定义,在全县范围内可以进行基础数据的添加、删除和修改。(2)考勤管理包括出勤动作、出勤信息的查询;上级对下级员工的出勤信息的确认;生成考勤统计信息并可以根据指定的条件进行查询。实现从每日出勤到统计全部考勤信息的无纸化操作。为方便数据传递和查阅,要根据需求提供不同时间短的考勤统计信息表。(3)加班管理对员工的加班时间进行统计,记录开始时间和结束时间,对加班信息实现添加,删除等操作。(4)请假管理可以提出请假申请,并完善请假信息,如请假开始时间,请假结束时间,请假的次数进行管理。(5)出差管理管理者安排员工出差,对出差时间,次数的管理。2.2数据流图数据流图如图2.1所示加班请假请假信息职工加班请假请假信息职工加班信息加班信息 N N M M出差记录出差统计 M出差记录出差统计 M N N M出勤月统计出勤月统计出勤记录 N出勤记录2.1数据流图2.3功能模块图如图2.2所示,图为功能模块图职工考勤管理信息系统职工考勤管理信息系统员工基本信息出差记员工基本信息出差记录出勤记录请假记录月统计月统计加班记录2.2功能模块图2.4系统数据流程图如图2.3所示,图为数据流程图各种统计信息管理人员考勤员员工经理审批月度员工考勤统计请假、值班、出差记录上下班时间安排员工出勤记录记录出勤时间各种统计信息管理人员考勤员员工经理审批月度员工考勤统计请假、值班、出差记录上下班时间安排员工出勤记录记录出勤时间2.3数据流程图概念结构设计3.1局部E-R图(1)员工E-R图,如图3.1.1所示年龄姓名编号部门职工年龄姓名编号部门职工图3.1员工E-R图(2)图2.3.2为出勤E-R图部门职工编号下班时间缺勤记录上班时间出勤记录部门职工编号下班时间缺勤记录上班时间出勤记录图3.2出勤E-R图(3)图3.3为出差E-R图出差编号职工编号结束时间缺勤记录开始时间出差记录出差编号职工编号结束时间缺勤记录开始时间出差记录图3.3出差E-R图(4)加班E-R图如图3.4所示加班编号职工编号加班统计开始时间出勤记录加班编号职工编号加班统计开始时间出勤记录结束时间结束时间3.4加班E-R图(5)请假E-R图如图3.5所示请假编号编号结束时间请假统计开始时间请假记录请假编号编号结束时间请假统计开始时间请假记录3.5请假E-R图(6)月统计E-R图职工编号下班时间缺勤记录上班时间出勤记录职工编号下班时间缺勤记录上班时间出勤记录3.6月统计E-R图3.2整体E-R图如图3.7所示,图为整体E-R图结束时间结束时间3.7整体E-R图4逻辑结构设计4.1关系模式职工(职工编号,姓名,性别,年龄)出勤记录(职工编号,出勤编号,上班时间,下班时间,缺勤记录)出差记录(职工编号,出差编号,开始时间,结束时间,统计天数)加班信息(职工编号,加班编号,加班开始时间,加班结束时间,加班时间统计)请假信息(职工编号,请假编号,请假开始时间,请假结束时间,请假时间统计)月统计(职工编号,出勤月统计,出差月统计,加班月统计,请假月统计)4.2数据关系图如图4.2.1所示,在数据库中生成的关系图中,员工编号是员工信息表的主键,是其他表的外键。图4.1数据关系图5物理结构设计5.1存储记录结构设计在物理结构中,数据的基本存取单位是存储记录。有了逻辑结构以后,就可以设计存储记录结构,一个存储记录可以与多个逻辑记录相对应。存储记录就包括记录的组成,数据项的类型和长度等。在本图中5.1职工信息表主要包括职工编号,姓名,性别,年龄表5.1职工信息表列名说明字段类型约束控制w_id职工编号Char(4)主键w_name姓名Char(6)非空w_sex性别Char(2)‘男’或’女’w_age年龄Int非空w_degree职称char(4)非空在本表5.2中出勤记录包含职工编号,出勤编号,上班时间,下班时间,缺勤记录表5.2出勤记录表列名说明字段类型约束控制w_id职工编号Char(4)主键w_num出勤编号Int主键work_tim上班时间Datetime允许空end_tim下班时间Datetime允许空Work_note缺勤记录Datetime允许空在本图5.3中出差记录职工编号,出差编号,开始时间,结束时间,统计天数表5.3出差记录表列名说明字段类型约束控制w_id职工编号Char(4)主键Out_num出差编号Int主键Out_tim开始时间Datetime允许空Back_tim结束时间Datetime允许空Out_days统计天数Int允许空在本表5.4中加班记录表主要包含职工编号,加班编号,开始时间、结束时间。时间统计表5.4加班记录表列名说明字段类型约束控制w_id职工编号Char(4)主键Over_num加班编号Int主键Over_tim开始时间Datetime允许空Overend_tim结束时间Datetime允许空Over_days时间统计Int允许空在本表5.5中,请假记录表主要包括职工编号,请假编号,请假开始时间和请假结束时间组成。

表5.5请假记录表列名说明字段类型约束控制w_id职工编号Char(4)主键Off_num请假编号Int主键Off_tim请假开始时间Datetime允许空Offend_tim请假结束时间Datetime允许空Off_days统计天数Int允许空在本图5.6中月统计主要包括职工编号,出勤月统计,出差月统计,请假月统计,加班月统计表5.6月统计记录表列名说明字段类型约束控制w_id职工编号Char(4)主键Work_note出勤月统计Int非空Out_note出差月统计Int允许空Over_note加班月统计Int允许空Off_note请假月统计Int允许空5.2创建索引为mounth_note在w_id上创建唯一索引CreateindexM1onmounth_note(w_id)Go Execsp_helpIndexmounth_note6数据库实施6.1建立数据库CREATEDATABASEworkerON(NAME=worker_data,FILENAME='f:\worker.mdf',SIZE=3,FILEGROWTH=1)LOGON(NAME=worker_LOG,FILENAME='C:\worker_log.ldf',SIZE=1,MAXSIZE=50,FILEGROWTH=10%)6.2数据表的创建(1)如图6.1所示员工信息表(worker)CREATETABLEworker(W_idCHAR(4)CONSTRAINTworker_PrimPRIMARYKEY,w_nameCHAR(6)notnull,SEXCHAR(2)CONSTRAINTSEX_ChkCHECK(SEX='男'ORSEX='女')notnull,AGEINTnotnull,w_drgeeVARCHAR(4)NOTNULL,)图6.1员工信息表(2)如图6.2所示出勤记录表(work_note)CREATETABLEwork_note(W_idCHAR(4),w_numint,CONSTRAINTwork_note_PrimPRIMARYKEY(W_id,w_num),work_timdatetime,end_timdatetime,work_notedatetime,)图6.2出勤记录(3)如图6.3所示出差记录表(out_note)CREATETABLEout_note(W_idCHAR(4),out_numint,CONSTRAINTout_note_PrimPRIMARYKEY(W_id,out_num),out_timdatetime,back_timdatetime,out_daysint,)图6.3出差记录(4)如图6.4所示加班记录表(over_note)CREATETABLEover_note(W_idCHAR(4),over_numint,CONSTRAINTover_note_PrimPRIMARYKEY(W_id,over_num),over_timdatetime,overend_timdatetime,over_daysint,)图6.4加班记录(5)如图6.2.5所示请假记录表(off_note)CREATETABLEoff_note(W_idCHAR(4),off_numint,CONSTRAINToff_note_PrimPRIMARYKEY(W_id,off_num),off_timdatetime,offend_timdatetime,off_daysint,)图6.5请假记录(6)如图6.6所示月纪录表(mounth)CREATETABLEmounth_note(w_id

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论