真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【數(shù)據(jù)結(jié)構(gòu)課設(shè)】家譜管理系統(tǒng)(內(nèi)附源碼)-創(chuàng)新互聯(lián)

前言

家譜管理系統(tǒng)是數(shù)據(jù)結(jié)構(gòu)課程的一個經(jīng)典的課程設(shè)計,也算是一個比較龐大的程序了吧,寫出來還是蠻不容易的!分享出來希望能對大家有幫助!

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站制作、千山網(wǎng)絡(luò)推廣、小程序開發(fā)、千山網(wǎng)絡(luò)營銷、千山企業(yè)策劃、千山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供千山建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com目錄
  • 前言
  • 課設(shè)題目
  • 界面展示
  • 代碼實現(xiàn)
    • 自定義頭文件
    • 主函數(shù)
    • 菜單界面
  • 結(jié)語

課設(shè)題目

家譜管理系統(tǒng)
【問題描述】
實現(xiàn)具有下列功能的家譜管理系統(tǒng)
【功能要求】
(1)輸入文件以存放最初家譜中各成員的信息,成員的信息中均應(yīng)包含以下內(nèi)容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。
(2)實現(xiàn)數(shù)據(jù)的存盤和讀盤。
(3)以圖形方式顯示家譜。
(4)顯示第n代所有人的信息。
(5)按照姓名查詢,輸出成員信息(包括其本人、父親、孩子的信息)。
(6)按照出生日期查詢成員名單。
(7)輸入兩人姓名,確定其關(guān)系。
(8)某成員添加孩子。
(9)刪除某成員(若其還有后代,則一并刪除)。
(10)修改某成員信息。
(11)按出生日期對家譜中所有人排序。
(12)打開一家譜時,提示當(dāng)天生日的健在成員。
【基本要求】
建立至少30個成員的數(shù)據(jù),以較為直觀的方式顯示結(jié)果,并提供文稿形式以便檢查。
【界面要求】
有合理的提示,每個功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。
【存儲結(jié)構(gòu)】
學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計,但是要求相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。

界面展示

這里展示一小部分,其他的大家后期根據(jù)代碼慢慢了解
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

代碼實現(xiàn)

這個系統(tǒng)寫起來還是比較龐大的,需要定義很多函數(shù)來慢慢實現(xiàn),所以我們把所有需要用到的頭文件和函數(shù)的定義都存放在我自己定義的頭文件里面,這樣我們使用時,只需要導(dǎo)入我們自己定義的頭文件即可。

自定義頭文件

文件名為:Head_total.h

#define _CRT_SECURE_NO_WARNINGS
#include#include#include#include#include#define len 30


//日期-年月日
struct Date 
{int year;     
	int month;     
	int day;      
}; 

struct Info 
{int children_count;//孩子數(shù)-hzshu
	int alive;
	int alive_day;//活了多少日-ri
    int marry;//婚否-jiehun
	char name[20];//姓名 
	char birth_place[20];//出生地點 -birthplace[20]
	Date birth_date;//結(jié)構(gòu)date定義的出生日期 
	Date death_date;//結(jié)構(gòu)date定義的死亡日期 
	int sex;//性別 
	char wife_or_husband[20];//配偶
	char address[50];//家庭住址
	char resume[100];//簡歷
	
	//其他信息如下
	int height;//高度 
	char occupation[20];//職業(yè) 
	char education[20];//受教育程度 
	char parent_name[20];//父親姓名,用于添加節(jié)點時用 
	int Depth;//二叉樹深度,輸出二叉樹時用 
}; 


typedef struct CSNode 
{Info data;       //個人信息類型結(jié)構(gòu) 
	CSNode *first_child,*next_brother,*parent;   //csnode的第一個孩子節(jié)點,下一個兄弟節(jié)點,雙親節(jié)點
}*person; 


//定義鏈?zhǔn)疥犃薪Y(jié)點
typedef person QElemType;
typedef struct QNode
{QElemType data;
	struct QNode *next;
}QNode,*QueuePtr;


typedef struct {QueuePtr front,rear;
}LinkQueue;

