⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wage.c

📁 自编工资管理系统
💻 C
📖 第 1 页 / 共 3 页
字号:
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 + -