文档库 最新最全的文档下载
当前位置:文档库 › 家谱管理系统

家谱管理系统

家谱管理系统
家谱管理系统

合肥师范学院(本科)

课程设计说明书

课程数据结构

题目

家谱管理系统

姓名马俊超徐润仙秦齐

学号

专业班级

指导教师

完成日期2012 年12 月27 日

1、绪言

1.1课题背景

家谱是记载同一姓氏血缘关系的世系、重要人物、个人事迹、家族历史为主要内容的谱籍,又称“族谱”、“家谱”、“家乘”,还有称作“谱碟”。家谱上可以追本溯源,缅怀先人,下可以辨明关系,联络宗亲,从而启孝梯心,唤德善之本,激励后人,奋发有为,其作用不可尽述。在社会方面,家谱对于海内外华人寻根认祖,增强民族凝聚力起着重要作用。在文史工作者,家谱是研究人口学、社会学、经济学、历史学、氏族学、人物传记,以及研究地方史乃是重要资料。在个人方面家谱又是每个公民身份证明之一。如有些族规有载,某人若不遵法纪,为非作歹者,击鼓鸣公,革出族外,不准入谱。可见家谱无论在社会在个人都起着重要作用。

1.2目的背景与意义

家谱的科学管理不但有助于民族文化和地方文化的发展,而且有其自身的积极意义。家谱文化作为国家的政治经济文化中心,若家谱管理能在广州得到应用,必会促进广州文化的发展,进一步推广应用,带动各地的文化事业作为计算机应用的一部分,使用计算机对家谱人员的各类信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。

1.3项目开发的目标

建立家谱管理系统,采用计算机对家谱中的人员信息进行管理,进一步提高办学效益和现代化水平。帮助人口的及时普查提高工作效率,实现我国人口管理工作流程的系统化、规范化和自动化。

2、系统需求分析

2.1问题描述

本课程设计正是以家谱管理为课题,力求通过设计并实现一个计算机软件,来支持对家谱的添加、更新、查询、修改等操作。

2.2功能要求

实现对一个家族的资料进行收集整理。

1、显示整个家族的信息;

2、实现添加成员的功能;

3、实现更新及修改成员的功能;

4、按姓名查找家谱中的某个成员。

2.3说明

①功能各方面越完善越好;

②自定义的数据结构使用数组,链表等,然后根据不同的数据结构,设计不同的函数。其中,修改算法使用按姓名查询修改的算法进行编写;

③若用数组,必须动态分配空间。

2.4输入输出的形式

本系统是一个学生信息管理系统,采用VC++6.0 编译器作为开发环境,这个环境是我们在学习C++的平台。输入数据类型主要是char、int等数据类型,输入内容包括:姓名、性别、配偶、子女等数据。用户在输入家族成员信息时要保证输入信息格式的正确性,系统不会自动检测输入的信息是否正确,输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,显示内容包括姓名、性别、配偶、子女等信息。

2.5开发环境

Visual C++不仅仅是是一个C++编译器,而是一个基于Windows操作系统的可视化集成开发环境IDE,这种环境开发出来的软件稳定性好、可移植性强,可以编制各种各样的Windows应用程序。

3、系统详细设计

3.1设计题目的内容

本题目适合于学生信息的简单管理。要求学生记录中包含学号、姓名、班级、学科总成绩等信息,程序具有数据录入、浏览、修改、删除、插入以及数据保存等功能。

本程序使用了定义结构体如:typedef struct student //定义一个结构体用来保存学生信息typedef struct stu_seqlist //定义一个顺序表用来保存数据。且编写了void AddNew(TreeNode * Tree);

//添加家族成员信息、void OutPutAll(TreeNode *Tree);

//输出家族成员信息、void Change(TreeNode * Tree);

//修改家族成员信息、void CreatTree(TreeNode *Tree);

//创建二叉树的运算,且使用了if else语句和for循环。并在主函数里使用了switch语句。

3.2设计题目的目的

本课题主要的目的是让我们通过这次课程设计更加了解C的应用,学习基本的思考过程,而不能仅仅学习程序的实现技巧。学会课本上学的内容使用在编写的程序中,还要学会写论文为毕业论文打好基础。

设计一个家谱管理系统,以便人们方便查询记录家谱信息。它使用循环语句和多分制语句来实现,充分体现C程序设计特点。

3.3设计题目的意义

随着人类进入信息科技时代,管理信息系统的开发和设计,则成了必然的发展要求,其重要性也是不可忽视的。管理工作的成败,取决于能否做出有效的决策,而决策的正确与否则在很大程度上取决于信息的质量。

让家谱更加深入人心,更好的服务与大家。

3.4设计题目的要求

(1)程序结构合理、算法准确、语法正确,并生成可执行文件。

(2)实现对一个家族的资料进行收集整理。1、显示整个家族的信息。2、实现添加成员的功能。3、实现更新及修改成员的功能。4、按姓名查找家谱中的某个成员。

(3)程序运行时显示一个简单的菜单。

3.5设计题目的主要任务(包含几大功能模块)

(1)添加功能:完成新家族成员信息的录入。

(2)输出功能:完成全部家族成员信息的显示。

(3)修改功能:完成家族成员错误信息的修改。

(4)插入功能:完成要插入的新的家族成员信息。

(5)退出系统。

3.6程序设计的流程图

3.7大概的模块设计

1、修改某人信息

本部分功能主要是对于建立家谱后对某些内容进行修改的代码,功能不是非常完整,只能通过姓名修改,但基本上能实现大部分内容。

对应函数代码如下:

void Change(TreeNode * Tree)

{

char name[20]; //定义名字为字符类型//

TreeNode * NewNode;

printf("\n\t请输入你要修改的人的信息:\n\t");

scanf("%s",name);

NewNode=SearchTree(Tree,name,20); //在家谱数中搜寻到该人的位置和信息//

if(NewNode==NULL)

{

printf("\n\n\t****该家谱图中没有%s这个人的信息请确认是否输入错误*****\n",name);

return;

}

else

{

SubMenue1(NewNode);

}

}

2、遍历并输出树中的内容:

本部分内容主要对建立家谱后输出整张家谱而写,能详细输出家谱每个人的信息。

函数代码如下:

void OutPutAll(TreeNode *Tree)

{

int i, flag=0;

printf("\n\t---****---***---***---***---***---***---***---***---***---");

printf("\n\t姓名:%s 性别:",Tree->Name);

if (Tree->Kind=='G'||Tree->Kind=='g')

{

flag=1;

printf("女");

}

else

printf("男");

if (!(Tree->NextNode[0]))

{

printf("\n\t至今没有配偶和子女\n");

return;

}

if(flag==1)

printf("\n\t丈夫姓名:%s",Tree->NextNode[0]->Name);

else

printf("\n\t妻子姓名:%s",Tree->NextNode[0]->Name);

for(i=1;i<=Tree->Num;i++)

{

printf("\n\t第%d个子女的姓名:%s 性别:",i,Tree->NextNode[i]->Name,Tree->NextNode[i]->Kind);

if

(Tree->NextNode[i]->Kind=='G'||Tree->NextNode[i]->Kind=='g')

printf("女");

else

printf("男");

}

printf("\n\t");

for(i=1;i<=Tree->Num;i++)

{

OutPutAll(Tree->NextNode[i]);

}

}

3、在树中经过遍历查找某个人

本部分内容用于查找家谱中某人的详细信息

函数代码如下:

TreeNode * SearchTree(TreeNode *Tree,char name[],int length)

{

int i;

TreeNode *NewNode;

if(strcmp(Tree->Name,name)==0)

{

if(length==0)

MATEFLAG=1;

else

MATEFLAG=0;

return Tree;

}

if(Tree->NextNode[0]==NULL)

return NULL;

for(i=0;i<=Tree->Num;i++)

{

if (i==0)

NewNode=SearchTree(Tree->NextNode[i],name,0);

else

NewNode=SearchTree(Tree->NextNode[i],name,20);

if (NewNode!=NULL)

return NewNode;

}

return NULL;

}

4、输出已经查找到的人的信息

本部分用于输出查到的人的具体信息包括姓名,性别,子女,父母,妻子等

对应代码如下:

void OutPutMessage(TreeNode * Tree,char name[],int length)

{

int flag=0,i;

TreeNode *NewNode;

printf("\n\n\t-----*----*----*----*----*----*----*----*----*----* ----");

if(Tree==NULL)

{

printf("\n\n\t****该家谱图中没有%s这个人的信息请确认是否输入错误*****\n",name);

return;

}

printf("\n\n\t您所要找的人已经找到信息如下所示:");

printf("\n\n\t姓名:%s\t性别:",name);

if (Tree->Kind=='G'||Tree->Kind=='g')

{

flag=1; //标记他(她)的性别

printf("女");

}

else

printf("男");

NewNode=Tree->Parent;

if (MATEFLAG==1)

{

if(flag==1)

{

printf("\n\n\t她是嫁入此间的所以父母信息不在家谱内包括");

printf("\n\t丈夫姓名:%s",NewNode->Name);

}

else

{

printf("\n\n\t他是入赘此间的所以父母信息不在家谱内包括");

printf("\n\t妻子姓名:%s",NewNode->Name);

}

if ((NewNode->Num)>0) //判断他(她)是否有孩子

{

printf("\n\t的孩子的信息如下:"); //输出他(她)的孩子的信息

for(i=1;i<=NewNode->Num;i++)

{

printf("\n\t姓名:%s 性别:",NewNode->NextNode[i]->Name);

if

(NewNode->NextNode[i]->Kind=='G'||NewNode->Kind=='g')

printf("女");

else

printf("男");

}

}

return;

}

if(NewNode==NULL) //判断它是不是根节点如果是的话就没有父母兄弟信息

printf("\n\t是这个家谱图里最顶端的人没有父母和兄弟姐妹信息!",name);

else

{

if (NewNode->Kind=='G'||NewNode->Kind=='g') //判断父亲节点是父亲还是母亲

{ //输出他(她)的父母亲的信息

printf("\n\t母亲姓名:%s",NewNode->Name);

printf("\n\t父亲姓名:%s",NewNode->NextNode[0]->Name);

}

else

{

printf("\n\t母亲姓名:%s",NewNode->NextNode[0]->Name);

printf("\n\t父亲姓名:%s",NewNode->Name);

}

if (NewNode->Num>1) //判断他(她)是否有兄弟姐妹

{ //输出他(她)的兄弟姐妹的信息

printf("\n\t%s的兄弟姐妹信息如下:",name);

for(i=1;i<=NewNode->Num;i++)

{

if(NewNode->NextNode[i])

printf("\n\t%s姓名:%s 性别:",NewNode->NextNode[i]->Name,NewNode->NextNode[i]->Name);

if

(NewNode->NextNode[i]->Kind=='G'||Tree->Kind=='g')

printf("女");

else

printf("男");

}

}

else

printf("\n\t%s没有兄弟姐妹!",Tree->Name);

}

if(Tree->NextNode[0]!=NULL) //判断他(她)是否有配偶

{ //输出他(她)的配偶的信息

if(flag==1)

printf("\n\t丈夫姓名:%s",Tree->NextNode[0]->Name);

else

printf("\n\t妻子姓名:%s",Tree->NextNode[0]->Name);

if (Tree->Num>0) //判断他(她)是否有孩子

{

printf("\n\t的孩子的信息如下:"); //输出他(她)的孩子的信息

for(i=1;i<=Tree->Num;i++)

{

printf("\n\t姓名:%s 性别:",Tree->NextNode[i]->Name);

if

(Tree->NextNode[i]->Kind=='G'||Tree->Kind=='g')

printf("女");

else

printf("男");

}

}

else

printf("\n\t%s至今还没有孩子",name);

}

else

printf("\n\t%s至今还没有配偶和孩子\n",Tree->Name);

}

5、新建家谱

运用了树的部分功能实现的

代码如下:

void CreatTree(TreeNode *Node)

{

int i;

TreeNode *NewNode;

NewNode=(TreeNode *)malloc(sizeof(TreeNode));

Node->NextNode[0]=NewNode;

Node->NextNode[0]=NULL;

//Node->Parent =NULL;

printf("\n\t请输入%s的子女的数目:\n\t",Node->Name);

scanf("%d",&(Node->Num));

printf("\n\t请输入%s的配偶的姓名:\n\t",Node->Name);

scanf("%s",NewNode->Name);

if((Node->Num)==0&&strcmp(NewNode->Name,"0")==0)

return ;

if (Node->Kind=='G'||Node->Kind=='g')

NewNode->Kind='B';

else

NewNode->Kind='G';

NewNode->Num=0;

NewNode->NextNode[0]=NULL;

Node->NextNode[0]=NewNode;

Node->NextNode[0]->Parent=Node;

for(i=1;i<=Node->Num;i++)

{

NewNode=(TreeNode *)malloc(sizeof(TreeNode));

printf("\n\t请输入%s的第%d子女的名字\n\t",Node->Name,i);

scanf("%s",NewNode->Name);

printf("\n\t请输入%s的第%d子女的性别女G男B:\n\t",Node->Name,i);

getchar();

scanf("%c",&NewNode->Kind);

NewNode->Num=0;

NewNode->Parent=Node;

Node->NextNode[i]=NewNode;

CreatTree(Node->NextNode[i]);

}

}4、系统的实现与调试

测试过程中的部分截图:

程序运行结果附图:

添加家谱成员:

查找成员:

修改成员信息:

输出整个家谱信息:

5、小结

通过这次大作业,体会很深刻,将一直以来学到的东西都运用到实际上来,学以致用,对所学知识有了更深刻的理解,同时还发现了许多平时在书本上没有遇见过的问题,促进了自己对知识的渴望,遇见了问题,就希望能够通过查找课外书来解决它们。刚接触题目的时候,自己就有了一定的想法,觉得这个程序做起来是问题不大的,但到了自己真正开始编程的时候却发现远远没有想象中那么简单,很多细节的问题没有预想到,很多关系的处理想得过于简单,以至于实施起来遇到了很大的困难,花了大量的时间。同时还有一个比较深刻的体会就是要尽量多在源码上作注释,以前编一些功能简单的程序,总能很清楚每个函数和每个变量的作用,但到了做这个大作业,由于分开了各个功能板块去实现,很多时候是做了后面就忘了前面,后来意识到这个问题,便开始在编程时加入注释,而且是越详细越好,这样做了以后,很多时候需要查看自己原来写的源代码,也能够很方便地了解了,跟上了思路,也方便以后的维护。

关于这个程序的缺点方面,由于自己花的时间不是很多,再加上知识有限,编写出来的界面不够友好,在功能上还是有不完善的地方,譬如说各项数据的统计还没有弄,数据的存储还不够理想等等。

对于这个程序的改进,我自己还是有不少想法的,因为怎么说都是自己亲手编制出来的程序,当然是希望尽善尽美。首先是需要加强数据的存储这方面的知识,使自己编写出来的程序能以一种标准的格式存储下来,方便以后其它程序的读取。

总的来说,通过这次作业,收获还是挺多的,也发现了不少的问题,并给自己以后的学习指引了方向,知道自己缺少哪方面的知识,需要补充哪些知识等等。自己将会以这次作业为契机,看更多编程方面的书籍,不断充实自己的知识库。

附录

#include

#include

#include

int MATEFLAG=0;

typedef struct TreeNode

{

int Num; //记录这个人拥有几个儿女char Name[20]; //记录这个人的姓名

char Kind; //标示节点的种类有女G男B struct TreeNode * NextNode[20]; //记录这个人的儿女

struct TreeNode * Parent; //记录这个节点的父节点

}TreeNode;

void CreatTree(TreeNode *Tree);

void OutPutAll(TreeNode *Tree);

TreeNode * SearchTree(TreeNode *Tree,char name[],int length);

void MainMenue(TreeNode *Tree);

void SubMenue1(TreeNode * Tree);

void SubMenue2(TreeNode *Tree);

void Change(TreeNode * Tree);

void AddNew(TreeNode * Tree);

void OutPutMessage(TreeNode * Tree,char name[],int length);

//主函数

void main()

{

TreeNode *Tree;

Tree=(TreeNode *)malloc(sizeof(TreeNode));

Tree->Parent =NULL;

strcpy(Tree->Name,"0");

MainMenue(Tree);

}

//添加新的成员

void AddNew(TreeNode * Tree)

{

SubMenue2(Tree);

}

//输出副菜单

void SubMenue2(TreeNode *Tree)

{

char c;

int num;

char name[20];

TreeNode * NewNode;

getchar();

while(1)

{

system("cls");

printf("\t");

printf("\n\n\t ---*****---请选择你的操作---****---

");

printf("\n\t---*---*---*---A:添加某个人的子女的信息---*---*---*---*---- ");

printf("\n\t---*---*---*---B:添加某个人配偶的信息-*---*---*---*---*---- ");

printf("\n\t---*---*---*---C:退出-*---*---*---*---*---*---*---*---*----\n\t");

c=getchar();

switch(c)

{

case 'A':

printf("\n\n\t请输入那个人的名字:\n\t");

scanf("%s",name);

Tree=SearchTree(Tree,name,20);

if(Tree==NULL)

{

printf("\n\n\t****该家谱图中没有%s这个人的信息请确认是否输入错误*****\n",name);

break;

}

if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree->Parent!=NULL &&Tree->Name!=Tree->Parent->NextNode[0]->Name)

{

printf("\n\n\t%s至今还没有配偶请先添加配偶",Tree->Name);

break;

}

if(Tree->Parent==NULL&&(Tree->Num>20||Tree->Num<0))

Tree->Num=0;

if(MATEFLAG==1)

Tree=Tree->Parent;

NewNode=(TreeNode *)malloc(sizeof(TreeNode));

printf("\n\n\t请输入添加人员姓名:\n\t");

scanf("%s",NewNode->Name);

printf("\n\n\t请输入添加人员性别女G男B:\n\t");

scanf("%1s",&NewNode->Kind);

num=Tree->Num;

NewNode->NextNode[0]=(TreeNode *)malloc(sizeof(TreeNode));

NewNode->NextNode[0]=NULL;

NewNode->Num=0;

NewNode->Parent=Tree;

Tree->NextNode[num+1]=NewNode;

Tree->Num=Tree->Num+1;

printf("\n\n\t-------------子女的信息添加成功----------------");

break;

case 'B':

printf("\n\n\t请输入那个人的名字:\n\t");

scanf("%s",name);

Tree=SearchTree(Tree,name,20);

if(Tree->Parent!=NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->N ame)==0||Tree->NextNode[0]!=NULL)

{

printf("\n\n\t已经有了配偶");

break;

}

if(Tree==NULL)

{

printf("\n\n\t****该家谱图中没有%s这个人的信息请确认是否输入错误*****\n",name);

break;

}

NewNode=(TreeNode *)malloc(sizeof(TreeNode));

printf("\n\n\t请输入添加人员姓名:\n\t");

scanf("%s",NewNode->Name);

printf("\n\n\t请输入添加人员性别女G男B:\n\t");

scanf("%1s",&NewNode->Kind);

NewNode->Parent=Tree;

Tree->NextNode[0]=NewNode;

break;

case 'C':

printf("\n\n\t----------------本项服务到此结束-----------------");

break;

case '\n':

break;

default:

printf("\n\n\t--------对不起!你的选择不在服务范围之内!--------- ");

printf("\n\t-----------请您再次选择所需的服务项!------------- ");

printf("\n\t------------------谢谢合作!----------------------\n\t");

break;

}

if (c=='C'||c=='c') //??

break;

printf("\n\n\t--------------请按Enter键继续操作--------------");

getchar();

getchar();

}

}

//修改某个人的信息

void Change(TreeNode * Tree)

{

char name[20];

TreeNode * NewNode;

printf("\n\t请输入你要修改的人的信息:\n\t");

scanf("%s",name);

NewNode=SearchTree(Tree,name,20);

if(NewNode==NULL)

{

printf("\n\n\t****该家谱图中没有%s这个人的信息请确认是否输入错误*****\n",name);

return;

}

else

{

SubMenue1(NewNode);

}

}

//输出副菜单

void SubMenue1(TreeNode * Tree)

{

char c;

int flag,i;

char name[20];

char Parent[2][20];

TreeNode * NewNode;

getchar();

while(1)

{

system("cls");

printf("\t");

printf("\n\n\t ---*****---请选择你的操作---****---

");

printf("\n\t---*---*---*---A:修改个人的信息---*---*---*---*---*---*---- ");

printf("\n\t---*---*---*---B:修改父母的信息---*---*---*---*---*---*---- ");

printf("\n\t---*---*---*---C:修改兄弟姐妹的信息---*---*---*---*---*---- ");

printf("\n\t---*---*---*---D:修改子女的信息---*---*---*---*---*---*---- ");

printf("\n\t---*---*---*---E:修改配偶的信息---*---*---*---*---*---*---- ");

printf("\n\t---*---*---*---F:退出-*---*---*---*---*---*---*---*---*----\n\t");

c=getchar();

switch(c)

{

case 'A':

printf("\n\n\t请输入修改的姓名:如果不需要修改就输入‘0’然后按Enter键继续\n\t");

scanf("%s",name);

if(strcmp(name,"0")!=0)

strcpy(Tree->Name,name);

printf("\n\n\t是否要修改性别:如果需要就输入'1'不需要修改就输入'0'然后按Enter键继续\n\t");

scanf("%d",&flag);

if (flag==1)

{

if(Tree->Kind=='G'||Tree->Kind=='g')

Tree->Kind='B';

else Tree->Kind='G';

}

printf("\n\n\t个人信息修改成功");

break;

case 'B':

if(Tree->Parent==NULL) //判断是不是头节点

{

printf("\n\t是这个家谱图里最顶端的人没有父母信息!",name);

break;

}

if (MATEFLAG==1) //判断是不是入赘或加入此间的

{

if(Tree->Kind=='G'||Tree->Kind=='g')

{

printf("\n\n\t她是嫁入此间的所以父母信息不在家谱内包括");

}

else

{

printf("\n\n\t他是入赘此间的所以父母信息不在家谱内包括");

}

break;

}

if(Tree->Parent->Kind=='G'||Tree->Parent->Kind=='g')

{

strcpy(Parent[0],"母亲");

strcpy(Parent[1],"父亲");

}

else

{

strcpy(Parent[0],"父亲");

strcpy(Parent[1],"母亲");

}

printf("\n\n\t请输入%s要修改的姓名:如果不需要修改就输入‘0’然后按Enter键继续\n\t",Parent[0]);

scanf("%s",name);

if(strcmp(name,"0")!=0)

strcpy(Tree->Parent->Name,name);

printf("\n\n\t请输入%s要修改的姓名:如果不需要修改就输入‘0’然后按Enter键继续\n\t",Parent[1]);

scanf("%s",name);

if(strcmp(name,"0")!=0)

strcpy(Tree->Parent->NextNode[0]->Name,name);

printf("\n\n\t-------------父母的信息修改成功----------------");

break;

case 'C':

NewNode=Tree->Parent;

if(NewNode==NULL) //判断是不是头节点

{

printf("\n\t是这个家谱图里最顶端的人没有兄弟姐妹信

息!",name);

break;

}

学生信息管理系统java课程设计(含源代码)

JAVA程序设计课程设计报告 课题: 学生信息管理系统 姓名: 学号: 同组姓名: 专业班级: 指导教师: 设计时间: 评阅意见: 评定成绩:

目录 一、系统描述 (2) 1、需要实现的功能 (3) 2、设计目的 (3) 二、分析与设计 (3) 1、功能模块划分 (3) 2、数据库结构描述 (4) 3、系统详细设计文档 (6) 4、各个模块的实现方法描述 (9) 5、测试数据及期望结果 (11) 三、系统测试 (16) 四、心得体会 (23) 五、参考文献 (24) 六、附录 (24)

一、系统描述 1、需求实现的功能 、录入学生基本信息的功能 学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入时,如果数据库已经存在该学号,则不能再插入该学号。 、修改学生基本信息的功能 在管理员模式下,只要在表格中选中某个学生,就可以对该学生信息进行修改。 、查询学生基本信息的功能 可使用“姓名”对已存有的学生资料进行查询。 、删除学生基本信息的功能 在管理员模式下,只要选择表格中的某个学生,就可以删除该学生。 、用户登陆 用不同的登录权限可以进入不同的后台界面,从而实现权限操作。 、用户登陆信息设置 可以修改用户登陆密码 2、设计目的 学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差、人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,

学生学籍管理系统(含java源代码)

学生学籍管理详细设计 学号:____________ 姓名:____________ 班级:____________ 一、设计题目: 学生学籍管理 二:设计内容: 设计GUI学生学籍管理界面,用户可以加入学生信息,并对基本信息进行修改,添加,查询,删除。 三:设计要求: 进行简单的学生信息管理。 四:总体设计 (1)登陆界面的设计 (2)主窗体的设计 (3)添加学生信息窗体 (4)查询学生信息窗体 (5)修改学生信息窗体 (6)删除学生信息窗体 (7)事件响应的处理 五:具体设计 (1)程序结构的说明: A.入口程序:; B.登陆界面程序:; C.主窗体程序:; D.添加信息窗口程序:; E.修改信息窗口程序:;

F.查询信息窗口程序:; G.删除信息窗口程序:; H.程序数据连接:; (2)程序代码及分析说明 A.程序源代码(已提交) 是程序的入口。使登录窗口位于窗口中间,并且不可改变窗口大小。 是程序的登陆窗体。输入用户名和密码(用户名和密码在数据库的password表中)点击“进入系统”,然后登陆界面消失;出现要操作的界面(屏幕左上角)。是添加信息界面。添加基本信息后,点击“添加信息”按钮,将信息加入xinxi 表中。 是修改信息界面。输入要修改的学号或姓名(两者数其一或全部输入),并输入所有信息,点击“修改信息”按钮(如果数据库中不存在此学号,则弹出对话框“无此学生信息”),若有则修改。 是删除信息界面。输入要删除的学生的学号,点击“删除信息”按钮,弹出确认删除对话框,即可删除该生信息。 是查询信息界面。输入要查询的学生学号,点击“信息查询”按钮,在相应的文本区里显示查询的信息。 H:源代码 ; import .*; etScreenSize(); Dimension frameSize=(); if> { =; } if> { =; } ( (true); } public static void main(String[] args) { try{ ()); } catch(Exception e) { (); } new student(); } }

数据结构家谱管理系统范本

数据结构家谱管理 系统

宁波大红鹰学院 信息工程学院 课 程 设 计 报 告 项目名 家谱查询系统 称: 白钰琦 项目组 长: 徐程凯、徐海域、项鸿伟 项目成 员: 10计科1班 班级名 称: 计算机科学与技术 专业名 称: 完成时间: 12月1日 信息工程学院制 目录 一、案例描述 ............................................................ 错误!未定义书签。 1、总体描述 ....................................................... 错误!未定义书签。 2、模块描述 ....................................................... 错误!未定义书签。

二、设计思路 ............................................................ 错误!未定义书签。 三、程序设计 ............................................................ 错误!未定义书签。 1、数据结构描述................................................ 错误!未定义书签。 2、主函数及其流程图........................................ 错误!未定义书签。 3、源程序 ........................................................... 错误!未定义书签。 四、调试与分析 ........................................................ 错误!未定义书签。 1、主菜单 ........................................................... 错误!未定义书签。 2、显示家谱信息................................................ 错误!未定义书签。 3、显示家谱中第n代人所有信息 .................... 错误!未定义书签。 4、按姓名查找某人并相应输出 ........................ 错误!未定义书签。 5、按出生日期查找家谱成员信息 .................... 错误!未定义书签。 6、为家谱中成员添加孩子信息 ........................ 错误!未定义书签。 7、为家谱中成员添加妻子信息 ........................ 错误!未定义书签。 8、删除家谱中成员及其后代信息 .................... 错误!未定义书签。 9、修改家谱中成员信息.................................... 错误!未定义书签。 10、确定家谱中两个成员关系 .......................... 错误!未定义书签。 11、按出生年月排序家谱 .................................. 错误!未定义书签。 五、设计总结 ............................................................ 错误!未定义书签。 1、完成情况 ....................................................... 错误!未定义书签。 2、心得体会 ....................................................... 错误!未定义书签。

家谱管理系统的源代码

#include #include #include #include struct per{ int data; char name[20]; char brith[20]; char marry; char address[20]; char live; char dietime[20]; char parent[20]; int generation; int child[10]; int numberchild; per(){ for(int i=0;i<20;i++) name[i]='\0'; for(i=0;i<20;i++)

brith[i]='\0'; for(i=0;i<20;i++) address[i]='\0'; for(i=0;i<20;i++) dietime[i]='\0'; for(i=0;i<10;i++) child[i]=0; for(i=0;i<20;i++) parent[i]='\0'; live='\0'; marry='\0'; data=-10; generation=0; numberchild=0; } }; void setupinfo(per person[]); void display(per person[],int&); void displayhome(per person[],int&); void displayinfo(per person[],int&); void namesearch(per person[],int&);

实验室质量手册和程序文件的编写

实验室质量手册和程序文件的编写 李正东(原中国计量科学研究院教授)编 1质量管理的原则 1.1 以顾客为关注焦点 1.1.1 概述 质量管理的主要关注点是满足顾客要求并且努力超越顾客期望。 1.1.2 理论依据 组织只有赢得和保持顾客和其他有关的相关方的信任才能获得持续成功。 1.2 领导作用 1.2.1 概述 各级领导建立统一的宗旨和方向,创造全员积极参与的条件,实现组织的质量目标。1.2.2 理论依据 统一的宗旨和方向的建立,以及全员的积极参与,能够使组织将战略、方针、过程和资源保持一致,以实现其目标。 1.3 全员参与 1.3.1 概述 在整个组织内各级人员的胜任、被授权和积极参与,是提高组织创造和提供价值能力的必要条件。 1.3.2 理论依据 为了有效和高效的管理组织,各级人员得到尊重并参与其中是极其重要的。通过表彰、授权和提高能力,促进在实现组织的质量目标过程中的全员积极参与。 1.4 过程方法 1.4.1 概述 将活动作为相互关联、功能连贯的过程系统来理解和管理时,可更加有效和高效的得到一致的、可预知的结果。 1.4.2 理论依据 质量管理体系是由相互关联的过程所组成。理解体系是如何产生结果的,能够使组织尽可能地完善其体系和绩效。 1.5 改进 1.5.1 概述 成功的组织持续关注改进。 1.5.2 理论依据 改进对于组织保持当前的绩效水平,对其内、外部条件的变化做出反应并创造新的机会都是非常必要的。 1.6 循证决策 1.6.1 概述 基于数据和信息的分析和评价的决策,更有可能产生期望的结果。 1.6.2 理论依据 决策是一个复杂的过程,并且总是包含一些不确定因素。它经常涉及多种类型和来源的输入及其解释,而这些解释可能是主观的。重要的是理解因果关系和可能的非预期后果。对事实、证据和数据的分析可导致决策更加客观、可信。 1.7 关系管理

家谱管理系统1(1)

《软件综合设计》 家谱管理系统 院系:计算机科学技术学院二系 班级:计11 – 2班 姓名:刘文秀(15) 合作者:姜雪(05) 、岳奉宜(33) 指导教师:薛曼玲 2013 年 12 月 01 日

《软件综合设计》任务书 一、题目:家谱管理系统 二、设计要求 (1)刘文秀(组长)、姜雪和岳奉宜组成课程设计小组。 (2)小组成员分工协作完成。要求每个成员有自己相对独立的模块,,同时要了解其他组员完成的内容。 (3)查阅相关资料,自学具体课题中涉及到的新知识。 (4)采用结构化、模块化程序设计方法设计,功能要完善,界面美观。 (5)所设计的系统应有菜单、动画和音乐。 (6)按要求写出课程设计报告,并于设计结束后1周内提交。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求分析、总体设计、详细设计、程序的调试与测试、总结与体会、结束语、程序清单(带中文注释)、参考文献等。报告一律用A4纸打印,正文的中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。1级标题中文字体为黑体,西文字体为Time New Roma,采用三号字;段落为居中、段前18磅、段后12磅、行距采用“固定值”18磅,首行缩进:无,段中不分页,与下段同页。仅一级标题上目录。 三、课程设计工作量 由于是设计小组团结协作完成设计任务,一般每人的程序量在400行有效程序行以上,不得抄袭。 四、课程设计工作计划 2013年12月2日,指导教师讲课,学生根据题目准备资料,需求分析; 2013年12月3日,设计小组进行总体方案设计和任务分工; 2013年12月4日~2013年12月10日,每人完成自己承担的程序模块并通过独立编译; 2013年12月11日~12日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行; 2013年12月13日,验收、开始撰写课程设计报告; 2013年12月18日前,提交课程设计报告和软件。 指导教师签章: 教研室主任签章

实验室管理程序

实验室管理程序 1目的 为了确保实验室具备所从事检测和校准活动的能力,健全实验室管理,以提供及时、准确、公正、严谨的服务,特制定本程序。 2范围 本程序适用于产品(性能)实验室、精密检测实验室、校准、理化实验室的范围、程序、人员要求、过程控制及外委过程的确定。 3术语 3.1实验室:检验、检测和校准的设施,可包括但不限于化学、冶金、尺寸、物理、电子或可靠性的测试。 3.2检验:通过观察和判断,适当时结合测量、试验所进行的符合性评价。 3.3检测:按照规定的程序,为确定给定的产品、材料、设备、生物组织、物理现象、工艺或服务的一种或多种特性的技术操作。 3.4校准:在规定条件下,为确立计量仪器或计量系统的示值或实物量具所代表的值与相对应的被计量的已知值之间关系的一组操作。 3.5实验室范围:包括以下内容的受控文件: ?实验室有资格开展的具体测试、评估和校验 ?开展上述活动的所需的设备清单 ?开展上述活动的方法和标准清单 3.6实验室认可:权威机构给予某实验室具有执行规定任务能力的正式承认。3.7非标准试验:指国际标准、国家标准、行业标准、地方标准中没有规定的试验方法。主要是指本企业自己确定的试验方法。 4职责 4.1产品工程处为本程序主管部门,负责产品(性能)试验室的管理。 4.2质量保证处计量检测中心负责产品检测及校准和理化实验室的管理。 4.3铸造分厂负责本单位实验室的管理。 4.4人力资源处负责实验室试验、检验人员的培训、建档工作。 5内容 5.1工作流程

责任部门 管理策划处 工业工程组 各实验室 人力资源处各实验室各实验室 各实验室 各实验室 实验室 各实验室 各实验室 各实验室 各实验室发展规划处各实验室采购供应处各实验室0 1 02 03 04 05 06 07 08 09 10 1 1 12 13 流程图输出文件 实验室编制和岗位描述,组 织机构图 质量方针 人员名单和技术档案 试验项目清单 标准设备清单,标准清单,标准物 质清单 试验标准清单 文件记录目录借阅记录 非标准试验规程确认记录 测量不确定度分析报告 试验设施环境的需求报告,实验 室环境监试测 检测设备采购立项申请 设备档案,维护计划,维护记录 使用维护说明书

学生信息管理系统程序

. C语言上机实践报告 专业:冶金工程 班级:冶金1102 姓名: 学号: 任课教师:丽华 时间:2012年8月

一、题目 学生信息管理系统设计 ●学生信息包括:学号,姓名,年龄,性别,出生年月,地址,,E-mail等。 ●试设计一学生信息管理系统,使之能提供以下功能: a)系统以菜单方式工作 b)学生信息录入功能(学生信息用文件保存)---输入 c)学生信息浏览功能---输出 d)查询、排序功能---算法 (1) 按学号查询 (2) 按姓名查询 e)学生信息的删除与修改(可选项) 一、系统功能模块结构图

