Toggle navigation
Toggle navigation
This project
Loading...
Sign in
안형준
/
Ds_worked
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
안형준
2018-11-20 22:11:59 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
82247e858dab8d63fc7c84e9d6620bd34f2438a8
82247e85
1 parent
46baa335
터지는 내용을 알기위해 임시 커밋
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
61 deletions
Project/Application.cpp
Project/ManageType.h
Project/SortedLinkedList.h
Project/Application.cpp
View file @
82247e8
...
...
@@ -126,13 +126,13 @@ int Application::AddMusic()
{
if
(
Miter
.
GetCurrentNode
().
data
==
item
)
{
mgitem
.
setIndex
(
Miter
.
GetCurrentNode
().
data
.
GetNum
());
MusicType
*
tempmptr
=
Miter
.
GetCurrentPtr
();
mgitem
.
setPtr
(
tempmptr
);
}
Miter
.
Next
();
}
mgitem
.
setName
(
item
.
GetName
());
mgitem
.
setPkey
(
item
.
GetPkey
());
mgitem
.
setArtist
(
item
.
GetSinger
());
mg_List
.
Add
(
mgitem
);
//최근 추가목록에 추가하기
...
...
@@ -182,11 +182,29 @@ void Application::Delete()
MusicType
data
;
//Delete함수는 MusicType을 파라미터로 갖기 때문에 임의로 만들어준다.
data
.
SetNumFromKB
();
//사용자에게서 곡 번호를 입력받는다.
SearchByIndex
(
data
);
if
(
m_List
.
Delete
(
data
))
//Delete함수에 data를 넘겨준다.
/*DoublyIter<MusicType> Miter(m_List);
if (data.GetNum() < 1 || data.GetNum() > m_List.GetLength())
return;
for (int i = 1; i < data.GetNum(); i++) {
Miter.Next();
}*/
//data = Miter.GetCurrentNode().data;
if
(
m_List
.
Delete
(
data
))
{
cout
<<
"
\t
삭제를 완료했습니다."
<<
endl
;
//삭제에 성공했으면 메시지를 출력한다.
RemakeSubList
();
//MusicList에 변화가 생겼으므로 하위 리스트들을 다시 만들어줘야 한다.
DoublyIter2
<
ManageType
>
Mgiter
(
mg_List
);
while
(
Mgiter
.
NotNull
())
{
if
(
Mgiter
.
GetCurrentNode
().
data
.
getIndex
()
==
data
.
GetNum
())
{
ManageType
*
mgptr
=
Mgiter
.
GetCurrentPtr
();
mgptr
->
Deleted
();
}
Mgiter
.
Next
();
}
if
(
m_List
.
GetLength
()
!=
0
)
//길이가 0이면 인덱스를 부여할수 없다.
{
SetMusicIndex
();
//MusicList에 변화가 생겼으므로 Index를 다시 부여한다.
...
...
@@ -213,13 +231,14 @@ void Application::Update()
}
else
//찾을 수 있을때
{
data
.
SetNameFromKB
();
//사용자에게서 곡명을 입력받는다.
data
.
SetSingerFromKB
();
//사용자에게서 가수를 입력받는다.
data
.
SetAlbumFromKB
();
//사용자에게서 앨범을 입력받는다.
data
.
SetGenreFromKB
();
//사용자에게서 장르를 입력받는다.
data
.
SetLyricsFromKB
();
// 사용자에게서 가사를 입력받는다.
if
(
m_List
.
Delete
(
data
))
//기존 항목을 삭제하고
{
data
.
SetNameFromKB
();
//사용자에게서 곡명을 입력받는다.
data
.
SetSingerFromKB
();
//사용자에게서 가수를 입력받는다.
data
.
SetAlbumFromKB
();
//사용자에게서 앨범을 입력받는다.
data
.
SetGenreFromKB
();
//사용자에게서 장르를 입력받는다.
data
.
SetLyricsFromKB
();
// 사용자에게서 가사를 입력받는다.
data
.
SetPkey
();
//데이터를 변경했으므로 Pkey를 다시 지정해준다.
m_List
.
Add
(
data
);
cout
<<
"
\t
수정을 완료했습니다."
<<
endl
;
//수정을 성공했을 때 메시지를 출력한다.
...
...
@@ -694,7 +713,10 @@ void Application::SearchByIndex(MusicType &indata)
while
(
Miter
.
NotNull
())
{
if
(
Index
==
Miter
.
GetCurrentNode
().
data
.
GetNum
())
Miter
.
GetCurrentNode
().
data
.
DisplayRecordOnScreen
();
{
indata
=
Miter
.
GetCurrentNode
().
data
;
//Miter.GetCurrentNode().data.DisplayRecordOnScreen();
}
Miter
.
Next
();
}
...
...
Project/ManageType.h
View file @
82247e8
...
...
@@ -4,69 +4,44 @@
class
ManageType
{
private
:
string
Pkey
;
int
played
;
int
Index
;
string
name
;
string
artist
;
MusicType
*
mptr
;
bool
Isdeleted
;
public
:
ManageType
()
{
Pkey
=
""
;
played
=
0
;
Index
=
0
;
bool
Isdeleted
=
false
;
mptr
=
NULL
;
};
~
ManageType
()
{};
void
setP
key
(
string
key
)
void
setP
tr
(
MusicType
*
P
)
{
Pkey
=
key
;
mptr
=
P
;
}
void
setIndex
(
int
I
)
MusicType
*
getPtr
(
)
{
Index
=
I
;
return
mptr
;
}
void
IncreasePlay
ed
()
void
Delet
ed
()
{
played
++
;
}
void
setName
(
string
N
)
{
name
=
N
;
}
void
setArtist
(
string
A
)
{
artist
=
A
;
}
string
getArtist
()
{
return
artist
;
}
string
getPkey
()
{
return
Pkey
;
}
int
getPlayed
()
{
return
played
;
Isdeleted
=
true
;
mptr
=
NULL
;
}
int
getIndex
()
{
return
Index
;
if
(
Isdeleted
==
false
)
{
return
(
mptr
->
GetNum
());
}
}
string
getName
()
{
return
name
;
{
if
(
Isdeleted
==
false
)
return
mptr
->
GetName
()
;
}
void
PrintNameNArtist
()
{
cout
<<
"
\t
°î¸í : "
<<
name
<<
endl
;
cout
<<
"
\t
¾ÆƼ½ºÆ® : "
<<
artist
<<
endl
<<
endl
;
}
void
PrintNameNIndex
()
{
cout
<<
"
\t
°î¸í : "
<<
name
<<
endl
;
cout
<<
"
\t
Index : "
<<
Index
<<
endl
<<
endl
;
string
getPkey
()
{
if
(
Isdeleted
==
false
)
return
mptr
->
GetPkey
();
}
void
PrintNameNIndex
();
};
...
...
Project/SortedLinkedList.h
View file @
82247e8
...
...
@@ -230,6 +230,7 @@ int SortedLinkedList<T>::Add(T &data)
template
<
typename
T
>
int
SortedLinkedList
<
T
>::
Delete
(
T
&
data
)
{
/*
bool MoreToSearch, found;
NodeType<T> *Pre = NULL;
DoublyIter<T> iter(*this);
...
...
@@ -242,11 +243,12 @@ int SortedLinkedList<T>::Delete(T& data)
if (data == iter.CurPointer->data) //현재 가리키는 원소가 패러미터로 넣은 값과 같은가?
{
found = true; //찾았으므로 found = true
if
(
P
re
==
NULL
)
//찾은 항목이 첫번째 원소일경우
if (
iter.CurPointer->p
re == NULL) //찾은 항목이 첫번째 원소일경우
{
NodeType
<
T
>*
temp
=
iter
.
CurPointer
;
//첫번째 원소의 다음원소를 저장할 임시 포인터선언
NodeType<T>* temp = iter.CurPointer
->next
; //첫번째 원소의 다음원소를 저장할 임시 포인터선언
delete m_pList; //첫원소를 삭제한다.
temp->pre = NULL;
temp->next = iter.CurPointer->next->next;
m_pList = temp; //찾은 항목이 첫 항목일경우 다음 원소를 첫번째 원소로 한다.
}
...
...
@@ -256,6 +258,7 @@ int SortedLinkedList<T>::Delete(T& data)
Pre->next = iter.CurPointer->next;
iter.CurPointer->next->pre = Pre;
delete iter.CurPointer;
}
...
...
@@ -279,7 +282,31 @@ int SortedLinkedList<T>::Delete(T& data)
else //못 찾으면
return 0;
*/
NodeType
<
T
>*
pNode
=
m_pList
;
int
positionIndex
=
Get
(
data
);
if
(
positionIndex
)
{
for
(
int
i
=
1
;
i
<
positionIndex
;
i
++
)
pNode
=
pNode
->
next
;
if
(
pNode
->
next
!=
NULL
)
pNode
->
next
->
pre
=
pNode
->
pre
;
else
m_pLast
=
pNode
->
pre
;
if
(
pNode
->
pre
!=
NULL
)
pNode
->
pre
->
next
=
pNode
->
next
;
else
m_pList
=
pNode
->
next
;
delete
pNode
;
m_nLength
--
;
return
1
;
}
else
return
0
;
}
...
...
Please
register
or
login
to post a comment