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

歌曲信息管理系統(tǒng)[低配版]

這篇具有很好參考價值的文章主要介紹了歌曲信息管理系統(tǒng)[低配版]。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 選題背景

1.1 時代背景

隨著時代的快速發(fā)展, 聽歌是人們常見的一種放松的方式. 聽歌可以使得我們進(jìn)入一個屬于自己的自由世界.
當(dāng)然, 不同的歌曲是有不一樣的屬性. 比如: 激情的歌曲會讓人進(jìn)入一個亢奮的轉(zhuǎn)態(tài), 抒情的歌曲會讓人思緒萬千… …
所以, 歌曲信息是值得存儲的, 尤其是歌手(一般歌手會有自己的一種屬性), 歌曲屬性, 這樣可以使得我們可以快速地找到最屬于自己的一份歌單
1.2 程序功能

程序的主要功能就是按照歌曲屬性來存儲歌曲, 創(chuàng)建一個屬于自己的臨時歌單
(1) 首先界面出現(xiàn)提示, 選擇自己的選項進(jìn)行操作
(2) 隨后就可以進(jìn)行存儲歌曲信息, 修改歌曲信息, 刪除歌曲信息… …

2. 設(shè)計分析

2.1 menu函數(shù)
menu函數(shù) — — 完成選擇界面的打印
2.2 MusicEqual函數(shù)
MusicEqual函數(shù) — ---- 判斷兩個歌曲是否相同
2.3 BuyNode函數(shù)
BuyNode函數(shù) — — 增加新的結(jié)點
2.4 MusicShow函數(shù)
MusicShow函數(shù) ---- ---- 歌曲信息的打印
2.5 MusicStorage函數(shù)
MusicStorage函數(shù) — — 存儲歌曲信息
2.6 MusicFind函數(shù)
MusicFind函數(shù) — — 查詢歌曲位置
2.7 MusicDele函數(shù)
MusicDele函數(shù) ---- ---- 刪除歌曲信息
2.8 MusicModify函數(shù)
MusicModify函數(shù) ---- ----- 修改歌曲信息

3. 程序說明

結(jié)構(gòu)采用的是用單鏈表的形式, 其中的存放歌曲數(shù)據(jù)的data 用的也是一個結(jié)構(gòu)體類型
依托這個單鏈表的基本結(jié)構(gòu)進(jìn)行下面的增刪查改一系列的操作.

4. 關(guān)鍵代碼分析

4.1 MusicEqual && BuyNode
由于歌曲信息是一個結(jié)構(gòu)體, 屬于自定義類型, 運算符要進(jìn)行運算符重載才可以使用
所以, 在此處, 我們用的是strcmp函數(shù)來進(jìn)行比較, 利用strcpy函數(shù)來進(jìn)行拷貝
4.2 MusicDele
結(jié)點的刪除是使這個結(jié)點 和 整個鏈表結(jié)構(gòu)斷開聯(lián)系, 而不是真正意義上的刪除.
所以, 我們要找到這個結(jié)點的上一個位置(除非這個鏈表是空鏈表 或者是只有一個結(jié)點)
4.3 運用枚舉使Switch語句更加易懂

5. 心得體會

課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識, 發(fā)現(xiàn), 提出, 分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié), 是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.
隨著科學(xué)技術(shù)發(fā)展的日新日異, C語言已經(jīng)成為當(dāng)今計算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說得是無處不在.
這次課程設(shè)計讓我學(xué)到了很多, 不僅是鞏固了先前學(xué)的C語言的理論知識, 而且也培養(yǎng)了我的動手能力, 更令我的創(chuàng)造性思維得到拓展. 在本次的課程設(shè)計, 使我對單鏈表的機(jī)構(gòu)有了更深層次的理解與感悟. 希望我在未來的學(xué)習(xí)生活中能夠更好地應(yīng)用它.

源碼

# define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>

typedef struct MusicInfor // 數(shù)據(jù)里面的內(nèi)容
{
	char name[20];
	char singer[20];
	char type[20];
}MType;


typedef struct Music // 單鏈表形式
{
	MType data;
	struct Music* next;
}music;

int MusicEqual(music* x, MType y) // 判斷是否相等
{
	if (strcmp(x->data.name, y.name) == 0 && strcmp(x->data.singer, y.singer) == 0 && strcmp(x->data.type, y.type) == 0)
		return 1;

	return 0;
}

music* BuyNode(MType x) // 增加新的節(jié)點
{
	music* newnode = (music*)malloc(sizeof(music));
	if (newnode == NULL)
	{
		perror("malloc fail");
		exit(-1);
	}

	memcpy(newnode->data.name, x.name, sizeof(x.name));
	memcpy(newnode->data.singer, x.singer, sizeof(x.singer));
	memcpy(newnode->data.type, x.type, sizeof(x.type));

	newnode->next = NULL;

	return newnode;
}

void MusicShow(music* phead) // 打印數(shù)據(jù)
{
	if (phead == NULL)
		printf("歌單并沒有東西哦, 先去添加一下~~\n");
	else
	{
		music* cur = phead;
		while (cur)
		{
			printf("**********************************\n");
			printf("*歌名:%s                          \n", cur->data.name);
			printf("*歌手:%s                          \n", cur->data.singer);
			printf("*類型:%s                          \n", cur->data.type);

			cur = cur->next;
		}
	}
	printf("**********************************\n");
}

void MusicStorage(music** pphead) // 存儲新的數(shù)據(jù)
{
	MType x;
	printf("請輸入你要添加的歌曲>\n");
	scanf("%s", x.name);
	printf("請輸入這首歌的歌手>\n");
	scanf("%s", x.singer);
	printf("請輸入這首歌的類型>\n");
	scanf("%s", x.type);

	music* newnode = BuyNode(x);


	if (*pphead == NULL)
	{
		*pphead = newnode;
		printf("添加成功\n");
	}
	else
	{
		// 找尾
		music* tail = *pphead;
		while (tail->next != NULL)
		{
			tail = tail->next;
		}

		tail->next = newnode;

		printf("添加成功\n");
	}

}

void MusicFind(music* phead) // 查找, 有,返回位置; 沒有, 返回一段話
{
	MType x;
	if (phead == NULL)
	{
		printf("該歌單是空的, 請?zhí)砑痈枨鶿n");
		return;
	}

	printf("你想查詢的歌曲>\n");
	scanf("%s", x.name);
	printf("這首歌的歌手是>\n");
	scanf("%s", x.singer);
	printf("這首歌的類型是>\n");
	scanf("%s", x.type);

	music* cur = phead;
	int len = 0;
	while (cur)
	{
		len++;
		if (MusicEqual(cur, x))
		{
			printf("該歌單有這首歌,這首歌的位置在%d\n", len);
			return;
		}

		cur = cur->next;
	}

	printf("該歌單沒有此項目\n");
	return;

}

void MusicDele(music** pphead) // 刪除
{
	MType x;
	if (*pphead == NULL)
		printf("親,歌單里沒有東西了,不要再刪了~\n");

	printf("你想刪除的歌曲>\n");
	scanf("%s", x.name);
	printf("這首歌的歌手是>\n");
	scanf("%s", x.singer);
	printf("這首歌的類型是>\n");
	scanf("%s", x.type);

	music* cur = *pphead;

	if (MusicEqual(cur, x))
	{
		*pphead = cur->next;
		free(cur);
		cur = NULL;
		printf("刪除成功\n");

	}
	else
	{
		while (cur != NULL && !MusicEqual(cur->next, x))
		{
			cur = cur->next;
		}

		music* tem = cur->next;
		cur->next = tem->next;
		free(tem);
		tem = NULL;
		printf("刪除成功\n");

	}
}

void MusicModify(music** pphead) //修改
{
	if (*pphead == NULL)
	{
		printf("該歌單里空落落的,不能修改哦~\n");
		return;
	}

	MType x;
	printf("請輸入你要修改的原數(shù)據(jù)>\n");
	printf("歌名>\n");
	scanf("%s", x.name);
	printf("歌手\n");
	scanf("%s", x.singer);
	printf("類型>\n");
	scanf("%s", x.type);

	music* cur = *pphead;
	while (cur != NULL && !MusicEqual(cur, x))
	{
		cur = cur->next;
	}

	if (cur == NULL)
	{
		printf("該歌單里面并沒有你要修改的數(shù)據(jù), 請仔細(xì)檢查之后再輸入\n");
		return;
	}
	else
	{
		printf("修改后的歌名>\n");
		scanf("%s", cur->data.name);
		printf("修改后的歌手>\n");
		scanf("%s", cur->data.singer);
		printf("修改后的類型>\n");
		scanf("%s", cur->data.type);

		printf("修改成功\n");
	}

}

void menu()
{
	printf("+————————————————————————————————————————————————————————————+\n");
	printf("|    +———————————————————————————————————————+               |\n");
	printf("|    |            歡迎來到存歌環(huán)節(jié)           |               |\n");
	printf("|    |  0.exit                 1.storage     |               |\n");
	printf("|    |  2.find                 3.show        |               |\n");
	printf("|    |  4.modify               5.delete      |               |\n");
	printf("|    +———————————————————————————————————————+               |\n");
	printf("+————————————————————————————————————————————————————————————+\n");

}

int main()
{
	music* head = NULL;
	int input = 0;

	do
	{
		menu();
		enum Option
		{
			exit,
			storage,
			find,
			show,
			modify,
			delete
		};

		printf("請做出你的選選擇> (0,1,2,3... ...)\n");
		scanf("%d", &input);

		switch (input)
		{
		case exit:
			break;
		case storage:
			MusicStorage(&head);
			break;
		case find:
			MusicFind(head);
			break;
		case show:
			MusicShow(head);
			break;
		case modify:
			MusicModify(&head);
			break;
		case delete:
			MusicDele(&head);
			break;
		default:
			printf("你輸入的選項是錯誤的, 請重新輸入>\n");
			break;
		}

	} while (input);

	return 0;

}

立志趁早點,上路輕松點,目光放遠(yuǎn)點,苦累看淡點,努力多一點,奮斗勇一點,勝利把名點,祝你折桂冠,成功新起點,幸福多一點,笑容亮一點.文章來源地址http://www.zghlxwxcb.cn/news/detail-454146.html

