?? main.c
字號:
#include "myStd.h"
#include "main.h"
#include "util.h"
#include "dataProcess.h"
int g_nState = STA_MAINMENU;
ListNode* pAllBooks = NULL;
void test()
{
GetDays2Now("2004/12/12");
}
void main()
{
char ch;
int nSelect = -1;
test();
pAllBooks = GetAllBooks(pAllBooks);
while (TRUE)
{
DataProcess(g_nState);
PrintMenu(g_nState);
ch = getch();
nSelect = ch-'0';
ProcessSel(nSelect);
}
}
void PrintMenu(int nState)
{
switch(g_nState)
{
case STA_MAINMENU:
system("cls");
printf(STR_MAINMENU);
printf("\nPlease Input Num: ");
break;
case STA_MAIN_INPUT:
printf(STR_MAIN_INPUT);
break;
case STA_MAIN_SORT:
system("cls");
printf(STR_MAIN_SORT);
printf("\nPlease Input Num: ");
break;
case STA_MAIN_QUERY:
system("cls");
printf(STR_MAIN_QUERY);
printf("\nPlease Input Num: ");
break;
case STA_MAIN_BORROW:
system("cls");
PrintBook4Lent();
printf(STR_MAIN_BORROW);
printf("\nPlease Input Num: ");
break;
case STA_MAIN_STATIC:
system("cls");
//printf(STR_MAIN_STATIC);
PrintStatic();
printf("\nPress any key to Main Menu: ");
break;
default:
break;
}
}
void ProcessSel(nSel)
{
if(STA_MAINMENU == g_nState)
{
if(1 == nSel)
{
g_nState = STA_MAIN_INPUT;
}
else if(2 == nSel)
{
g_nState = STA_MAIN_SORT;
}
else if(3 == nSel)
{
g_nState = STA_MAIN_QUERY;
}
else if(4 == nSel)
{
g_nState = STA_MAIN_BORROW;
}
else if(5 == nSel)
{
g_nState = STA_MAIN_STATIC;
}
else if(6 == nSel)
{
exit(0);
}
else
{
g_nState = STA_MAINMENU;
}
}
else if(STA_MAIN_SORT == g_nState)
{
if(1 == nSel)
{
g_nState = STA_MAIN_SORT_1;
}
else if(2 == nSel)
{
g_nState = STA_MAIN_SORT_2;
}
else if(3 == nSel)
{
g_nState = STA_MAIN_SORT_3;
}
else
{
g_nState = STA_MAINMENU;
}
}
else if(STA_MAIN_QUERY == g_nState)
{
if(1 == nSel)
{
g_nState = STA_MAIN_QUERY_1;
}
else if(2 == nSel)
{
g_nState = STA_MAIN_QUERY_2;
}
else if(3 == nSel)
{
g_nState = STA_MAIN_QUERY_3;
}
else if(4 == nSel)
{
g_nState = STA_MAIN_QUERY_4;
}
else
{
g_nState = STA_MAINMENU;
}
}
else if(STA_MAIN_BORROW == g_nState)
{
if(1 == nSel)
{
g_nState = STA_MAIN_BORROW_1;
}
else
{
g_nState = STA_MAINMENU;
}
}
else
{
g_nState = STA_MAINMENU;
}
}
void DataProcess(int nState)
{
if(STA_MAIN_INPUT == nState)
{
system("cls");
InputBookInfo();
}
else if(STA_MAIN_SORT_1 == nState)
{
system("cls");
SortByID();
}
else if(STA_MAIN_SORT_2 == nState)
{
system("cls");
SortByLend();
}
else if(STA_MAIN_SORT_3 == nState)
{
system("cls");
SortByStore();
}
else if(STA_MAIN_QUERY_1== nState)
{
system("cls");
Query1();
}
else if(STA_MAIN_QUERY_2 == nState)
{
system("cls");
Query2();
}
else if(STA_MAIN_QUERY_3 == nState)
{
system("cls");
Query3();
}
else if(STA_MAIN_QUERY_4 == nState)
{
system("cls");
Query4();
}
else if(STA_MAIN_BORROW_1 == nState)
{
BorrowBook();
}
}
void InputBookInfo()
{
//input data
char ch[20];
int n=0;
BookRec newBook;
printf("Input Book ID: ");
scanf("%s", ch);
while(FindBook(pAllBooks, ch) >= 0)
{
printf("You have a same ID, Please Input another ID: ");
scanf("%s", ch);
}
strcpy(newBook.ID, ch);
printf("Input Book Name: ");
scanf("%s", ch);
strcpy(newBook.Name, ch);
printf("Input Book Author: ");
scanf("%s", ch);
strcpy(newBook.Author, ch);
printf("Input Lent Num: ");
scanf("%d", &n);
newBook.nLentNum = n;
printf("Input Storage Num: ");
scanf("%d", &n);
newBook.nStoreNum = n;
printf("Input Book Sort: ");
scanf("%s", ch);
strcpy(newBook.Sort, ch);
printf("Input publish com. : ");
scanf("%s", ch);
strcpy(newBook.PublishCom, ch);
//add data to list
if(pAllBooks == NULL)
{
pAllBooks = ListGenerate(&newBook, sizeof(BookRec));
}
else
{
ListAddTail(pAllBooks, &newBook, sizeof(BookRec));
}
SaveAllBooks(pAllBooks);
}
void SortByID()
{
ListNode* pNewBooks = NULL;
ListNode* pTmp = pAllBooks;
BookRec* pBook = NULL;
char chId[20];
while(pTmp != NULL)
{
ListNode* pTmp01 = pTmp->pNext;
pBook = pTmp->pData;
memcpy(chId, pBook->ID, 20);
while(pTmp01 != NULL)
{
char chId01[20];
memcpy(chId01, ((BookRec*)(pTmp01->pData))->ID, 20);
if(strcmp(chId, chId01)>0)
{
strcpy(chId, chId01);
pBook = pTmp01->pData;
}
pTmp01 = pTmp01->pNext;
}
if(pNewBooks == NULL)
{
pNewBooks = ListGenerate(pBook, sizeof(BookRec));
}
else
{
ListAddTail(pNewBooks, pBook, sizeof(BookRec));
}
pTmp = ListDeleteNode(pTmp, pBook, sizeof(BookRec));
}
pAllBooks = pNewBooks;
//print result
{
ListNode* pTmp02 = pAllBooks;
printf("ID\tName\n\n");
while(pTmp02 != NULL)
{
printf("%s\t%s\n", ((BookRec*)(pTmp02->pData))->ID, ((BookRec*)(pTmp02->pData))->Name);
pTmp02 = pTmp02->pNext;
}
printf(STR_MAIN_INPUT);
}
//save result
{
ListNode* pTmp03 = pAllBooks;
if(NULL != pTmp03)
{
FILE* stream = fopen(STR_FILE_SORT1, "w+");
if(stream != NULL)
{
fprintf(stream, "ID\tName\n\n");
while(pTmp03 != NULL)
{
fprintf(stream, "%s\t%s\n", ((BookRec*)(pTmp03->pData))->ID,
((BookRec*)(pTmp03->pData))->Name);
pTmp03 = pTmp03->pNext;
}
fclose(stream);
}
}
}
}
void SortByLend()
{
ListNode* pNewBooks = NULL;
ListNode* pTmp = pAllBooks;
BookRec* pBook = NULL;
//char chId[20];
int nn = -1;
while(pTmp != NULL)
{
ListNode* pTmp01 = pTmp->pNext;
pBook = pTmp->pData;
//memcpy(chId, pBook->ID, 20);
nn = pBook->nLentNum;
while(pTmp01 != NULL)
{
//char chId01[20];
int nn1 = -1;
//memcpy(chId01, pTmp01->pData->ID, 20);
nn1 = ((BookRec*)(pTmp01->pData))->nLentNum;
//if(strcmp(chId, chId01)>0)
if(nn1<nn)
{
//strcpy(chId, chId01);
nn = nn1;
pBook = pTmp01->pData;
}
pTmp01 = pTmp01->pNext;
}
if(pNewBooks == NULL)
{
pNewBooks = ListGenerate(pBook, sizeof(BookRec));
}
else
{
ListAddTail(pNewBooks, pBook, sizeof(BookRec));
}
pTmp = ListDeleteNode(pTmp, pBook, sizeof(BookRec));
}
pAllBooks = pNewBooks;
//print result
{
ListNode* pTmp02 = pAllBooks;
printf("ID\tName\tLendNum\n\n");
while(pTmp02 != NULL)
{
printf("%s\t%s\t%d\n", ((BookRec*)(pTmp02->pData))->ID,
((BookRec*)(pTmp02->pData))->Name,
((BookRec*)(pTmp02->pData))->nLentNum);
pTmp02 = pTmp02->pNext;
}
printf(STR_MAIN_INPUT);
}
//save result
{
ListNode* pTmp03 = pAllBooks;
if(NULL != pTmp03)
{
FILE* stream = fopen(STR_FILE_SORT2, "w+");
if(stream != NULL)
{
fprintf(stream, "ID\tName\tLendNum\n\n");
while(pTmp03 != NULL)
{
fprintf(stream, "%s\t%s\t%d\n",
((BookRec*)(pTmp03->pData))->ID,
((BookRec*)(pTmp03->pData))->Name,
((BookRec*)(pTmp03->pData))->nLentNum);
pTmp03 = pTmp03->pNext;
}
fclose(stream);
}
}
}
}
void SortByStore()
{
ListNode* pNewBooks = NULL;
ListNode* pTmp = pAllBooks;
BookRec* pBook = NULL;
//char chId[20];
int nn = -1;
while(pTmp != NULL)
{
ListNode* pTmp01 = pTmp->pNext;
pBook = pTmp->pData;
//memcpy(chId, pBook->ID, 20);
nn = pBook->nStoreNum;
while(pTmp01 != NULL)
{
//char chId01[20];
int nn1 = -1;
//memcpy(chId01, pTmp01->pData->ID, 20);
nn1 = ((BookRec*)(pTmp01->pData))->nStoreNum;
//if(strcmp(chId, chId01)>0)
if(nn1<nn)
{
//strcpy(chId, chId01);
nn = nn1;
pBook = pTmp01->pData;
}
pTmp01 = pTmp01->pNext;
}
if(pNewBooks == NULL)
{
pNewBooks = ListGenerate(pBook, sizeof(BookRec));
}
else
{
ListAddTail(pNewBooks, pBook, sizeof(BookRec));
}
pTmp = ListDeleteNode(pTmp, pBook, sizeof(BookRec));
}
pAllBooks = pNewBooks;
//print result
{
ListNode* pTmp02 = pAllBooks;
printf("ID\tName\tStore\n\n");
while(pTmp02 != NULL)
{
printf("%s\t%s\t%d\n", ((BookRec*)(pTmp02->pData))->ID,
((BookRec*)(pTmp02->pData))->Name,
((BookRec*)(pTmp02->pData))->nStoreNum);
pTmp02 = pTmp02->pNext;
}
printf(STR_MAIN_INPUT);
}
//save result
{
ListNode* pTmp03 = pAllBooks;
if(NULL != pTmp03)
{
FILE* stream = fopen(STR_FILE_SORT3, "w+");
if(stream != NULL)
{
fprintf(stream, "ID\tName\tStore\n\n");
while(pTmp03 != NULL)
{
fprintf(stream, "%s\t%s\t%d\n", ((BookRec*)(pTmp03->pData))->ID,
((BookRec*)(pTmp03->pData))->Name,
((BookRec*)(pTmp03->pData))->nStoreNum);
pTmp03 = pTmp03->pNext;
}
fclose(stream);
}
}
}
}
void Query1()
{
char ch[20];
ListNode* pTmp = pAllBooks;
printf("Please Enter Name: ");
scanf("%s", ch);
while(pTmp != NULL)
{
if(strcmp(((BookRec*)(pTmp->pData))->Name, ch) == 0)
{
PrintBookInfo(pTmp->pData);
}
pTmp = pTmp->pNext;
}
printf(STR_MAIN_INPUT);
}
void Query2()
{
char ch[20];
ListNode* pTmp = pAllBooks;
printf("Please Enter Sort: ");
scanf("%s", ch);
while(pTmp != NULL)
{
if(strcmp(((BookRec*)(pTmp->pData))->Sort, ch) == 0)
{
PrintBookInfo(pTmp->pData);
}
pTmp = pTmp->pNext;
}
printf(STR_MAIN_INPUT);
}
void Query3()
{
char ch[20];
ListNode* pTmp = pAllBooks;
printf("Please Enter Author: ");
scanf("%s", ch);
while(pTmp != NULL)
{
if(strcmp(((BookRec*)(pTmp->pData))->Author, ch) == 0)
{
PrintBookInfo(pTmp->pData);
}
pTmp = pTmp->pNext;
}
printf(STR_MAIN_INPUT);
}
void Query4()
{
char ch[20];
ListNode* pTmp = pAllBooks;
printf("Please Enter Publish: ");
scanf("%s", ch);
while(pTmp != NULL)
{
if(strcmp(((BookRec*)(pTmp->pData))->PublishCom, ch) == 0)
{
PrintBookInfo(pTmp->pData);
}
pTmp = pTmp->pNext;
}
printf(STR_MAIN_INPUT);
}
void PrintBookInfo(BookRec* pBook)
{
printf("////////////////////////\n");
printf("Book ID: %s\n", pBook->ID);
printf("Book Name: %s\n", pBook->Name);
printf("Book Author: %s\n", pBook->Author);
printf("Lent Num: %d\n", pBook->nLentNum);
printf("Store Num: %d\n", pBook->nStoreNum);
printf("Book Sort: %s\n", pBook->Sort);
printf("Company: %s\n\n", pBook->PublishCom);
}
void BorrowBook()
{
BorrowRec borrow;
time_t tNow;
char ch[20];
time(&tNow);
GetCurDate(tNow, ch);
memcpy(borrow.BorrowTime, ch, 20);
tNow = TimeAddDays(tNow, 90);
GetCurDate(tNow, ch);
memcpy(borrow.ReturnTime, ch, 20);
printf("\n\nBorrow Date: %s\n", borrow.BorrowTime);
printf("Return Date: %s\n", borrow.ReturnTime);
printf("Input Book ID: ");
scanf("%s", ch);
if(FindBook(pAllBooks, ch) >= 0)
{
ListNode* pTmp = pAllBooks;
int i;
int nCount = FindBook(pAllBooks, ch);
for(i=0; i<nCount; i++)
{
pTmp = pTmp->pNext;
}
if(strcmp(((BookRec*)(pTmp->pData))->ID, ch) == 0)
{
if(((BookRec*)(pTmp->pData))->nStoreNum > 0)
{
strcpy(borrow.BookID, ch);
printf("Input Card ID: ");
scanf("%s", ch);
strcpy(borrow.CardID, ch);
printf("Input Borrower Name: ");
scanf("%s", ch);
strcpy(borrow.Borrower, ch);
//save to file
{
FILE* stream = fopen(STR_FILE_LENT, "a");
if(stream != NULL)
{
fprintf(stream, "Book ID: %s\n", borrow.BookID);
fprintf(stream, "Card ID: %s\n", borrow.CardID);
fprintf(stream, "Borrower: %s\n", borrow.Borrower);
fprintf(stream, "Borrow Date: %s\n", borrow.BorrowTime);
fprintf(stream, "Return Date: %s\n", borrow.ReturnTime);
fprintf(stream, "\n\n");
fclose(stream);
}
}
}
else
{
printf("All the books loaned.\n");
}
}
}
else
{
printf("Can not find this book.\n");
}
printf("Press any key to Main Menu: ");
}
void PrintBook4Lent()
{
ListNode* pList = pAllBooks;
printf("ID\tName\tStore\n\n");
while(pList != NULL)
{
printf("%s\t%s\t%d\n", ((BookRec*)(pList->pData))->ID,
((BookRec*)(pList->pData))->Name,
((BookRec*)(pList->pData))->nStoreNum);
pList = pList->pNext;
}
}
void PrintStatic()
{
ListNode* pLstBorrow = NULL;
FILE* stream = NULL;
stream = fopen(STR_FILE_STATIC, "w+");
pLstBorrow = GetAllBorrow(pLstBorrow);
{
//ListNode* pLstTmp = pLstBorrow;
while (pLstBorrow != NULL)
{
ListNode* pLstTmp = pLstBorrow;
BorrowRec* pBorrow;
char chBorrower[20];
int nCount = 0;
pBorrow = pLstBorrow->pData;
strcpy(chBorrower, pBorrow->Borrower);
printf("Borrower: %s\n\n", chBorrower);
if(stream != NULL)
{
fprintf(stream, "Borrower: %s\n\n", chBorrower);
}
while(pLstTmp != NULL)
{
pBorrow = pLstTmp->pData;
if(strcmp(pBorrow->Borrower, chBorrower) == 0)
{
char ch01[20];
int n = 0;
GetBookName(pAllBooks, pBorrow->BookID, ch01);
printf("Book Name: %s\n", ch01);
if(stream != NULL)
{
fprintf(stream, "Book Name: %s\n", ch01);
}
printf("Borrow Time: %s\n", pBorrow->BorrowTime);
if(stream != NULL)
{
fprintf(stream, "Borrow Time: %s\n", pBorrow->BorrowTime);
}
pLstTmp = pLstTmp->pNext;
pLstBorrow = ListDeleteNode(pLstBorrow, pBorrow, sizeof(BorrowRec));
nCount++;
}
else
{
pLstTmp = pLstTmp->pNext;
}
}
printf("\nBorrowed Book Num: %d", nCount);
printf("\n/////////////////////////////////\n\n");
if(stream != NULL)
{
fprintf(stream, "\nBorrowed Book Num: %d", nCount);
fprintf(stream, "\n/////////////////////////////////\n\n");
}
}
}
printf("\n\n");
if(stream != NULL)
{
fclose(stream);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -