等离子割 |
合 肥 师 范 学 院 (本 科) |
课程设计说明书 |
课 程 | 数据结构 | |
题 目 | | |
姓 名 | 马俊超 徐润仙 秦 齐 | |
学 号 | | |
专业班级 | | |
指导教师 | | |
完成日期 | 铁水预处理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')