📄 wage.c
字号:
void WageSort()
{
user *p,*q,*temp,*head; /*定义临时指针*/
clrscr();/*清屏*/
head=First->next; /*将原表的头指针所指的下一个结点作头指针*/
First->next=NULL; /*第一个结点为新表的头结点*/
Last=First; /*尾指针等于头指针*/
while(head!=NULL) /*当原表不为空时,进行排序*/
{
temp=head; /*取原表的头结点*/
head=head->next; /*原表头结点指针后移*/
p=First; /*设定移动指针p,从头指针开始*/
q=First; /*设定移动指针q做为p的前驱,初值为头指针*/
while((temp->Wage>p->Wage)&&p!=NULL) /*作编号比较*/
{
q=p; /*待排序点值大,应往后插,所以新表指针后移*/
p=p->next;
}
if(p==q) /*p==q,说明待排序点值小,应排在首位*/
{
temp->next=p; /*待排序点的后继为p*/
p->prior=temp; /*p的前驱结点指向待排序结点*/
First=temp; /*新头结点为待排序点*/
First->prior=NULL; /*头指针的前驱为空*/
}
else /*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/
{
temp->next=p; /*t的后继是p*/
temp->prior=q; /*t的前驱是q*/
q->next=temp; /*q的后继是temp*/
if(p==NULL) /*判p是否为空*/
Last=temp; /*将temp赋值为尾指针*/
else
p->prior=temp; /*否则将temp赋值给p的前驱*/
}
}
printf("\t\t Sort by wage sucess!!!\n");/*索引排序成功*/
List();
}
void Statistics()
{
user *p,*q,*temp,*head; /*定义临时指针*/
clrscr();/*清屏*/
head=First->next; /*将原表的头指针所指的下一个结点作头指针*/
First->next=NULL; /*第一个结点为新表的头结点*/
Last=First; /*尾指针等于头指针*/
while(head!=NULL) /*当原表不为空时,进行排序*/
{
temp=head; /*取原表的头结点*/
head=head->next; /*原表头结点指针后移*/
p=First; /*设定移动指针p,从头指针开始*/
q=First; /*设定移动指针q做为p的前驱,初值为头指针*/
while((temp->Wage>p->Wage)&&p!=NULL) /*作编号比较*/
{
q=p; /*待排序点值大,应往后插,所以新表指针后移*/
p=p->next;
}
if(p==q) /*p==q,说明待排序点值小,应排在首位*/
{
temp->next=p; /*待排序点的后继为p*/
p->prior=temp; /*p的前驱结点指向待排序结点*/
First=temp; /*新头结点为待排序点*/
First->prior=NULL; /*头指针的前驱为空*/
}
else /*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/
{
temp->next=p; /*t的后继是p*/
temp->prior=q; /*t的前驱是q*/
q->next=temp; /*q的后继是temp*/
if(p==NULL) /*判p是否为空*/
Last=temp; /*将temp赋值为尾指针*/
else
p->prior=temp; /*否则将temp赋值给p的前驱*/
}
}
printf("\n\n\n\n\n\n");
printf("\t\t User %s's wage %9.2f is Max",Last->UserName,Last->Wage);
printf("\n\n\n");
printf("\t\t User %s's wage %9.2f is Min",First->UserName,First->Wage);
printf("\n\n\n");
printf("\t\t Press any key to return......");
getch();
}
//按键函数
int GetKey(void)
{ int key;
//bioskey为调用BIOS键盘接口
key=bioskey(0);
//位移
if(key<<8)
{
key=key&0x00ff;
}
//返回按键
return key;
}
//管理子菜单
void ManageMenu()
{
int key;
clrscr();
while(1) /*主菜单*/
{
printf("\n\n\n\n\n");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|\n");
puts("\t\t|* *|");
printf("\t\t|* 1 --Insert User Information by UserNo *|\n");
puts("\t\t|* *|");
printf("\t\t|* 2 --Insert User Information to the file*|\n");
puts("\t\t|* *|");
printf("\t\t|* 3 --Delete User Information *|\n");
puts("\t\t|* *|");
printf("\t\t|* 4 --Update User Information *|\n");
puts("\t\t|* *|");
printf("\t\t|* 0 --Return to the Mainmenu *|\n");
puts("\t\t|* *|");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|\n");
gotoxy(21,27);
key=GetKey(); /*调用自定义函数,读取一个键*/
switch(key)
{
case 49: InsertToList(); break;
case 50: InsertToFile();break;
case 51: DeleteUser();break;
case 52: UpdateInfo();break;
case 48: return;
}
clrscr(); /*每执行完一项功能后,自动清屏*/
}
}
//排序子菜单
void SortMenu()
{
int key;
clrscr();
while(1) /*主菜单*/
{
printf("\n\n\n\n\n");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|\n");
puts("\t\t\|* *|");
printf("\t\t|* 1 --Sort by wage *|\n");
puts("\t\t|* *|");
printf("\t\t|* 2 --Sort by UserNo *|\n");
puts("\t\t|* *|");
printf("\t\t|* 0 --Return to the Mainmenu *|\n");
puts("\t\t|* *|");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|\n");
gotoxy(21,15);
key=GetKey(); /*调用自定义函数,读取一个键*/
switch(key)
{
case 49: WageSort();break;
case 50: IndexSort();break;
case 48: return;
}
clrscr(); /*每执行完一项功能后,自动清屏*/
}
}
//文件子菜单
void FileMenu()
{
int key;
clrscr();
while(1) /*主菜单*/
{
printf("\n\n\n\n\n");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|\n");
puts("\t\t|* *|");
printf("\t\t|* 1 --Save to the file *|\n");
puts("\t\t|* *|");
printf("\t\t|* 2 --Load from the file *|\n");
puts("\t\t|* *|");
printf("\t\t|* 0 --Return to the Mainmenu *|\n");
puts("\t\t|* *|");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|\n");
gotoxy(21,15);
key=GetKey(); /*调用自定义函数,读取一个键*/
switch(key)
{
case 49: SaveToFile();break;
case 50: LoadfromFile();break;
case 48: return;
}
clrscr(); /*每执行完一项功能后,自动清屏*/
}
}
void MaxMin()
{
if(List() == 1)
{
printf("error");
}
else
{
Statistics();
}
}
//显示子菜单
void DisplayMenu()
{
int key;
clrscr();
while(1) /*主菜单*/
{
printf("\n\n\n\n\n");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|\n");
puts("\t\t|* *|");
printf("\t\t|* 1 --Display all the Information *|\n");
puts("\t\t|* *|");
printf("\t\t|* 2 --Display a record *|\n");
puts("\t\t|* *|");
printf("\t\t|* 3 --Display Max and Min *|\n");
puts("\t\t|* *|");
printf("\t\t|* 0 --Return to the Mainmenu *|\n");
puts("\t\t|* *|");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*||*|\n");
gotoxy(21,17);
key=GetKey(); /*调用自定义函数,读取一个键*/
switch(key)
{
case 49: List();break;
case 50: Display();break;
case 51: MaxMin();break;
case 48: return;
}
clrscr(); /*每执行完一项功能后,自动清屏*/
}
}
//主函数
main()
{
user *p;
FILE *fp;
int ch;
char str[100];
char ctr[100];
char filename[128] = "e:\\admin.txt";
int i,key,result;
Admin admin;
struct date d; /* 定义时间结构体*/
getdate(&d); /*读取系统日期并把它放到结构体d中*/
clrscr();
printf("\n\n\n\n");
printf("||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||\n");
printf("| |\n");
printf("|-------------------------------WageManage System------------------------------|\n");
printf("|----------------------------------------------------------------Press # to end|\n");
printf("|----------------------------------------------------------------%d---%d---%d--|\n",d.da_year,d.da_mon,d.da_day);
printf("| |\n");
printf("||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||*||\n");
//管理员登录
lp:printf("\n\n\n\n");
printf("\t\t Please input UserName:");
scanf("%s",admin.AdminName);
if(strcmp(admin.AdminName,"#") == 0)
{
exit(1);
}
printf("\n\n");
printf("\t\t Please input Password:");
scanf("%s",admin.Password);
if(strcmp(admin.Password,"#")==0)
{
exit(1);
}
if((fp = fopen(filename,"r")) == NULL)
{
printf("Can't Open the File %s\n",filename);
}
fgets(ctr,50,fp);
strcpy(str,admin.AdminName);
strcat(str,"&");
strcat(str,admin.Password);
result = strcmp(str,ctr);
if(result != 0)
{
clrscr();
printf("\n\n\n\n\n\n");
printf("\t\t Invalid UserName and Password,Please input again!");
goto lp;
}
Initial();
clrscr();
while(1)
{
printf("\n\n\n\n");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*|*||*|\n");
puts("\t\t|* *|");
printf("\t\t|*-------------WageManage System-------------*|\n");
puts("\t\t|* *|");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*|*||*|\n");
printf("\n\n");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*|*||*|\n");
puts("\t\t|* *|");
printf("\t\t|* 1 --Create UserList *|\n");
puts("\t\t|* *|");
printf("\t\t|* 2 --Manage User Information *|\n");
puts("\t\t|* *|");
printf("\t\t|* 3 --Search User Information *|\n");
puts("\t\t|* *|");
printf("\t\t|* 4 --Sort UserList *|\n");
puts("\t\t|* *|");
printf("\t\t|* 5 --Display User Information *|\n");
puts("\t\t|* *|");
printf("\t\t|* 6 --Save and load file *|\n");
puts("\t\t|* *|");
printf("\t\t|* ESC-Quit the System *|\n");
puts("\t\t|* *|");
printf("\t\t|*||*||*||*||*||*||*||*||*||*||*||*||*||*|*||*|\n");
gotoxy(21,29);
//调用自定义函数,读取一个键
key=GetKey();
switch(key)
{
//创建员工信息
case 49:CreateUser();break;
//管理员工信息
case 50:ManageMenu();break;
//查询员工信息
case 51:Search();break;
//根据员工编号或工资排序
case 52:SortMenu();break;
//显示员工信息
case 53:DisplayMenu();break;
//文件处理
case 54:FileMenu();break;
//退出系统
case ESC:exit(1);
}
//每执行完一项功能后,自动清屏
clrscr();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -