数据库说明书 数据库设计说明书中的数据字典应该如何编写啊
大家好,如果您还对数据库说明书不太了解,没有关系,今天就由本站为大家分享数据库说明书的知识,包括数据库设计说明书中的数据字典应该如何编写啊的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
什么是程序设计说明书
开发人员:黄涛学号:2004551425计算机3班
开发日期:2006年2月22日
版本:————
程序功能:建立一个简单的学生管理系统,存储的学生信息至少包括:班级,学号,姓名,各个科目的成绩.能够完成的功能至少有:输入,查询,修改,删除学生信息,计算学生的平均成绩,名次,按某个科目的成绩排序输出.注意:只能采用文件形式管理,不得采用现成的数据库管理.
开发环境:程序在Visual c++ 6.0下开发,编译工具为Vc 6.0,操作系统为Windows XP.
数据结构和算法:本程序包含数个函数,且用链表存储信息,每个节点包含一个学生的信息.
本程序中有两种结构体:
typedef struct student{ typedef struct score{
char name[MAX+1];/*学生姓名*/ char name[MAX+1];/*学生姓名*/
int num;/*学生学号*/ int aver;/*学生成绩*/
char class[MAX+1];/*班级*/ struct score*next;/*指向后继节点*/
int Chinese;/*语文成绩*/}Sco,*SCO;
int English;/*英语成绩*/
int math;/*数学成绩*/
int computer;/*计算机成绩*/
struct student*next;/*指向后继节点*/
}Stu,*STU;
程序流程图如下:
*****主程序流程图*****
主要函数功能说明
函数原型:STU insert();功能:插入学生信息
入口参数:无出口参数:无返回值:无
函数原型:STU xiugai();功能:修改学生信息
入口参数:无出口参数:无返回值:无
函数原型:STU shanchu();功能:删除学生信息
入口参数:无出口参数:无返回值:无
函数原型:STU find();功能:查找学生信息
入口参数:无出口参数:无返回值:无
函数原型:int xianshi();功能:显示文件内容
入口参数:无出口参数:无返回值:无
函数原型:int eaverage();功能:计算学生名次
入口参数:无出口参数:无返回值:无
函数原型:int chinese();功能:语文成绩
入口参数:无出口参数:无返回值:无
函数原型:int english();功能:英语成绩
入口参数:无出口参数:无返回值:无
函数原型:int math();功能:数学成绩
入口参数:无出口参数:无返回值:无
函数原型:int computer();功能:计算机成绩
入口参数:无出口参数:无返回值:无
函数原型:void fresh();功能:清屏
入口参数:无出口参数:无返回值:无
——————————说明书结束——————————————————
——————源程序————————
#include
#include
#include
#include
#include
#define LEN sizeof(struct student)
#define NEM sizeof(struct score)
#define MAX 8
typedef struct student{/*学生信息节点*/
int num;
char class[MAX+1];
char name[MAX+1];
int chinese;
int english;
int math;
int computer;
struct student*next;
}Stu,*STU;
typedef struct score{
char name[MAX+1];
float aver;
struct score*next;
}Sco,*SCO;
struct score stud[1000];
FILE*fp;
void print()/*清屏*/
{ system("cls");
printf("\t\t\t--学生成绩管理系统--\n");
printf("creat(建立文件模型)\t");
printf("insert(插入学生信息)\t");
printf("xiugai(修改学生信息)\t\n");
printf("find(查找学生信息)\t");
printf("fresh(清屏)\t");
printf("shanchu(删除学生信息)\t\n");
printf("xianshi(显示文件内容)\t");
printf("eaverage(计算学生平均成绩和名次)\t\n");
printf("chinese(语文课程排序)\t");
printf("english(英语课程排序)\t");
printf("math(数学课程排序)\t");
printf("computer(计算机课程排序)\t");
printf("quit(退出)\t\n");
}
void cin(STU p1)
{printf("请输入姓名:");
scanf("%s",p1->name);
printf("学号:");
scanf("%d",&p1->num);
printf("班级:");
scanf("%s",p1->class);
printf("请输入成绩:\n");
printf("语文:");
scanf("%d",&p1->chinese);
printf("英语:");
scanf("%d",&p1->english);
printf("数学:");
scanf("%d",&p1->math);
printf("计算机:");
scanf("%d",&p1->computer);
}
STU creat(void)/*创建函数模型*/
{ STU head,p1,p2;
char ch;
int i=1,k=0;
p1=p2=(STU)malloc(LEN);
while(i)
{
k++;
if(k==1)
head=p1;
else
{p2->next=p1;
p2=p1;}
printf("Do you Want to Continue yes or no");
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
{ i=0;
p1->next=NULL;}
else
{p1=(STU)malloc(LEN);
cin(p1);}
}
printf("信息输入完毕.");
Indat(head);
}
Indat(STU p){/*把链表中的信息存入到文件*/
if((fp=fopen("stulist","wb"))==NULL)
{printf("can not open file!\n");
return;
}
while(p!=NULL)
if(fwrite(p,LEN,1,fp)!=1)
{printf("file write error\n");
break;}
else
p=p->next;
printf("写入完毕!");
fclose(fp);
}
STU Outdat()/*把文件中的信息放入到链表*/
{ STU head,p1,p2,p4;
while((fp=fopen("stulist","rb"))==NULL);
printf("cannot open infile!\n");
p4=p2=p1=head=(STU)malloc(LEN);
while(1)
{ if(fread(p1,LEN,1,fp)!=1)
{printf("读出完毕!");
p4->next=NULL;
free(p1);
fclose(fp);
return(head);
}
p1=(STU)malloc(LEN);
p2->next=p1;
p4=p2;
p2=p1;
}
}
find(){/*查找学生的信息*/
char name[10];
int b=0;
STU p3;
p3=Outdat();
printf("请输入您要查询信息的用户名:\n");
scanf("%s",name);
while(p3)
if(strcmp(name,p3->name)!=0)
p3=p3->next;
else
{ printf("这是您要查询的信息!\n");
printf("%s\t%d\t%s",p3->name,p3->num,p3->class);
printf("语文:");printf("%d\t",p3->chinese);
printf("英语:");printf("%d\t",p3->english);
printf("数学:");printf("%d\t",p3->math);
printf("计算机:");printf("%d\t",p3->computer);
b=1;printf("信息输出完毕!\n");
break;
}
if(b==0)
printf("对不起!没有与您要查的相关信息!");
}
STU insert()/*插入学生信息*/
{ STU p1,p2,p3,head;
int i=1;
char ch;
p3=Outdat();
head=p3;
p1=(STU)malloc(LEN);
printf("请输入要插入的学生信息!\n");
cin(p1);
while(i)
{ if(p3->next==NULL)
{ p1->next=NULL;
p3->next=p1;
}
else
{p1->next=p3->next;
p3->next=p1;}
printf("Do you Want to Continue yes or no");
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
i=0;
else
{ p1=(STU)malloc(LEN);
printf("请输入要插入的学生信息!\n");
cin(p1);
}
Indat(p3);}
return(head);
}
STU xiugai()/*修改学生信息*/
{ char name[10];
STU head,p3;
int b=0;
p3=Outdat();
head=p3;
printf("请输入您要修改信息的用户名:\n");
scanf("%s",name);
while(p3)
if(strcmp(name,p3->name)!=0)
p3=p3->next;
else
{printf("这是您要修改的信息!\n");
printf("%s\t%d\t%s",p3->name,p3->num,p3->class);
printf("语文:");
printf("%d\t",p3->chinese);
printf("英语:");
printf("%d\t",p3->english);
printf("数学:");
printf("%d\t",p3->math);
printf("计算机:");
printf("%d\t",p3->computer);
b=1;
printf("信息输出完毕!\n");
printf("请输入您的新信息!\n");
cin(p3);
Indat(head);
return;
}
if(b==0)
printf("对不起!没有您要查的相关信息!");
}
STU shanchu()/*删除学生信息*/
{char name[10];
STU head,p1,p3;
char ch;
int b=0;
p3=Outdat();
head=p3;
printf("请输入您要查询信息的用户名:\n");
scanf("%s",name);
while(p3)
if(strcmp(name,p3->name)!=0)
{p1=p3;
p3=p3->next;
}
else
{ printf("这是您要删除的信息!\n");
printf("%s\t%d\t%s",p3->name,p3->num,p3->class);
printf("语文:");
printf("%d\t",p3->chinese);
printf("英语:");
printf("%d\t",p3->english);
printf("数学:");
printf("%d\t",p3->math);
printf("计算机:");
printf("%d\t",p3->computer);
b=1;
printf("信息输出完毕!\n");
printf("您确实想删除以上信息吗!yes or no\n");
ch=getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
{ p1->next=p3->next;
free(p3);
printf("信息删除完毕!\n");
Indat(head);
return;
}
}
if(b==0)
printf("对不起!没有与您要查的相关信息!");
}
xianshi()/*显示文件中的所有信息*/
{ STU p;
p=Outdat();
while(p!=NULL)
{printf("%s\t%d\t%s",p->name,p->num,p->class);
printf("语文:");
printf("%d\t",p->chinese);
printf("英语:");
printf("%d\t",p->english);
printf("数学:");
printf("%d\t",p->math);
printf("计算机:");
printf("%d\t\n",p->computer);
p=p->next;
}
printf("这是所有信息!");
}
eaverage()/*计算学生的平均成绩和名次*/
{STU p3,head;
float a;
char ch;
int i, b=0,j=1;
char name[10];
SCO L,L1,L2;
p3=Outdat();
head=p3=p3->next;
L=L1=(SCO)malloc(NEM);
while(p3)//复制链表;
{ L2=L1;
a=(p3->chinese+p3->english+p3->math+p3->computer)/4;
L2->aver=a;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);//while
while(j)
{L1=L2=L;
i=1;
printf("请输入您要查的用户名!\n");
scanf("%s",name);
while(L1)
if(strcmp(name,L1->name)!=0)
L1=L1->next;
else
{printf("用户已被找到!\n");
b=1;
while(L2)
if(L1->aver>L2->aver||L1->aver==L2->aver)
L2=L2->next;
else
{ i++;
L2=L2->next;}
printf("此学生的成绩情况是:\n");
printf("%s\t平均分是%f",L1->name,L1->aver);
printf("第%d名!",i);
break;
}
if(b==0) printf("对不起!没有与您要查的相关信息!");
printf("您是否还想继续 yes or no!");
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
j=0;
}
return;
}
chinese()/*语文成绩排名*/
{STU p3,head;
SCO L,L1,L2;
int k,max,j;
p3=Outdat();
p3=p3->next;
head=p3;
max=0;
j=0;
L=L1=(SCO)malloc(NEM);
while(p3)
{ L2=L1;
L2->aver=p3->chinese;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);
while(L)
{ p3=head;
max++;
while(p3)
if(L->aver>=p3->chinese)
p3=p3->next;
else
{j++;
p3=p3->next;
}
strcpy(stud[j].name,L->name);
stud[j].aver=L->aver;
L=L->next;
}
printf("语文成绩情况:\n");
for(k=0;knext;
head=p3;
max=0;
j=0;
L=L1=(SCO)malloc(NEM);
while(p3)
{ L2=L1;
L2->aver=p3->english;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);
while(L)
{ p3=head;
max++;
while(p3)
if(L->aver>=p3->english)
p3=p3->next;
else
{j++;
p3=p3->next;
}
strcpy(stud[j].name,L->name);
stud[j].aver=L->aver;
L=L->next;
}
printf("英语成绩情况:\n");
for(k=0;knext;
head=p3;
max=0;
j=0;
L=L1=(SCO)malloc(NEM);
while(p3)
{ L2=L1;
L2->aver=p3->math;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);
while(L)
{ p3=head;
max++;
while(p3)
if(L->aver>=p3->math)
p3=p3->next;
else
{j++;
p3=p3->next;
}
strcpy(stud[j].name,L->name);
stud[j].aver=L->aver;
L=L->next;
}
printf("数学成绩情况:\n");
for(k=0;knext;
head=p3;
max=0;
j=0;
L=L1=(SCO)malloc(NEM);
while(p3)
{ L2=L1;
L2->aver=p3->computer;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);
while(L)
{ p3=head;
max++;
while(p3)
if(L->aver>=p3->computer)
p3=p3->next;
else
{j++;
p3=p3->next;
}
strcpy(stud[j].name,L->name);
stud[j].aver=L->aver;
L=L->next;
}
printf("计算机成绩情况:\n");
for(k=0;k printf("%s%f\n",stud[k].name,stud[k].aver);
printf("成绩输出完毕!");
}
void main()/*主函数*/
{ STU p;
int j;
print();
while(1)
{
printf("Enter choice:");
scanf("%d",&j);
if(j13)
{
printf("Enter num from 1 to 13:\n");
exit(1);
}
switch(j)
{case 1:
creat();
break;
case 2:
insert();
break;
case 3:
xiugai();
break;
case 4:
find();
break;
case 5:
print();
break;
case 6:
shanchu();
break;
case 7:
xianshi();
break;
case 8:
eaverage();
break;
case 9:
chinese();
break;
case 10:
english();
break;
case 11:
math();
break;
case 12:
computer();
break;
case 13:
exit(1);
break;
}
scanf("%d",&j);
}
}
————————————用户使用手册——————————
程序功能:建立一个简单的学生管理系统,存储的学生信息至少包括:班级,学号,姓名,各个科目的成绩.能够完成的功能至少有:输入,查询,修改,删除学生信息,计算学生的
平均成绩,名次,按某个科目的成绩排序输出.
完成日期:2006年2月22日
版本:———
运行环境:Windows XP
版权人:黄涛学号:2004551425计算机3班
硬件要求:486以上机器,32M以上RAM,32M硬盘空间
本人保留所有版权.
使用方法:打开文件目录下的可执行文件即可运行程序,程序运行时,屏幕上会显示13个备选的键,每个键都可以完成一个操作,如:插入,删除,修改,学生信息,计算成绩等等······
注意:在使用本程序之前请认真阅读手册.
***********************************************
数据库设计说明书中的数据字典应该如何编写啊
数据字典:关于数据的信息集合。也就是对数据流图中包含的所有元素的定义的集合
数据字典的内容:
1.由对下列四类元素的定义组成:
(1)数据流
(2)数据流分量(数据元素)
(3)数据存储
(4)处理
(注:本书所指主要是由对数据的定义组成)
2.除数据定义外,数据字典还应包括:
记录数据元素的下述信息
(1)一般信息(名字,别名,描述)
(2)定义(数据类型,长度,结构)
(3)使用特点(值的范围,使用频率,使用方式,输入/输出/本地条件值等)
(4)控制信息(来源,用户,使用它的程序,改变权,使用权等)
(5)分组信息(父结点,从属结构,物理位置——记录,文件和数据库等)
三、数据的定义方法:
数据字典中的定义:
就是对数据自顶向下的分解,分解到不需要进一步定义为止。
数据元素组成数据的方式:
(1)顺序:以确定次序连接两个或多个分量
(2)选择:从两个或多个可能的元素中选取一个
(3)重复:把指定的分量重复零次或多次
(4)可选:一个分量是可有可无的
3.在数据字典中建议使用下列符号:
(1)=:等价于(定义为)
(2):和(连接两个分量)
(3)[]:或(从方括弧内列出的若干个分量中选择一个)
(4)():可选(圆括弧里的分量可有可无)
四、数据字典的用途
数据字典最重要的用途是作为分析阶段的工具
有助于改进分析员,发小组之间的通信。
有助于改进不同开发人员,不同开发小组之间的通信
有助于要求所有开发人员根据公共数据字典描述数据和设计模块,避免许多麻烦口问题
2.数据字典是开发数据库的第一步。
五、数据字典的实现:
三种常见的途径:
全人工过程(数据字典卡片)
全自动化过程(利用数据字典处理程序)
混合过程
六、数据字典应具有的特点:
通过名字能方便地查阅数据的定义
没有冗余
尽量不重复在规格说明的其他组成部分中已经出现的信息
容易更新和修改
能单独处理描述每一个数据元素的信息
定义的书写方法简单、方便且严格
产生交叉表、错误检测、一致性校验等
数据库设计说明书,由谁编写,写给谁看
开发团队
如果你们对于数据库和应用程序的开发有分工的话,那么所有关于数据库方面的都有数据库那边的人写,如果没有分工,就你们自己写
存档的目的一个是便于团队之间的沟通,再一个就是方便事后对程序或者数据库进行修正\升级等,会有一定记录来告诉你数据库中各个表\字段等都是什么含义,以及他们之间的关系,尤其对一些年久失修的应用程序来说,就不用全部看代码了
关于数据库说明书的内容到此结束,希望对大家有所帮助。