//函數(shù)聲明
void start_up(person &T);//給結(jié)點置空
void main_menu(person &);//主菜單
int Create_familytree(person &,person &);//創(chuàng)建家譜樹
person find_name(person &,char Name[]);//按姓名查找指定成員函數(shù)
int birth_date(person &);//輸入出生日期
int death_date(person &); //輸入死者死亡日期
int judge_birth_date(person &);  //判斷出生日期是否在今天之前
int judge_death_date(person &); //判斷死亡日期死亡日期是否正確
void survival_day_sum(int &,int &,int &,int &,int &,int &);//計算生存天數(shù)

void level(person &); //計算每位家族成員的輩分
void level_every(person &);//計算一位家族成員的輩分
void sort(person &); //排序
void sort_every(person &);//為一個父親的孩子按出生日期排序
void add_new_member(person &);//添加成員函數(shù)  

void preserve(person &);//保存成員信息函數(shù)
void preserve_member(person &,FILE *);//保存一個成員信息函數(shù)
void preserve_family(person &,FILE *); //保存所有成員信息函數(shù)
int DeQueue(LinkQueue &,QElemType &);//出隊列操作
void InitQueue(LinkQueue &);//構(gòu)造一個空隊列
int QueueEmpty(LinkQueue );//判斷鏈?zhǔn)疥犃惺欠駷榭?void EnQueue(LinkQueue &,QElemType ); //進隊列操作

void start_correct(person &);//該函數(shù)的作用是每次從打開家譜,都會根據(jù)現(xiàn)在的時間重新計算活著的成員的壽命
void show(person &); //顯示家譜樹函數(shù)
void read_node(person &,FILE *);//從文件中讀取所有成員節(jié)點
void read_node_every(person &,FILE *); //從文件中讀取一個成員節(jié)點
void show_tree_member(person &);//每一個具體展現(xiàn)
void show_tree(person &);//把家譜成員姓名通過一個層次化的家譜樹顯示出來

void lookup(person &);//通過名字查找相應(yīng)的成員,并顯示其信息
void show_member(person &); //顯示一個成員所有信息的函數(shù)
void Delete(person &);//采用后續(xù)遍歷的方法刪除成員節(jié)點
void find(person &);  //通過關(guān)鍵字搜索家譜成員
int kmp(char str[], char ptrn[]); //KMP算法,用于搜索簡歷內(nèi)容
void member_message_num(person &);  //統(tǒng)計家譜成員信息函數(shù)
void relation(person &);
void QuickSort(person e[], int , int ); //快速排序算法,用于壽命排序
主函數(shù)

準(zhǔn)備工作結(jié)束之后,接下來看看主函數(shù)

主函數(shù)就是產(chǎn)生一個空結(jié)點,用于家族譜的判空操作,然后進入這個系統(tǒng)的主界面

#include "Head_total.h"

void main()        //主函數(shù)
{person T;
	T=(person)malloc(sizeof(CSNode));
	start_up(T);
	strcpy(T->data.name,"0");         //首先設(shè)置第一個節(jié)點的成員姓名為0,用于家族譜的判空操作
	main_menu(T);
	return;
}

void start_up(person &T)       //初始化,把指針置為空
{T->parent=NULL;
	T->first_child=NULL;
	T->next_brother=NULL;
	return;
}
菜單界面

接下來看看這個系統(tǒng)的主界面

它主要通過while循環(huán)與switch來實現(xiàn)功能,并且通過 SetConsoleTextAttribute()函數(shù)來控制控制臺窗口字體顏色和背景色,使界面更加優(yōu)美

原諒我調(diào)不出好看的顏色。。

#include "Head_total.h"

void main_menu(person &T)        //主菜單程序
{int j=1;
	char i;
	while (j)
	{system("cls");     //清屏
		HANDLE consolehwnd;
		consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE); 
		SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GREEN);    //設(shè)置屏幕字體顏色
		printf("\t"); 
		printf("\n\n\t              *******家譜管理系統(tǒng)課設(shè)版1.0*******    ");
		SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY  | FOREGROUND_BLUE);
		printf("\n\t\t---------------------------------------------\n\t");
		SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE); 		
		//printf("\t\t       家譜管理系統(tǒng)\n\t");
		printf("\t\t   0. 退出系統(tǒng)              \n\t");
		printf("\t\t   1. 新創(chuàng)建家譜樹          \t\n\t");
		printf("\t\t   2. 添加家譜成員          \t\n\t");
		printf("\t\t   3. 保存家譜信息到文件    \t\n\t");
		printf("\t\t   4. 從文件讀取顯示家譜    \t\n\t");
		printf("\t\t   5. 按姓名查找家譜成員    \t\n\t");
		printf("\t\t   6. 按關(guān)鍵字查找家譜成員  \t\n\t");
		printf("\t\t   7. 統(tǒng)計家譜成員          \t\n\t");
		printf("\t\t   8. 通過名字確定兩人關(guān)系  \t\n\t");
		SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY  | FOREGROUND_BLUE); 
		printf("\t---------------------------------------------\n\t");
		printf("\t請輸入你的操作(0~8):\n");
		i=getchar();
		fflush(stdin);//刷新緩沖區(qū),將緩沖區(qū)內(nèi)的數(shù)據(jù)清空并丟棄
		switch(i)
		{case '0':
			j=0;
			break;
		case '1':
			system("cls");     //清屏
			if(strcmp(T->data.name,"0")==0)
			{		printf("下面請輸入祖先的信息\n");
				person b;
				b=(person)malloc(sizeof(CSNode));
				start_up(b);
				if(Create_familytree(b,T))
				{T=b;
					level(T);
					sort(T);
					printf("\n\t        *****    家譜樹已建立完成    ***** \n\t");
				}
			}
			else
				printf("家譜樹已存在,要新建家譜樹請先刪除原有家譜樹!\n");
			
			fflush(stdin);
			printf("\n即將返回主菜單!\n");
			system("pause");          //程序運行到此處會暫停,等待鍵盤命令
			break;
		case '2':
			system("cls");     //清屏
			add_new_member(T);
			fflush(stdin);
			printf("\n即將返回主菜單!\n");
			system("pause");
			break;
		case '3':
			system("cls");     //清屏
			if(strcmp(T->data.name,"0"))
				preserve(T);
			else
				printf("家譜樹為空,無法保存!\n");
			fflush(stdin);
			printf("\n即將返回主菜單!\n");
			system("pause");
			break;
		case '4':
			system("cls");     //清屏
			show(T);
			fflush(stdin);
			printf("\n即將返回主菜單!\n");
			system("pause");
			break;
		case '5':
			system("cls");     //清屏
			lookup(T);
			fflush(stdin);
			printf("\n即將返回主菜單!\n");
			system("pause");
			break;
		case '6':
			system("cls");     //清屏
			find(T);
			fflush(stdin);
			printf("\n即將返回主菜單!\n");
			system("pause");
			break;
		case '7':
			system("cls");     //清屏
			member_message_num(T);
			fflush(stdin);
			printf("\n即將返回主菜單!\n");
			system("pause");
			break;
		case '8':
			system("cls");     //清屏
			relation(T);
			fflush(stdin);
			printf("\n即將返回主菜單!\n");
			system("pause");
			break;
		default:
			printf("你的操作有誤,請重新選擇!\n");
			fflush(stdin);
			system("pause");	
		}
	}
	return;
}
結(jié)語

因為代碼行數(shù)太多了,大概用2000多行,所以我就傳到文件上來了,點擊藍色字體可以直接到下載頁面。

【家譜管理系統(tǒng)】C/C++版本

如果對你有幫助或者你使用過程中出現(xiàn)了問題可以關(guān)注下面公眾號聯(lián)系我!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


新聞標(biāo)題:【數(shù)據(jù)結(jié)構(gòu)課設(shè)】家譜管理系統(tǒng)(內(nèi)附源碼)-創(chuàng)新互聯(lián)
文章路徑:http://weahome.cn/article/dejcss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部