到了這里,關(guā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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • C語言點歌臺歌曲信息管理

    20.點歌臺歌曲信息管理(難度系數(shù):4級) (1)任務(wù)描述 設(shè)計一個點歌臺歌曲信息管理程序。 (2)功能要求 1.設(shè)計程序,使得有特殊密碼的管理員可以完成點歌臺上歌曲信息的輸入、修改和刪除。 2.為顧客提供按歌曲編號點播歌曲的功能,如果所輸入編號沒有,則提示出錯,再次輸入。

    2024年02月03日
    瀏覽(19)
  • 前后端分離的計算機(jī)畢設(shè)之基于springboot+vue的課程設(shè)計選題管理系統(tǒng)(內(nèi)含源碼+文檔+教程)

    前后端分離的計算機(jī)畢設(shè)之基于springboot+vue的課程設(shè)計選題管理系統(tǒng)(內(nèi)含源碼+文檔+教程)

    博主介紹:?全網(wǎng)粉絲10W+,前互聯(lián)網(wǎng)大廠軟件研發(fā)、集結(jié)碩博英豪成立工作室。專注于計算機(jī)相關(guān)專業(yè)畢業(yè)設(shè)計項目實戰(zhàn)6年之久,選擇我們就是選擇放心、選擇安心畢業(yè)? ?? 由于篇幅限制,想要獲取完整文章或者源碼,或者代做,拉到文章底部即可看到個人VX。 ?? 2023年

    2024年02月07日
    瀏覽(29)
  • qt實現(xiàn)信息管理系統(tǒng)(學(xué)生信息管理系統(tǒng))功能更完善

    qt實現(xiàn)信息管理系統(tǒng)(學(xué)生信息管理系統(tǒng))功能更完善

    信息系統(tǒng)代碼地址:https://gitee.com/dxl96/StdMsgSystem 本學(xué)生信息管理系統(tǒng)同升級改造的幅度較大,涉及到的東西對于初學(xué)者來說,可能稍顯復(fù)雜,可以先移步到?https://blog.csdn.net/IT_CREATE/article/details/82027462?查看簡易的系統(tǒng)。 本系統(tǒng)引入日志管理,數(shù)據(jù)庫選擇支持sqllite、mysql,自

    2024年02月13日
    瀏覽(20)
  • 駕校管理系統(tǒng)的設(shè)計與實現(xiàn)/駕校信息管理系統(tǒng)

    駕校管理系統(tǒng)的設(shè)計與實現(xiàn)/駕校信息管理系統(tǒng)

    摘 ?要隨著社會的發(fā)展,車輛也越來越多,計算機(jī)的優(yōu)勢和普及使得駕校管理系統(tǒng)的開發(fā)成為必需。駕校管理系統(tǒng)主要是借助計算機(jī),通過對信息進(jìn)行管理。減少管理員的工作,同時也方便廣大學(xué)員對個人所需信息的及時查詢以及管理,其次是大量信息的管理,最后是高度安

    2024年02月07日
    瀏覽(21)
  • 健身房信息管理系統(tǒng)/健身房管理系統(tǒng)

    健身房信息管理系統(tǒng)/健身房管理系統(tǒng)

    21世紀(jì)的今天,隨著社會的不斷發(fā)展與進(jìn)步,人們對于信息科學(xué)化的認(rèn)識,已由低層次向高層次發(fā)展,由原來的感性認(rèn)識向理性認(rèn)識提高,管理工作的重要性已逐漸被人們所認(rèn)識,科學(xué)化的管理,使信息存儲達(dá)到準(zhǔn)確、快速、完善,并能提高工作管理效率,促進(jìn)其發(fā)展。 論文

    2023年04月27日
    瀏覽(23)
  • 信息系統(tǒng)項目管理師:配置管理

    配置管理指的是在一個系統(tǒng)或軟件中對配置項的管理,包括對配置項的定義、存儲、跟蹤和修改等一系列活動。配置項可以是硬件設(shè)備、軟件組件、系統(tǒng)設(shè)置、網(wǎng)絡(luò)配置等,配置管理旨在確保在不同時間點或環(huán)境下系統(tǒng)或軟件的配置項的正確性和一致性。通過配置管理,可以

    2024年02月16日
    瀏覽(95)
  • 超市商品信息管理系統(tǒng)/超市管理系統(tǒng)的設(shè)計與實現(xiàn)

    超市商品信息管理系統(tǒng)/超市管理系統(tǒng)的設(shè)計與實現(xiàn)

    摘 ?要 隨著現(xiàn)在網(wǎng)絡(luò)的快速發(fā)展,網(wǎng)上管理系統(tǒng)也逐漸快速發(fā)展起來,網(wǎng)上管理模式很快融入到了許多國家的之中,隨之就產(chǎn)生了“超市商品信息管理系統(tǒng)”,這樣就讓超市商品信息管理系統(tǒng)更加方便簡單。 對于本超市商品信息管理系統(tǒng)的設(shè)計來說,系統(tǒng)開發(fā)主要是采用j

    2024年02月02日
    瀏覽(31)
  • 信息系統(tǒng)項目管理師-項目溝通管理

    1.信息系統(tǒng)項目管理師-項目整合管理 2.信息系統(tǒng)項目管理師-項目范圍管理 3.信息系統(tǒng)項目管理師-項目進(jìn)度管理 4.信息系統(tǒng)項目管理師-項目成本管理 5.信息系統(tǒng)項目管理師-項目質(zhì)量管理 6.信息系統(tǒng)項目管理師-項目資源管理 7.信息系統(tǒng)項目管理師-項目溝通管理 8.信息系統(tǒng)項目

    2023年04月16日
    瀏覽(102)
  • 社區(qū)老人健康信息管理系統(tǒng)|基于springboot社區(qū)老人健康信息管理系統(tǒng)設(shè)計與實現(xiàn)(源碼+數(shù)據(jù)庫+文檔)

    社區(qū)老人健康信息管理系統(tǒng)|基于springboot社區(qū)老人健康信息管理系統(tǒng)設(shè)計與實現(xiàn)(源碼+數(shù)據(jù)庫+文檔)

    社區(qū)老人健康信息管理系統(tǒng)目錄 目錄 基于springboot社區(qū)老人健康信息管理系統(tǒng)設(shè)計與實現(xiàn) 一、前言 二、系統(tǒng)功能設(shè)計 三、系統(tǒng)實現(xiàn) 1、健康信息管理 2、預(yù)約管理 3、公告管理 4、公告類型管理 四、數(shù)據(jù)庫設(shè)計 1、實體ER圖 ?五、核心代碼? 六、論文參考 七、最新計算機(jī)畢設(shè)

    2024年02月20日
    瀏覽(28)
  • 學(xué)生基本信息管理系統(tǒng)

    學(xué)生基本信息管理系統(tǒng)

    目錄 一、選題與前期調(diào)查 1.選題 2.前期調(diào)查 二、人員分工 三、項目描述 1.項目簡介 2.項目技術(shù) 3.功能需求分析 4.系統(tǒng)細(xì)節(jié) 四、系統(tǒng)功能運行結(jié)果截圖展示 五、關(guān)鍵代碼 六、使用git管理代碼 七、遇到的困難 1.選題 學(xué)生基本信息管理系統(tǒng)(2人)等級:C- 功能要求: 1、添加學(xué)生

    2024年01月16日
    瀏覽(69)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包