c 언어: 택배 관리 시스템

이 demo 는 다음 과 같은 몇 가지 기능 을 가지 고 있 습 니 다.
(1) 택배 소포 정 보 를 입력 한다.(2) 지 정 된 택배 소포 정 보 를 찾 습 니 다.(3) 모든 택배 소포 정 보 를 인쇄 한다.(4) 모든 택배 소포 수량 정 보 를 얻 기;(5) 택배 소포 정보 삭제;
/****** LinkList.h ******/

#pragma once
#include
#include
#include
#define SIZE 40

//          
struct LinkNode
{
	struct LinkNode *next;
};

//      
struct LinkList
{
	
	struct LinkNode header;
	int size;
};


//   
struct LinkList *Init_LinkList();
//  
void Insert_LinkList(struct LinkList *list, int pos, void *data);
//  
void Foreach_LinkList(struct LinkList *list,void(*myforeach)(void *));
//  
void Remove_LinkList(struct LinkList *list, int pos);
//    
void Destroy_LinkList(struct LinkList *list);
/**          ,             **/
//void FindPackageLinkList(struct LinkList *list,void * data,void (*myFunc)(void *));
//      
void GetMountPackage(struct LinkList *list);
//    
void Menu();

void ChangeLine();




/****** LinkList.c ******/

#include"LinkList.h"

//     
struct LinkList *Init_LinkList()
{
	struct LinkList *list = (struct LinkList*)malloc(sizeof(struct LinkList));
	list->header.next = NULL;
	list->size = 0;
	return list;
}

//    
void Insert_LinkList(struct LinkList *list, int pos, void *data)
{

	//      
	struct LinkNode *pCurrent = &(list->header);
	//    
	struct LinkNode *newnode = (struct LinkNode *)data;

	int i;
	if (NULL == list)
	{
		return;
	}

	if (NULL == data)
	{
		return;
	}

	if (pos < 0 || pos > list->size)
	{
		pos = list->size;
	}

	for (i = 0; i < pos; ++i)
	{
		pCurrent = pCurrent->next;
	}

	newnode->next = pCurrent->next;
	pCurrent->next = newnode;
	list->size++;

}

//    
void Foreach_LinkList(struct LinkList *list, void(*myforeach)(void *))
{

	//      
	struct LinkNode *pCurernt = list->header.next;
	if (NULL == list)
	{
		return;
	}

	if (NULL == myforeach)
	{
		return;
	}

	while (pCurernt != NULL)
	{
		myforeach(pCurernt);
		pCurernt = pCurernt->next;
	}

}

//      
void Remove_LinkList(struct LinkList *list, int pos)
{
	
	struct LinkNode *pCurrent = &(list->header);
	//        
	struct LinkNode *pDel = pCurrent->next;
	int i;
	if (NULL == list)
	{
		return;
	}

	if (pos < 0 || pos > list->size - 1)
	{
		return;
	}

	
	for (i = 0; i < pos; ++i)
	{
		pCurrent = pCurrent->next;
	}

	//                  
	pCurrent->next = pDel->next;
	
	list->size--;

}

//    
void Destroy_LinkList(struct LinkList *list)
{

	if (NULL == list)
	{
		return;
	}

	free(list);
	list = NULL;
}

//        
void GetMountPackage(struct LinkList *list)
{
	printf("          : %d 
"
,list->size); } // void Menu() { puts("**** ****"); puts("----------------------------"); puts("------ 0. ---------"); puts("------ 1. -------"); puts("----------------------------"); puts("********* ***********");; putchar('
'
); } void ChangeLine() { puts("---------------"); puts("---------------"); } /****** test.c ******/ #define _CRT_SECURE_NO_WARNINGS #include #include #include #include"LinkList.h" // , struct Package { struct LinkNode node; char packagName[SIZE]; // int layer; // int gria; // unsigned long long telephoneNumber; // }; // void myFunc(void *data) { struct Package *mPtr = (struct Package*)data; printf("
: %s
%d
%d
:%lld

"
,mPtr->packagName, mPtr->layer,mPtr->gria,mPtr->telephoneNumber); } /** **/ void FindPackageLinkList(struct LinkList *list,unsigned long long daya,struct Package *p); // void EnterPackageInformatin() { // struct LinkList *list = Init_LinkList(); int n,index,flag; unsigned long long int findNum; struct Package *mPtr = NULL; printf(" 0,
"
); scanf("%d",&n); flag = n; printf(" :%d

"
,n); mPtr = (struct Package *)malloc(sizeof(struct Package)*n); for (index=0;index<n;index++) { printf(" %d ( 、 、 、 )
"
,index+1); printf(" %d

"
,flag-index-1); mPtr[index].node.next = NULL; scanf("%s%d%d%lld",mPtr[index].packagName,&(mPtr[index].layer), &(mPtr[index].gria),&(mPtr[index].telephoneNumber)); puts("*********************"); Insert_LinkList(list,0,&mPtr[index]); } ChangeLine(); // Foreach_LinkList(list,myFunc); ChangeLine(); // GetMountPackage(list); ChangeLine(); puts(" !"); scanf("%lld",&findNum); FindPackageLinkList(list,findNum,mPtr); } /** **/ void FindPackageLinkList(struct LinkList *list,unsigned long long int data,struct Package *p) { struct LinkList *mPtr = list; struct LinkNode *mPcur = NULL; if (NULL == list||NULL == p) { return ; } //mPtr = (struct LinkList *)list; mPcur = mPtr->header.next; while (mPcur != NULL) { if (data == p->telephoneNumber) { puts(" ! , :"); myFunc(p); return; } else { puts(" , !"); return; } mPcur = mPcur->next; } if (NULL == mPcur) { return; } return ; } int main(){ int number; Menu(); // Again: scanf("%d",&number); switch (number) { case 0:exit(EXIT_FAILURE);break; case 1:EnterPackageInformatin();Menu();goto Again; default:perror(" !( )");Menu();goto Again; } system("pause"); return EXIT_SUCCESS; }

좋은 웹페이지 즐겨찾기