国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于單鏈表實現(xiàn)通訊管理系統(tǒng)!(有完整源碼!)

這篇具有很好參考價值的文章主要介紹了基于單鏈表實現(xiàn)通訊管理系統(tǒng)!(有完整源碼!)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

基于單鏈表實現(xiàn)通訊管理系統(tǒng)!(有完整源碼!),C語言實戰(zhàn)項目,java,前端,數(shù)據(jù)庫

?

????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?個人主頁:秋風(fēng)起,再歸來~

? ?????????????????????????????????????????? ? ? ? ? ? ? ?? ???? ? ? ? ? ? ? ???文章專欄:C語言實戰(zhàn)項目 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??個人格言:悟已往之不諫,知來者猶可追

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????? ? ? ? ? ? ? ? ? ?克心守己,律己則安!

1、前言

友友們,這篇文章是基于單鏈表來實現(xiàn)通訊管理系統(tǒng)的,所以一定要先看完我之前寫過的一篇關(guān)于單鏈表的實現(xiàn)(文章鏈接)的文章哦~

其實基于單鏈表實現(xiàn)通訊錄的思路與基于順訊表實現(xiàn)通訊錄的思路是一樣的,在這里我就不進行贅述了。如果還沒有看過我之前寫的一篇基于順序表實現(xiàn)通訊錄(文章鏈接)的寶子們一定要去看看哦~

2、各種接口的實現(xiàn)

以下是我們希望實現(xiàn)的接口~

//contact.h
#pragma once
#define NAME_MAX 100
#define SEX_MAX 4
#define TEL_MAX 11
#define ADDR_MAX 100

//前置聲明
typedef struct SListNode contact;

//用戶數(shù)據(jù)
typedef struct PersonInfo
{
    char name[NAME_MAX];
    char sex[SEX_MAX];
    int age;
    char tel[TEL_MAX];
    char addr[ADDR_MAX];
}PeoInfo;

//初始化通訊錄
void InitContact(contact** con);

//添加通訊錄數(shù)據(jù)
void AddContact(contact** con);

//展示通訊錄數(shù)據(jù)
void ShowContact(contact* con);

//刪除通訊錄數(shù)據(jù)
void DelContact(contact** con);

//查找通訊錄數(shù)據(jù)
void FindContact(contact* con);

//修改通訊錄數(shù)據(jù)
void ModifyContact(contact** con);

//銷毀通訊錄數(shù)據(jù)
void DestroyContact(contact** con);

2.1 初始化通訊錄

我們希望在初始化通訊錄時導(dǎo)入之前我們原有文件中的數(shù)據(jù),那我們就可以進行如下的操作~

//從文件中導(dǎo)入原數(shù)據(jù)
void DLoadContact(contact** con)
{
	FILE* pf = fopen("contact.txt", "rb");
	if (pf == NULL)
	{
		perror("open fail\n");
		return;
	}
	PeoInfo p = { 0 };
	while (fread(&p, sizeof(PeoInfo),1,pf))
	{
		SListPushBack(con, p);
	}
	printf("歷史數(shù)據(jù)導(dǎo)入成功!\n");
	fclose(pf);
	pf = NULL;
}

在初始化通訊錄之后加載數(shù)據(jù)!?

//初始化通訊錄
void InitContact(contact** con)
{
	assert(con);
	(*con) = NULL;
	DLoadContact(con);
}

2.2?添加通訊錄數(shù)據(jù)

//添加通訊錄數(shù)據(jù)
void AddContact(contact** con)
{
	assert(con);
	PeoInfo p = {0};
	printf("請輸入添加聯(lián)系人的姓名:");
	scanf("%s", p.name);
	printf("請輸入添加聯(lián)系人的性別:");
	scanf("%s", p.sex);
	printf("請輸入添加聯(lián)系人的年齡:");
	scanf("%d", &(p.age));
	printf("請輸入添加聯(lián)系人的電話:");
	scanf("%s", p.tel);
	printf("請輸入添加聯(lián)系人的住址:");
	scanf("%s", p.addr);
	SListPushBack(con,p);
	printf("\n");
}

2.3?刪除通訊錄數(shù)據(jù)

在查找通訊錄數(shù)據(jù)之外封裝一個函數(shù)(findByName)來通過名字查找聯(lián)系人!

