c 언어: 택배 관리 시스템
(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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.