#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#include<string.h>
typedef struct Node {
int nId;
char* name;
char* tel;
struct Node* pNext;
} List;
typedef struct PAGE {
int TotalInfo;
int TotalPage;
int CurrentPage;
int onePageInfo;
}page;
int g = 0;
char key;
void nwun(page* ppage);
void show(List* pHead, page* ppage);
page* Getpage(List* head, int n);
void AddNode(List** ppHead, List** ppEnd, List* pNode);
List* GetNode();
int Getid();
char* Getname();
char* tel();
void intmain(List** pHead, List** pEnd, int n);
void TurnPage(List* pHead, page* pPage);
void bro(List* pHead);
char* aa();
List* in();
void string(List* pHead);
void shan(List** ppHead, List** ppEnd, int id);
void dide(List** ppHead, List** ppEnd);
void up(List* pHead);
int main() {
List* pHead = NULL;
List* pEnd = NULL;
intmain(&pHead, &pEnd, 105);
while (1)
{
printf("*********************************\n");
printf("*\tѧ ϵͳ\t*\n");
printf("*********************************\n");
printf("*\t ѡ б \t\t*\n");
printf("*********************************\n");
printf("*\t1. ѧ Ϣ\t\t*\n");
printf("*\t2. ѧ Ϣ\t\t*\n");
printf("*\t3. ѯѧ \t\t*\n");
printf("*\t4.ɾ ѧ Ϣ\t\t*\n");
printf("*\t5. ѧ Ϣ\t\t*\n");
printf("*\tq. ˳ ϵͳ\t\t*\n");
printf("*********************************\n");
char c;
scanf_s(" %c", &c);
switch (c)
{
case'1':
g = 1;
bro(pHead);
break;
case'2':
AddNode(&pHead, &pEnd, in());
break;
case'3':
g = 3;
string(pHead);
break;
case'4':
g = 4;
dide(&pHead, &pEnd);
break;
case'5':
g = 5;
up(pHead);
break;
case'q':
return 0;
break;
}
}
return 0;
}
void AddNode(List** ppHead, List** ppEnd, List* pNode) {
if (NULL == *ppHead) {
*ppHead = pNode;
}
else {
(*ppEnd)->pNext = pNode;
}
*ppEnd = pNode;
}
List* GetNode() {
List* pTemp = malloc(sizeof(List));
pTemp->nId = Getid();
pTemp->name = Getname();
pTemp->tel = tel();
pTemp->pNext = NULL;
return pTemp;
}
int Getid()
{
static int id = 0;
id++;
return id;
}
char* Getname()
{
char* str = malloc(6);
for (int i = 0;i < 5;i++)
{
str[i] = rand() % 26 + 'a';
}
str[5] = '\0';
return str;
}
char* tel()
{
char* tel = malloc(12);
switch (rand() % 4) {
case 0:
strcpy_s(tel, 12, "123");
break;
case 1:
strcpy_s(tel, 12, "133");
break;
case 2:
strcpy_s(tel, 12, "155");
break;
default:
strcpy_s(tel, 12, "166");
break;
}
for (int i = 3; i < 11; i++) {
tel[i] = '0' + rand() % 10;
}
tel[11] = '\0';
return tel;
}
page* Getpage(List* pHead, int n)
{
page* ppage = malloc(sizeof(page));
ppage->onePageInfo = n;
ppage->CurrentPage = 0;
ppage->TotalInfo = 0;
List* temp = pHead;
while (temp != NULL)
{
ppage->TotalInfo++;
temp = temp->pNext;
}
ppage->TotalPage = (ppage->TotalInfo + ppage->onePageInfo - 1) / ppage->onePageInfo;
return ppage;
}
void intmain(List** pHead, List** pEnd, int n)
{
srand(time(NULL));
for (int i = 0; i < n; i++) {
AddNode(pHead, pEnd, GetNode());
}
}
void show(List* pHead, page* ppage) {
int begin = (ppage->CurrentPage - 1) * ppage->onePageInfo;
int end = ppage->CurrentPage * ppage->onePageInfo - 1;
int nCount = 0;
while (pHead != NULL) {
if (nCount >= begin && nCount <= end) {
printf("%d %s %s\n", pHead->nId, pHead->name, pHead->tel);
}