(因為我們在之后的查找和修改接口中都會用到這個方法,所以我們把它封裝成一個函數(shù)方便我們后續(xù)的使用!)

//通過名字查找聯(lián)系人
contact* findByName(contact* con,char* name)
{
	assert(con);
	contact* cur = con;
	while (cur)
	{
		if (strcmp(cur->data.name, name) == 0)
		{
			return cur;
		}
		cur = cur->next;
	}
	return NULL;
}

在原有單鏈表的刪除指定數(shù)據(jù)的接口上進行封裝(讓單鏈表搖身一變成為通訊錄?。?/strong>

//刪除通訊錄數(shù)據(jù)
void DelContact(contact** con)
{
	assert(con && (*con));
	char name[NAME_MAX];
	printf("請輸入你要刪除的聯(lián)系人的名字:");
	scanf("%s", name);
	contact* pos = findByName(*con,name);
	if (pos == NULL)
	{
		printf("您要刪除的聯(lián)系人不存在!\n");
		return;
	}
	SListErase(con, pos);
	printf("刪除成功!\n");
}

2.4?展示通訊錄數(shù)據(jù)

遍歷我們的通訊錄打印信息!

//展示通訊錄數(shù)據(jù)
void ShowContact(contact* con)
{
	assert(con);
	contact* cur = con;
	printf("名字\t\t性別\t\t年齡\t\t電話\t\t住址\n");//打印表頭
	while (cur)
	{
		printf("%s\t\t%s\t\t%d\t\t%s\t\t%s\n",
			cur->data.name,
			cur->data.sex,
			cur->data.age,
			cur->data.tel,
			cur->data.addr);
		cur = cur->next;
	}
}

2.5?查找通訊錄數(shù)據(jù)

//通過名字查找聯(lián)系人
contact* findByName(contact* con,char* name)
{
	assert(con);
	contact* cur = con;
	while (cur)
	{
		if (strcmp(cur->data.name, name) == 0)
		{
			return cur;
		}
		cur = cur->next;
	}
	return NULL;
}

在接口內(nèi)部調(diào)用該函數(shù)!?

//查找通訊錄數(shù)據(jù)
void FindContact(contact* con)
{
	assert(con);
	char name[NAME_MAX];
	printf("請輸入你要查找的聯(lián)系人的名字:");
	scanf("%s", name);
	contact* ret = findByName(con, name);
	if (ret == NULL)
	{
		printf("您要查找的聯(lián)系人不存在!\n");
		return;
	}
	printf("找到了!\n");
	printf("名字\t\t性別\t\t年齡\t\t電話\t\t住址\n");//打印表頭
		printf("%s\t\t%s\t\t%d\t\t%s\t\t%s\n",
			ret->data.name,
			ret->data.sex,
			ret->data.age,
			ret->data.tel,
			ret->data.addr);
}

2.6?修改通訊錄數(shù)據(jù)

//通過名字查找聯(lián)系人
contact* findByName(contact* con,char* name)
{
	assert(con);
	contact* cur = con;
	while (cur)
	{
		if (strcmp(cur->data.name, name) == 0)
		{
			return cur;
		}
		cur = cur->next;
	}
	return NULL;
}

在接口內(nèi)部調(diào)用該函數(shù)!?

//修改通訊錄數(shù)據(jù)
void ModifyContact(contact** con)
{
	assert(con);
	char name[NAME_MAX];
	printf("請輸入你要修改的聯(lián)系人的名字:");
	scanf("%s", name);
	contact* ret = findByName(*con, name);
	if (ret == NULL)
	{
		printf("您要修改的聯(lián)系人不存在!\n");
		return;
	}
	PeoInfo p = { 0 };
	printf("請輸入修改后聯(lián)系人的姓名:");
	scanf("%s", p.name);
	printf("請輸入修改后聯(lián)系人的性別:");
	scanf("%s", p.sex);
	printf("請輸入修改后加聯(lián)系人的年齡:");
	scanf("%d", &(p.age));
	printf("請輸入修改后聯(lián)系人的電話:");
	scanf("%s", p.tel);
	printf("請輸入修改后聯(lián)系人的住址:");
	scanf("%s", p.addr);
	SListModify(ret, p);
	printf("修改成功!\n");
}

2.7 銷毀通訊錄數(shù)據(jù)

因為我們希望在退出通訊管理系統(tǒng)的時候可以將我們的操作都保留下來,所以我們可以對其進行文件操作!

//將輸入的數(shù)據(jù)保存到文件中
void SaveContact(contact** con)
{
	FILE* pf = fopen("contact.txt", "wb");
	if (pf == NULL)
	{
		perror("open fail!\n");
		return;
	}
	contact* cur = *con;
	while (cur)
	{
		fwrite(&(cur->data), sizeof(PeoInfo), 1, pf);
		cur = cur->next;
	}
	printf("歷史數(shù)據(jù)保存成功!\n");
	fclose(pf);
	pf = NULL;
}

?在銷毀通訊錄之前保留數(shù)據(jù)!

//銷毀通訊錄數(shù)據(jù)
void DestroyContact(contact** con)
{
	SaveContact(con);
	SListDestroy(con);
}

3、完整源碼

SeqList.h

#pragma once//避免頭文件被多次引用
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include"Contact.h"
typedef PeoInfo SListDataType;//便于改變數(shù)據(jù)類型

//定義一個結(jié)構(gòu)體類型的節(jié)點
typedef struct SListNode
{
	SListDataType data;
	struct SListNode* next;//存儲下一個節(jié)點的地址
}SListNode;

//1. 新節(jié)點的創(chuàng)建
SListNode* SListCreatNode(SListDataType x);

//2. 打印單鏈表
void PrintSList(SListNode* phead);

//3. 頭插
void SListPushFront(SListNode** phead, SListDataType x);

//4. 頭刪
void  SListPopFront(SListNode** phead);

//5. 尾差
void SListPushBack(SListNode** phead, SListDataType x);

//6. 尾刪
void  SListPopBack(SListNode** phead);

//7. 查找元素X
SListNode* SListFind(SListNode* phead, SListDataType x);

//8. 在pos位置修改
void SListModify(SListNode* pos, SListDataType x);

//9. 在任意位置之前插入
void SListInsert(SListNode** phead, SListNode* pos, SListDataType x);

//10. 在任意位置刪除
void SListErase(SListNode** phead, SListNode* pos);

//11. 銷毀單鏈表
void SListDestroy(SListNode** phead);

Contact.h

#define _CRT_SECURE_NO_WARNINGS

//contact.h
#pragma once
#define NAME_MAX 100
#define SEX_MAX 4
#define TEL_MAX 11
#define ADDR_MAX 100

//前置聲明
typedef struct SListNode contact;

//用戶數(shù)據(jù)
typedef struct PersonInfo
{
    char name[NAME_MAX];
    char sex[SEX_MAX];
    int age;
    char tel[TEL_MAX];
    char addr[ADDR_MAX];
}PeoInfo;

//初始化通訊錄
void InitContact(contact** con);

//添加通訊錄數(shù)據(jù)
void AddContact(contact** con);

//展示通訊錄數(shù)據(jù)
void ShowContact(contact* con);

//刪除通訊錄數(shù)據(jù)
void DelContact(contact** con);

//查找通訊錄數(shù)據(jù)
void FindContact(contact* con);

//修改通訊錄數(shù)據(jù)
void ModifyContact(contact** con);

//銷毀通訊錄數(shù)據(jù)
void DestroyContact(contact** con);

SeqList.c

#include"SList.h"

//1. 新節(jié)點的創(chuàng)建
SListNode* SListCreatNode(SListDataType x)
{
	SListNode* NewNode = (SListNode*)malloc(sizeof(SListNode));//開辟空間
	if (NewNode == NULL)//判斷空間是否開辟成功
	{
		perror("malloc fail");
		return NULL;
	}
	NewNode->data = x;//賦值
	NewNode->next = NULL;//置空
	return NewNode;
}

#if 0
//2. 打印單鏈表
void PrintSList(SListNode* phead)
{
	if (phead == NULL)
	{
		printf("NULL");//如果鏈表沒有元素就打印NULL
		return;
	}
	SListNode* cur = phead;
	//循環(huán)單鏈表打印
	while (cur != NULL)
	{
		printf("%d->", cur->data);
		cur = cur->next;
	}
	printf("NULL\n");
}
#endif

//3. 頭插
void SListPushFront(SListNode** phead, SListDataType x)
{
	assert(phead);
	SListNode* newnode = SListCreatNode(x);//創(chuàng)建一個新節(jié)點
	newnode->next = *phead;
	*phead = newnode;
}

//4. 頭刪
void  SListPopFront(SListNode** phead)
{
	assert(phead);
	assert(*phead);//如果沒有數(shù)據(jù)就不用頭刪,并報錯
	SListNode* cur = (*phead)->next;
	free(*phead);
	*phead = cur;
}

//5. 尾插
void SListPushBack(SListNode** phead, SListDataType x)
{
	assert(phead);
	if (*phead == NULL)
	{
		*phead = SListCreatNode(x);//創(chuàng)建新節(jié)點并插入
	}
	else
	{
		SListNode* tail = *phead;
		while (tail->next != NULL)//找到尾節(jié)點
		{
			tail = tail->next;
		}
		tail->next = SListCreatNode(x);//創(chuàng)建新節(jié)點并插入
	}
}

//6. 尾刪
void  SListPopBack(SListNode** phead)
{
	assert(phead);
	assert(*phead);//鏈表為空就不進行尾刪
	SListNode* tail = *phead;
	if (tail->next == NULL)//如果鏈表就只有一個元素就進行頭刪
	{
		SListPopFront(phead);
	}
	else
	{
		while (tail->next->next != NULL)
		{
			tail = tail->next;
		}
		free(tail->next);
		tail->next = NULL;
	}
}

#if 0
//7. 查找元素X
SListNode* SListFind(SListNode* phead, SListDataType x)
{
	assert(phead);
	while (phead->next != NULL)//注意最后一個節(jié)點是沒有查找的
	{
		if (phead->data == x)
			return phead;
		phead = phead->next;
	}
	if (phead->data == x)
		return phead;//最后一個節(jié)點沒有查找
	else
		return NULL;//沒找到
}
#endif

//8. 在pos位置修改
void SListModify(SListNode* pos, SListDataType x)
{
	assert(pos);
	pos->data = x;
}

//9. 在任意位置之前插入
void SListInsert(SListNode** phead, SListNode* pos, SListDataType x)
{
	assert(phead);
	assert(*phead);
	if (pos == *phead)//如果pos位置剛好是第一個節(jié)點就進行頭插
	{
		SListPushFront(phead, x);
	}
	else
	{
		SListNode* newnode = SListCreatNode(x);
		SListNode* cur = *phead;
		while (cur->next != pos)//找到pos前一個節(jié)點
		{
			cur = cur->next;
		}
		cur->next = newnode;
		newnode->next = pos;
	}
}

//10. 在任意位置刪除
void SListErase(SListNode** phead, SListNode* pos)
{
	assert(phead && *phead && pos);
	if (pos == *phead)//如果pos位置就是第一個節(jié)點就進行頭刪
	{
		SListPopFront(phead);
	}
	else
	{
		SListNode* cur = *phead;
		while (cur->next != pos)//找到pos前一個節(jié)點
		{
			cur = cur->next;
		}
		cur->next = pos->next;
		free(pos);
	}
}

//11. 銷毀單鏈表
void SListDestroy(SListNode** phead)
{
	assert(*phead && phead);
	SListNode* cur = *phead;
	while (cur != NULL)
	{
		SListNode* tmp = cur->next;
		free(cur);
		cur = tmp;
	}
	*phead = NULL;
}

Contact.c

#include"SList.h"

//從文件中導(dǎo)入原數(shù)據(jù)
void DLoadContact(contact** con)
{
	FILE* pf = fopen("contact.txt", "rb");
	if (pf == NULL)
	{
		perror("open fail\n");
		return;
	}
	PeoInfo p = { 0 };
	while (fread(&p, sizeof(PeoInfo),1,pf))
	{
		SListPushBack(con, p);
	}
	printf("歷史數(shù)據(jù)導(dǎo)入成功!\n");
	fclose(pf);
	pf = NULL;
}

//初始化通訊錄
void InitContact(contact** con)
{
	assert(con);
	(*con) = NULL;
	DLoadContact(con);
}

//添加通訊錄數(shù)據(jù)
void AddContact(contact** con)
{
	assert(con);
	PeoInfo p = {0};
	printf("請輸入添加聯(lián)系人的姓名:");
	scanf("%s", p.name);
	printf("請輸入添加聯(lián)系人的性別:");
	scanf("%s", p.sex);
	printf("請輸入添加聯(lián)系人的年齡:");
	scanf("%d", &(p.age));
	printf("請輸入添加聯(lián)系人的電話:");
	scanf("%s", p.tel);
	printf("請輸入添加聯(lián)系人的住址:");
	scanf("%s", p.addr);
	SListPushBack(con,p);
	printf("\n");
}

//展示通訊錄數(shù)據(jù)
void ShowContact(contact* con)
{
	assert(con);
	contact* cur = con;
	printf("名字\t\t性別\t\t年齡\t\t電話\t\t住址\n");//打印表頭
	while (cur)
	{
		printf("%s\t\t%s\t\t%d\t\t%s\t\t%s\n",
			cur->data.name,
			cur->data.sex,
			cur->data.age,
			cur->data.tel,
			cur->data.addr);
		cur = cur->next;
	}
}

//通過名字查找聯(lián)系人
contact* findByName(contact* con,char* name)
{
	assert(con);
	contact* cur = con;
	while (cur)
	{
		if (strcmp(cur->data.name, name) == 0)
		{
			return cur;
		}
		cur = cur->next;
	}
	return NULL;
}

//刪除通訊錄數(shù)據(jù)
void DelContact(contact** con)
{
	assert(con && (*con));
	char name[NAME_MAX];
	printf("請輸入你要刪除的聯(lián)系人的名字:");
	scanf("%s", name);
	contact* pos = findByName(*con,name);
	if (pos == NULL)
	{
		printf("您要刪除的聯(lián)系人不存在!\n");
		return;
	}
	SListErase(con, pos);
	printf("刪除成功!\n");
}

//查找通訊錄數(shù)據(jù)
void FindContact(contact* con)
{
	assert(con);
	char name[NAME_MAX];
	printf("請輸入你要查找的聯(lián)系人的名字:");
	scanf("%s", name);
	contact* ret = findByName(con, name);
	if (ret == NULL)
	{
		printf("您要查找的聯(lián)系人不存在!\n");
		return;
	}
	printf("找到了!\n");
	printf("名字\t\t性別\t\t年齡\t\t電話\t\t住址\n");//打印表頭
		printf("%s\t\t%s\t\t%d\t\t%s\t\t%s\n",
			ret->data.name,
			ret->data.sex,
			ret->data.age,
			ret->data.tel,
			ret->data.addr);
}

//修改通訊錄數(shù)據(jù)
void ModifyContact(contact** con)
{
	assert(con);
	char name[NAME_MAX];
	printf("請輸入你要修改的聯(lián)系人的名字:");
	scanf("%s", name);
	contact* ret = findByName(*con, name);
	if (ret == NULL)
	{
		printf("您要修改的聯(lián)系人不存在!\n");
		return;
	}
	PeoInfo p = { 0 };
	printf("請輸入修改后聯(lián)系人的姓名:");
	scanf("%s", p.name);
	printf("請輸入修改后聯(lián)系人的性別:");
	scanf("%s", p.sex);
	printf("請輸入修改后加聯(lián)系人的年齡:");
	scanf("%d", &(p.age));
	printf("請輸入修改后聯(lián)系人的電話:");
	scanf("%s", p.tel);
	printf("請輸入修改后聯(lián)系人的住址:");
	scanf("%s", p.addr);
	SListModify(ret, p);
	printf("修改成功!\n");
}

//將輸入的數(shù)據(jù)保存到文件中
void SaveContact(contact** con)
{
	FILE* pf = fopen("contact.txt", "wb");
	if (pf == NULL)
	{
		perror("open fail!\n");
		return;
	}
	contact* cur = *con;
	while (cur)
	{
		fwrite(&(cur->data), sizeof(PeoInfo), 1, pf);
		cur = cur->next;
	}
	printf("歷史數(shù)據(jù)保存成功!\n");
	fclose(pf);
	pf = NULL;
}
//銷毀通訊錄數(shù)據(jù)
void DestroyContact(contact** con)
{
	SaveContact(con);
	SListDestroy(con);
}

?這里我就沒有單獨去寫一個菜單了,本身的意義也并不大,但是如果友友們想寫一個來玩一玩,可以看看我之前那篇基于順序表實現(xiàn)通訊錄(文章鏈接,那里有菜單的模版(只要改幾個接口的名字就行了)~

4、?完結(jié)散花

好了,這期的分享到這里就結(jié)束了~

如果這篇博客對你有幫助的話,可以用你們的小手指點一個免費的贊并收藏起來喲~

如果期待博主下期內(nèi)容的話,可以點點關(guān)注,避免找不到我了呢~

我們下期不見不散~~

基于單鏈表實現(xiàn)通訊管理系統(tǒng)!(有完整源碼!),C語言實戰(zhàn)項目,java,前端,數(shù)據(jù)庫??基于單鏈表實現(xiàn)通訊管理系統(tǒng)!(有完整源碼!),C語言實戰(zhàn)項目,java,前端,數(shù)據(jù)庫??文章來源地址http://www.zghlxwxcb.cn/news/detail-855954.html

到了這里,關(guān)于基于單鏈表實現(xiàn)通訊管理系統(tǒng)!(有完整源碼!)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C語言課程設(shè)計|通訊錄管理系統(tǒng)(含完整代碼)

    目錄 菜單功能 錄入聯(lián)系人信息功能 查看系統(tǒng)中全部信息功能 查看單個信息功能 刪除全部信息功能 刪除單個信息功能 修改信息功能 完整代碼 在長達一個多月的學(xué)習(xí)過程中,終于將C語言學(xué)完,因此專門寫一個C語言課程設(shè)計來檢驗這一個多月的學(xué)習(xí)成果,由于寫的比較急,

    2024年02月01日
    瀏覽(92)
  • 基于Springboot的高校固定資產(chǎn)管理系統(tǒng)的設(shè)計與實現(xiàn)(源碼完整)

    基于Springboot的高校固定資產(chǎn)管理系統(tǒng)的設(shè)計與實現(xiàn)(源碼完整)

    項目描述 臨近學(xué)期結(jié)束,還是畢業(yè)設(shè)計,你還在做java程序網(wǎng)絡(luò)編程,期末作業(yè),老師的作業(yè)要求覺得大了嗎?不知道畢業(yè)設(shè)計該怎么辦?網(wǎng)頁功能的數(shù)量是否太多?沒有合適的類型或系統(tǒng)?等等。這里根據(jù)你想解決的問題,今天給大家介紹一篇基于Springboot的高校固定資產(chǎn)管理系統(tǒng)

    2024年02月07日
    瀏覽(24)
  • 手把手教你基于【SpringBoot+MyBatis】實現(xiàn)員工管理系統(tǒng)?【附完整源碼】

    手把手教你基于【SpringBoot+MyBatis】實現(xiàn)員工管理系統(tǒng)?【附完整源碼】

    Hello,你好呀,我是 灰小猿 ,一個超會寫 BUG 的程序猿??! 近期在學(xué)習(xí)springboot框架相關(guān)的內(nèi)容,相比于SSM, SpringBoot最大的特點就是集成了Spring和SpringMVC,讓之前繁瑣的配置工作變得更加簡潔, 同時對于業(yè)務(wù)邏輯層的處理也更加的友好, 所以今天就使用 SpringBoot整合MyBati

    2023年04月08日
    瀏覽(79)
  • 基于Java和MySQL實現(xiàn)的大學(xué)生學(xué)籍管理系統(tǒng)(畢業(yè)設(shè)計附完整項目代碼)

    本課題下的功能要求有: 實現(xiàn)學(xué)生信息、班級、院系、專業(yè)等的管理 實現(xiàn)課程、學(xué)生成績信息管理 實現(xiàn)學(xué)生的獎懲信息管理 創(chuàng)建規(guī)則用于限制性別項只能輸入“男”或“女” 創(chuàng)建視圖查詢各個學(xué)生的學(xué)號、姓名、班級、專業(yè)、院系 創(chuàng)建存儲過程查詢指定學(xué)生的成績單 創(chuàng)建

    2024年02月11日
    瀏覽(26)
  • 【C語言課設(shè)計劃】個人通訊錄管理系統(tǒng)(C語言大作業(yè) 鏈表 結(jié)構(gòu)體 運行截圖 完整代碼)

    【C語言課設(shè)計劃】個人通訊錄管理系統(tǒng)(C語言大作業(yè) 鏈表 結(jié)構(gòu)體 運行截圖 完整代碼)

    hello 大家好呀 這里是布丁學(xué)姐~ 今天給大家?guī)淼氖恰禖語言課設(shè)計劃》的第一篇,個人通訊錄管理系統(tǒng) 通訊錄是當(dāng)前社會每個人不可缺少的信息系統(tǒng),利用C語言和Dve c++制作個人通訊錄管理系統(tǒng),從根本上改變紙質(zhì)通訊錄難以長久保存、容易丟失的弊端,從而提高信息管理和

    2024年02月02日
    瀏覽(569)
  • 宿舍管理系統(tǒng)的設(shè)計與實現(xiàn):基于Spring Boot、Java、Vue.js和MySQL的完整解決方案

    宿舍管理系統(tǒng)的設(shè)計與實現(xiàn):基于Spring Boot、Java、Vue.js和MySQL的完整解決方案

    ??計算機編程指導(dǎo)師 ??個人介紹:自己非常喜歡研究技術(shù)問題!專業(yè)做Java、Python、微信小程序、安卓、大數(shù)據(jù)、爬蟲、Golang、大屏等實戰(zhàn)項目。 ??實戰(zhàn)項目:有源碼或者技術(shù)上的問題歡迎在評論區(qū)一起討論交流! ?? Java實戰(zhàn) | SpringBoot/SSM Python實戰(zhàn)項目 | Django 微信小

    2024年01月17日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)之線性表】單鏈表實現(xiàn)圖書管理系統(tǒng)

    ????????本次實驗是在DEV C++軟件上進行實現(xiàn)的。語言采用的是c++語言,但在整體上與c語言大致相似(不管用什么語言實現(xiàn),思想是不變的)。 ? ? ? ? 此次實現(xiàn)的整體思路:首先定義圖書這個抽象數(shù)據(jù)類型,并且定義節(jié)點抽象數(shù)據(jù)類型(根據(jù)這些抽象數(shù)據(jù)類型對下面的數(shù)

    2024年02月08日
    瀏覽(22)
  • 用單鏈表實現(xiàn)學(xué)生信息管理系統(tǒng)(7.23周末作業(yè))

    用單鏈表實現(xiàn)學(xué)生信息管理系統(tǒng)(7.23周末作業(yè))

    結(jié)構(gòu)體定義: 功能函數(shù): 1.申請結(jié)點 2.創(chuàng)建鏈表 3.鏈表判空 4.遍歷學(xué)生信息 5.尾插法添加學(xué)生信息 6.根據(jù)姓名查找學(xué)生信息 7.根據(jù)學(xué)號查找學(xué)生信息 8.根據(jù)姓名刪除學(xué)生信息 9.根據(jù)學(xué)號刪除學(xué)生信息 10.根據(jù)學(xué)生姓名修改學(xué)生信息 11.根據(jù)學(xué)生學(xué)號修改學(xué)生信息 12.按學(xué)號將學(xué)生

    2023年04月20日
    瀏覽(16)
  • 【C語言】實現(xiàn)通訊錄管理系統(tǒng)

    【C語言】實現(xiàn)通訊錄管理系統(tǒng)

    大家好,我是蘇貝,本篇博客帶大家實現(xiàn)通訊錄,如果你覺得我寫的還不錯的話,可以給我一個贊??嗎,感謝?? 本文將使用C語言來實現(xiàn)通訊錄管理系統(tǒng),該通訊錄包括若干聯(lián)系人,和每個聯(lián)系人的姓名、年齡、性別、電話、地址。此通訊錄的功能包括:增加聯(lián)系人信息,

    2024年02月08日
    瀏覽(95)
  • 學(xué)生通訊錄管理系統(tǒng)的設(shè)計與實現(xiàn)

    學(xué)生通訊錄管理系統(tǒng)的設(shè)計與實現(xiàn)

    1.1 問題的描述 學(xué)生通訊錄管理系統(tǒng)是為了幫助老師、同學(xué),或者其他一些需要使用通訊錄的人員進行管理和分析的一種應(yīng)用程序。 1.2 問題分析和任務(wù)定義 (1)輸入數(shù)據(jù)建立通訊錄; (2)查詢通訊錄中滿足要求的信息; (3)插入新的通訊錄信息; (4)刪除不需要的通訊

    2024年02月10日
    瀏覽(96)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包