#包含" stdlib.h "
#包含“conio.h”
#包含" string.h "
結構學生
{
無符號數;
字符名稱[10];
char tele[12];
struct SStudent * link
};
void main()
{
struct s student * create table();
void AppendToTable(struct s student * stu);
void InsertToTable(struct s student * stu);
void query table(struct s student * stu,無符號數);
void sort table(struct s student * stu);
void print table(struct s student * stu);
void Save(struct s student * stu);
無效載荷(結構學生* stu);
void Help();
void modi(struct s student * h);
void search(struct s student * h);struct SStudent *學生;
無符號數;
char鍵值;
student = create table();
//clrscr();
系統(“cls”);
help();
printf(" \ n = ");
while((keyValue = getche())!= ' q ' & amp& amp鍵值!= ' Q ' & amp& amp鍵值!= 27)
{
puts(" ");
開關(鍵值)
{
大小寫“L”:大小寫“L”:
PrintTable(學生);打破;
案例“D”:案例“D”:
printf("請輸入您要刪除的號碼:");
scanf("%d ",& amp號);
QueryTable(學生,數字);
打破;
案例“A”:案例“A”:
AppendToTable(學生);打破;
格“I”:格“I”:
InsertToTable(學生);打破;
大小寫' S ':大小寫' S ':
SortTable(學生);
puts(" Sort compiled!請使用命令L列出。);
打破;
格“F”:格“F”:
搜索(學生);
打破;
大小寫“M”:大小寫“M”:
莫迪(學生);
打破;格“V”:格“V”:
保存(學生);打破;
大小寫“O”:大小寫“O”:
負載(學生);打破;
格“H”:格“H”:
help();打破;
默認值:puts("錯誤命令!");
}
printf(" \ n = ");
}
}
struct SStudent * CreateTable()
{
struct SStudent * stu
stu =(struct s student *)malloc(sizeof(struct s student));
斯圖-& gt;數字= 0;
斯圖-& gt;name[0]= ' \ 0 ';
斯圖-& gt;tele[0]= ' \ 0 ';
斯圖-& gt;link = NULL
返回(stu);
}
void AppendToTable(struct s student * stu)
{
struct SStudent * next,* last
int數;
last = stu
while(last->;link)last = last-& gt;鏈接;
printf("請輸入數字(0表示退出):");
scanf("%d ",& amp號);
while(數字)
{
next =(struct s student *)malloc(sizeof(struct s student));
下壹個-& gt;數=數;
printf("請輸入姓名:");
scanf("%s ",next-& gt;姓名);
printf("請輸入tele:");
scanf("%s ",next-& gt;tele);
最後-& gt;link = next
last = last-& gt;鏈接;
printf(" \ n請輸入數字(0表示退出):");
scanf("%d ",& amp號);
}
最後-& gt;link = NULL
}
void InsertToTable(struct s student * stu)
{
struct SStudent * next,* last
int數;
printf("請輸入數字(0表示退出):");
scanf("%d ",& amp號);
while(數字)
{
next =(struct s student *)malloc(sizeof(struct s student));
下壹個-& gt;數=數;
printf("請輸入姓名:");
scanf("%s ",next-& gt;姓名);
printf("請輸入tele:");
scanf("%s ",next-& gt;tele);
last = stu
while(last->;鏈接)
{
if(last-& gt;鏈接-& gt;編號& gt下壹個-& gt;編號)
{
下壹個-& gt;link = last-& gt;鏈接;
最後-& gt;link = next
打破;
}
else last = last-& gt;鏈接;
}
printf(" \ n請輸入數字(0表示退出):");
scanf("%d ",& amp號);
}
}
void query table(struct s student * stu,無符號數)
{
struct SStudent * temp,* next
next = stu
while(下壹個->;鏈接)
{
如果(下壹步-& gt;鏈接-& gt;數字==數字)
{
temp = next-& gt;鏈接;
下壹個-& gt;link = next-& gt;鏈接-& gt;鏈接;
免費(臨時);
}
else next = next-& gt;鏈接;
}
}
void print table(struct s student * stu)
{
斯圖=斯圖-& gt;鏈接;
如果(!斯圖)
{
puts("桌子是空的!");
返回;
}
printf(" number \ tname \ ttele \ n ");
當(斯圖)
{
printf("%3d\t ",stu-& gt;號);
printf("%-s\t ",stu-& gt;姓名);
printf("%-s\t ",stu-& gt;tele);
printf(" \ n ");
斯圖=斯圖-& gt;鏈接;
}
}
void SortTable(結構學生*學生)
{
struct SStudent * next,* last,* temp
int標誌;
last = stu
while(last->;鏈接)
{
next = stuflag = 1;
while(下壹個->;鏈接!= last->;鏈接)
{
如果(下壹步-& gt;鏈接-& gt;編號& gt最後-& gt;鏈接-& gt;編號)
{
temp = last-& gt;鏈接;
最後-& gt;link = last-& gt;鏈接-& gt;鏈接;
temp->;link = next-& gt;鏈接;
下壹個-& gt;link = temp
flag = 0;
打破;
}
else next = next-& gt;鏈接;
}
if(flag)last = last-& gt;鏈接;
}
}
無效保存(結構學生*學生)
{
字符文件名[13];
FILE * fileSave
printf("請輸入您要保存的文件名:");
scanf("%s ",文件名);
if((fileSave = fopen(filename," WB))= = 0)
{
printf("無法打開文件%s!\n ",文件名);
返回;
}
puts("保存...");
斯圖=斯圖-& gt;鏈接;
當(斯圖)
{
fwrite(stu,sizeof(struct SStudent),1,file save);
斯圖=斯圖-& gt;鏈接;
}
puts("保存完成!");
}
無效載荷(結構學生*學生)
{ char filename[13];& ltbr & gtFILE * fileLoad& ltbr & gtstruct SStudent * temp& ltbr & gtwhile(stu->;鏈接)& ltbr & gt{ & ltbr & gttemp = stu-& gt;鏈接;& ltbr & gt斯圖-& gt;link = stu-& gt;鏈接-& gt;鏈接;& ltbr & gt免費(臨時);& ltbr & gt}
temp =(struct s student *)malloc(sizeof(struct s student));
printf("請輸入您想要加載的文件名:");
scanf("%s ",文件名);
if((fileLoad = fopen(filename," Rb))= = 0)
{
printf("無法打開文件%s!\n ",文件名);
返回;
}
puts("正在加載...");
while(fread(temp,sizeof(struct SStudent),1,fileLoad))
{斯圖-& gt;link = temp& ltbr & gt斯圖=斯圖-& gt;鏈接;& ltbr & gttemp =(struct s student *)malloc(sizeof(struct s student));& ltbr & gt}
斯圖-& gt;link = NULL
puts("裝載完畢!");
}
無效幫助()
{ puts(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
puts(" *系統命令幫助* ");
puts(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
puts(" * L =列出所有記錄* ");
puts(" * D =刪除由數字選擇的記錄* ");
puts(" * A =追加記錄* ");
puts(" * I =插入記錄* ");
puts(" * S =排序記錄* ");
puts(" * F=搜索記錄* ");
puts(" * M= Modi記錄* ");puts(" * H =顯示此幫助消息* ");
puts(" * V =將記錄保存到文件* ");
puts(" * O =從文件中加載記錄* ");
puts(" * Q =退出系統* ");
puts(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
}
void modi(結構學生*h)
{
struct s student * p;/*移動指針*/
無符號數字;/*用於存儲學生編號的變量*/
//clrscr();/*清空屏幕*/
系統(“cls”);
printf("請輸入要修改的數字\ n ");
scanf("%d ",& ampnum);/*輸入學號*/
p = h;/*將頭指針賦給p*/
while((p-& gt;號!= num)& amp;& ampp!=NULL) /*當記錄的名稱不是您要查找的名稱並且指針不為空時*/
p = p-& gt;鏈接;/*將指針移動到下壹個節點*/
If(p==NULL) /*如果指針為空*/
printf(" \n列表編號%d學生\ n ",編號);/*顯示沒有學生*/
否則/*修改找到的記錄信息*/
{
printf("請輸入新名稱:");
scanf("%s ",p-& gt;姓名);
printf("請輸入新的電話號碼:");
scanf("%s ",p-& gt;tele);
printf(" | number | name | tel | \ n ");
printf(" |-|-|-| \ n ");
printf(" | % 6d | %-10s | % 12s | \ n ",p-& gt;編號,p-& gt;姓名,p-& gt;tele);}
}
無效搜索(結構學生*h)
{
struct s student * p;/*移動指針*/
char s[10];/*用於存儲名稱的字符數組*/
//clrscr();/*清空屏幕*/
系統(“cls”);
printf("請輸入搜索名稱\ n ");
scanf("%s ",s);/*輸入姓名*/
p = h;/*將頭指針賦給p*/
while(strcmp(p-& gt;姓名和地址。& ampp!=NULL) /*當記錄的名稱不是您要查找的名稱並且指針不為空時*/
p = p-& gt;鏈接;/*將指針移動到下壹個節點*/
If(p==NULL) /*如果指針為空*/
printf("\nlist no %s student\n ",s);/*顯示沒有學生*/
Else /*顯示找到的記錄信息*/
{
printf(" \ n \ n * * * * * * * * * * * * * * * * * * * * *已找到* * * * * * * * * * * * * * * * * * * * * * * * \ n ");
printf(" | number | name | tel | \ n ");
printf(" |-|-|-| \ n ");
printf(" | % 10d | %-10s | % 12s | \ n ",p-& gt;編號,p-& gt;姓名,p-& gt;tele);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * end * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
}
}