二、数据结构设计及用法说明#include"stdio.h" #include"stdlib.h" #include"string.h" /*定义结构体用作创建链表*/ typedef struct z1 { char no[11]; //学生学号 char name[15]; //学生姓名 int age; //学生年龄 char sex; //学生性别 char birthday[8]; //学生出生年月char address[20]; //学生住址 char tel[12]; //学生联系 char e_mail[20]; //学生e-mail struct z1 *next; //指向下一链表}STUDENT; /*声明用户自定义函数*/ STUDENT *init();

STUDENT *create(); STUDENT *del(STUDENT *h); STUDENT *insert(STUDENT *h); STUDENT *revise(STUDENT *h); void print(STUDENT *h); void search1(STUDENT *h); void search2(STUDENT *h); void save(STUDENT *h); int menu_select(); void inputs(char *prompt,char *s,int count); /*主函数,用于选择功能*/ void main() { STUDENT *head; head=init(); //初始化链表表头 for(;;) { switch(menu_select()) { case 0:head=init();break; //初始化 case 1:head=create();break; //创建列表

数据结构家谱管理系统

//////////////////////////////////////////////////////////// /////////////////// //题目:家谱资料管理 //要求:家谱用于记录某家族历代家族成员的情况与关系。现编制一个家谱资料管理软件, //实现对一个家族所有的资料进行收集整理。支持对家谱的增加,删除,更新,统计等。 //////////////////////////////////////////////////////////// /////////////////// #include #include #include int MATEFLAG=0; typedef struct TreeNode

int Num; //记录这个人拥有几个儿女 char Name[20]; //记录这个人的姓名 char Kind; //标示节点的种类有女G男B struct TreeNode * NextNode[20]; //记录这个人的儿女struct TreeNode * Parent; //记录这个节点的父节点 }TreeNode; void CreatTree(TreeNode *Tree); void OutPutAll(TreeNode *Tree); TreeNode * SearchTree(TreeNode *Tree,char name[],int length); void MainMenue(TreeNode *Tree); void SubMenue1(TreeNode * Tree); void SubMenue2(TreeNode *Tree); void Change(TreeNode * Tree); void AddNew(TreeNode * Tree);

教师课程管理系统(c++课程设计源代码)

#include #include #include #include #include #include using namespace std; using std::string; class ke; ostream&operator<<(ostream&dist,ke&k); istream&operator>>(istream&sour,ke&k); class teacher; ostream&operator<<(ostream&dist,teacher&t); istream&operator>>(istream&sour,teacher&t); class ke { protected: static int keID; string keName; char keJB; int keXS; int keJC; int keBH; public: ke(string name="未命名的课程",char jb='0',int xs=0,int jc=0,int bh=0); void show(); friend ostream&operator<<(ostream&dist,ke&k); friend istream&operator>>(istream&sour,ke&k); int getkeJC(){return keJC;} string getkeName(){return keName;} }; int ke::keID=0; ke::ke(string name,char jb,int xs,int jc,int bh) { keID++; bh=keID; keName=name; keJB=jb; keXS=xs; keJC=jc; keBH=bh; } void ke::show() {

(完整word版)家谱管理系统

洛 阳 理 工 学 院 课 程 设 计 报 告 课程名称 ___________________________________ 设计题目 ___________________________________ 专 业 ___________________________________ 班 级 ___________________________________ 学 号 ___________________________________ 姓 名 ___________________________________ 完成日期 ___________________________________ 数据结构课程设计 家谱管理系统 计算机科学与技术 B150405 B15080822 宋士龙 2016年12月30日

课程设计任务书 设计题目:家谱管理系统 设计内容与要求: 【问题描述】:实现具有下列功能的家谱管理系统 1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。 2). 实现数据的存盘和读盘。 3). 显示家谱。 4). 按照出生日期查询成员名单。 5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 修改某成员信息。 【基本要求】: 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。 测试数据:要求使用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。 测试数据及测试结果请在上交的资料中写明。 指导教师:_______________ 年月日 课程设计评语 成绩: 指导教师:_______________ 年月日

家谱管理系统(含源代码)

家谱管理系统——C语言(数据结构) 目的和要求:树形结构是一种非常重要的非线性结构,它用于描述数据元素之间的层次关系,人类家谱是树形结构的典型体现,通过此项训练让学生掌握树形结构的知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历,和二叉树相关的一些运算;要求完成家谱信息的录入和保存,任意成员的查找及某一成员祖先、子孙、兄弟、堂兄弟的查找。 排答疑和辅导。 完整代码: #include #include #include int MATEFLAG=0; //是否入赘或嫁入这家的,1表示为是,0表示否 typedef struct TreeNode//树节点定义 { int Num; //保存此人儿女个数 char Name[20]; //保存此人姓名 char Kind; //保存此人性别,男M,女F struct TreeNode * NextNode[20]; //保存此人的儿女,NextNode[0]里存放配偶的地址struct TreeNode * Parent; //保存此节点的父节点 }TreeNode; void CreatTree(TreeNode *Tree);//创建树 void OutPutAll(TreeNode *Tree);//输出树 TreeNode * SearchTree(TreeNode *Tree,char name[],int length); void MainMenu(TreeNode *Tree); void SubMenue1(TreeNode * Tree); void SubMenue2(TreeNode *Tree); void Change(TreeNode * Tree); void AddNew(TreeNode * Tree); void OutPutMessage(TreeNode * Tree,char name[],int length); //主函数 void main() { TreeNode *Tree;//产生根节点 Tree=(TreeNode *)malloc(sizeof(TreeNode)); Tree->Parent =NULL; strcpy(Tree->Name,"0"); MainMenu(Tree);//显示主菜单 } //添加新的成员 void AddNew(TreeNode * Tree) { SubMenue2(Tree);//添加新成员界面 } //显示添加家庭信息的界面

C语言程序设计——学生信息管理系统

C语言课程设计 姓名:徐宗博 学号:************ 班级:061092 指导教师:曹老师 2011 年 6 月25 日

目录 第一章:实习内容 1.1实习内容简介 (2) 1.2程序代号说明 (3) 第二章:程序流程图 第三章:函数模块介绍 3.1读取文件、存储文件 (6) 3.2 管理系统模块 (8) 3.3 恢复区系统模块 (12) 3.4 功能展示 (12) 第四章:实习总结 (16) 第五章:实习体会 (17) 附录: 参考文献 (19) 源代码 (19)

第一章:实习内容 1.1实习内容简介 题目:学生通讯录管理系统 要求:1.可实现信息的添加、删除,可按学号、姓名查询; 2.学生信息必须包含学号、姓名、学院、专业、籍贯。地址、电话号码; 3.必须有注释。 日期:2011年6月20日至27日,共8个半天。 地点:信息楼301 指导老师:曹雪莲 完成情况: 1.程序可完成信息的添加,可按学号、姓名分别查询; 2.程序可按姓名、学号分别删除,并在删除前显示删除学生的全部信息;按姓名删除, 若出现同名情况,会依次出现系统提示是否删除,可选择删除或跳过; 3.在程序文件夹中有一“学生信息库”的txt文件,可查看学生系统里全部学生信息; 4.设置有一个恢复区系统,可输出、查询删除的信息,并在可同文件夹中“删除信息库” 的txt文件中查看删除信息; 总体结构如下:

1.2程序代号说明 此外,局部变量的含义比较固定:

第二章:程序流程图程序流程图:

本次实习我的思路就是,先从二进制文件中读取信息,形成链表,对链表进行基本操作,如输出、添加、删除、查找。程序结束时将链表保存在二进制文件和文本文件中。 管理系统流程图: 运行管理系统部分时,先从文件“information.xls”中读取数据(若无该文件则创建文件),构建链表;后续操作都是对于链表进行操作,如添加、查找、删除、输出等;离开该部分时则保存链表里的信息到已存在的“information.xls”,并以ASCII形式存储至“学生信息库.txt”,方便检查。

家谱管理系统设计报告样本

目录 第一章绪论............................................................... 错误!未定义书签。第二章需求分析........................................................... 错误!未定义书签。 2.1题目...................................................................... 错误!未定义书签。 2.2设计任务.............................................................. 错误!未定义书签。 2.3数据测试.............................................................. 错误!未定义书签。第三章概要设计....................................................... 错误!未定义书签。 3.1 设计思想 ........................................................ 错误!未定义书签。 3.2 实现方法 ........................................................ 错误!未定义书签。第四章详细设计....................................................... 错误!未定义书签。 4.1功能构想.............................................................. 错误!未定义书签。 4.2界面设计.............................................................. 错误!未定义书签。 4.3增加成员.............................................................. 错误!未定义书签。 4.3.1 添加子女 .................................................... 错误!未定义书签。 4.3.2 添加配偶 .................................................... 错误!未定义书签。 4.4修改成员.............................................................. 错误!未定义书签。 4.4.1修改个人信息............................................. 错误!未定义书签。 4.4.2修改父母信息............................................. 错误!未定义书签。 4.4.3修改兄弟姐妹的信息................................. 错误!未定义书签。 4.4.4修改子女的信息......................................... 错误!未定义书签。第五章调试分析....................................................... 错误!未定义书签。

IATF16949体系文件S5.02 实验室管理程序

有限公司文件编号QP.S5.02 实验室管理程序IATF 16949:2016修订次数 A.0 制·修订 日期 [发布日期]

1、目的 为了确保内部实验室能按照规定的程序准确、及时地完成本实验室工作范围的检验、试验或校准服务,从而保证产品符合规定要求,特制订本程序。 2、范围 本程序规定了内外部实验室管理办法及要求,适用于本公司和委托外部实验室进行的所有产品检测和试验。 3、术语和定义 本程序引用ISO 9001:2015的术语和定义;其他: 3.1 实验室:进行检验、试验和校准的设施,其范围包括但不限于化学、金相、尺寸、物理、电性能或可靠性试验。 3.2 外部试验室:依据ISO/IEC17025或国家等效文件获得认可的,用于检验、试验或校准服务的外部/商业/独立的实验室。 4、职责 4.1. 技术部:负责内部实验室的管理,编制或提供试验大纲、试验标准、产品试验计划,以及所 有检测和试验的抽样、试验或委托试验。 4.2. 实验室:负责按要求进行试验,提供产品检测试验报告。

5、工作流程 负责部门输入流程输出方法说明 技术部 实验室资质要求 实验人员资质要求 R.S5.02.01. 实验室范 围清单 组织机构 上岗证 执行标准、作业要求等 -实验室范围,包括检验、试验和 校准服务的能力 -组织机构、执行标准(国际/国 家)、工作要求、工作程序以及必 要的作业指导书、实验室环境等 -实验室操作人员必须经过培训, 具备一定的实践经验,并持有上 岗证 技术部实验室手册 R.S5.02.02. 新产品开 发试验计划 R.S5.02.03. 年度产品 试验计划 -新产品试验:产品从开发至顾客 批准前的所有试验;按照新产品 开发试验计划安排试验 -常规试验:产品在批量投产后对 产品和零部件检验指导书中规定 的试验项目所进行的试验 -型式试验:产品在批量投产后为 验证生产过程中产生的产品变差 而进行全性能定期试验;按年度 产品试验计划安排试验;客户有 要求的按客户要求进行试验 -工艺试验:产品在批量投产后, 为验证生产过程中的质量改进而 进行的试验,以提供改进依据内部实验室资质 实验分类及策划 新产品试验型式试验 常规试验型式试验 是否内部 实验? C Y N 2/6

学生管理系统(界面+源代码)

内蒙古信息工程系 学实训报告 系部:信息技术系 课程名称:网站网页制作 专业班级:14计算机网络技术一班姓名:xxx 任课老师:xxx

左侧主要运用了TreeView控件,然后用户信息运用了GridView控件,链接数据源,在页面中展示用户信息,主要代码:

数据结构家谱管理系统报告书

数据结构大作业说明文档 一、题目的选择 这次数据结构的大作业,我的选题是家谱管理系统的设计与实现。由于平时疏于编程——针对我得个人实际——我把主要的目标定位在完成家谱管理系统得基本要求。(基本要求大纲中有,就不浪费版面了) 二、设计的思路 接到这个题目,我的总体设计思路是先为程序搭建好一个结构框架,再跟据时间的宽裕程度和其它的要求逐步增强程序的性能。 关于IO的设计: 考虑到题目要求家谱信息以树形的形式一次读入内存,而个人的各种资料现在虽然条目不多,但随着程序的升级,以后可能变得越来越大。我把树形结构和个人信息记录的文档分为两个文件保存在外存中,一个文件串行化地记录家谱树的结构信息,保存少量个人信息作为识别标志;另一个文件保存完整的个人信息,所有的个人信息以线性记录的方式记录在其中。当程序运行要读入家谱结构时,只读入保存少量记录的文件并建立起树形结构。索引时,以树形中的少量信息为依据在另一个文件中找到全部的各人信息资料。 这样的好处主要有两点: 1. 由于树形结构是串行化记录于外存,一个节点记录多次,信息大量冗余,如果树形节点中保留全部信息,必将造成大量的空间浪费;只保存作为索引的少量信息在树形结构中,节约了空间。 2. 由于结构的精简,在家谱初始化时读入内存需要的时间相应减少,节约了装载时间。 这样做存在的问题: 每次执行修改,添加,删除,查询时都要直接访问外存来取得或写入数据。内外存访问上的巨大时间差的存在,使得进行这些操作相对来说并不显得很高效。 关于树形的结构: 在树形结构的选择上,根据实际中多子女的现象选择一般树,考虑到家谱中成员可能存在的不定成员数问题,抛弃了以数组为基础的一般树方案,决定用链表来实现。 树形结构的外存保存。为了提高效率,树形结构在程序初始化时由外存文件一次读入内存,此后不管插入还是修改,删除都不再对外存的树结构保存文件进行操作,只在内存中处理,程序退出时对外存树结构文件进行一次更新。也就是说,不管在程序运行中中对家谱结构进行多少种,多少次的操作,外存的树结构文件始终只会被程序访问两次。

C语言程序设计——教室管理系统(源代码))

C语言程序设计——教室管理系统(源代码) 非常有用的。 #include #include #include #define szSTR 64 #define fileDB "c:\\contact.txt" struct CONTACT { char num[szSTR];/*教室编号*/ char site[szSTR];/*教室位置*/ char snum[szSTR];/*座位数*/ char tv[szSTR];/*有无多媒体*/ char use[szSTR];/*是否可用*/ }; typedef struct CONTACT CON; #define ANUM 1 #define ASITE 2 #define ASNUM 3 #define ATV 4 #define AUSE 5 #define BFULL 0xFF int OPER[6] = {BFULL, ANUM, ASITE, ASNUM, ATV,AUSE}; void input(CON * s, int mask) { if(mask & ANUM) { printf("请输入教室编号:"); scanf("%s", s->num); } if(mask & ASITE) { printf("请输入教室位置:"); scanf("%s", s->site); } if(mask & ASNUM) { printf("请输入座位数:"); scanf("%s", s->snum); } if(mask & ATV){printf("请输入是否有多媒体(有/Y*无/N):");scanf("%s",s->tv);} if(mask & AUSE) { printf("请输入是否可用(可/Y*否/N):"); scanf("%s", s->use); } }/*end input*/ void show (int id, CON * s) { if(!s) return ; if(id) printf("%d\t%s\t\t%s\t%s\t\t%s\t\t%s\n", id, s->num , s->site , s->snum , s->tv,s->use );

家谱管理系统.doc

家谱管理系统 。洛阳科技学院课程设计报告数据结构课程设计课程名称_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _家谱管理系统设计主题_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _计算机科学与技术专业_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ b 150405班级_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ b 15080822学校编号_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _宋世龙的姓氏是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x XXX,2006年12月30日。完成日期_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 家谱管理系统设计的内容和要求; [问题描述] 以下内容: 实现了具有以下功能的家谱树管理系统1)。输入一个文件,将每个成员的信息保存在原始家谱中,每个成员的信息应包括以下内容: 姓名、出生日期、婚姻状况、地址、生活状况和死亡日期(如果

相关文档