C语言链表课程设计(工资管理系统)

课程设计名称:工资管理系统
课程设计者:盈泽
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#define OK 1
#define Error 0
int n = 0;
/*工资管理系统
          ----- Disign By YZ团队*/
//----------------------------------------------------------------------------
typedef struct People
{
    int ID;//员工编号
    char Name[20];//姓名
    char Sex[20];//性别
    int Age;//年龄
    int Money;//薪资
    int Reward;//奖金
    int Insurance;//保险
    int Allmoney;//实际工资
    struct People*next;
} PeopleLink,*Pointer;
PeopleLink stu[105];
//-----------------------------------------------------------------------------
int User_Max();
FILE*openfile(char *fileaddress,char *openmode);
void Insert(Pointer*Head);//插入
void Serch(Pointer Head);//搜寻
void Update(Pointer*Head);//修改
void Delete(Pointer*Head);//删除
void Sort(Pointer Head);//排序
void pri(Pointer Head);//打印
void Sort(Pointer Head);//排序
void Save();//文件输出
Pointer maopao1(Pointer l);//年龄
Pointer maopao1(Pointer l);//薪金
Pointer maopao1(Pointer l);//实际收入
Pointer Creat();
Pointer Copy(Pointer Head);
Pointer Input(Pointer Head);//文件写入
Pointer Creatfile();
//-----------------------------------------------------------------------------
char Admin[200];
char Password[200];
int tt;
//-----------------------------------------------------------------------------
int main()//-----------------------------------------------------main() BY 师祥睿
{
    int t;
    int res = 3;
    int ans;
    Pointer Head= (Pointer)malloc(sizeof(PeopleLink));
    Pointer k;
    //k = Head;
    Head->next = NULL;
    printf("\t\t\t\t\t\t工资管理系统\n");
    printf("\t\t\t\t\t\t                                      -------------- Disign By YZ团队\n");
    while(res--)
    {
        if(User_Max())
            ans = 1;
        else
            ans = 0;
        if(ans == 1)
            break;
        else
            printf("密码输入错误,请重新输入----剩余输入密码次数%d次\n",res);
    }
    if(ans)
    {
        printf("载入中.....\n");
        Sleep(2000);
        void First();
        while(1)
        {
            printf("------------------------------------------------工资管理系统 v1.0------------------------------------------------\n");
            printf("\t\t\t\t\t\t1---添加工资记录\n");
            printf("\t\t\t\t\t\t2---显示工资记录\n");
            printf("\t\t\t\t\t\t3---根据姓名查询工资数据\n");
            printf("\t\t\t\t\t\t4---根据姓名删除工资数据\n");
            printf("\t\t\t\t\t\t5---根据姓名修改工资数据\n");
            printf("\t\t\t\t\t\t6---根据工资某项进行排序\n");
            printf("\t\t\t\t\t\t7---读取工资信息\n");
            printf("\t\t\t\t\t\t8---保存工资信息\n");
            printf("\t\t\t\t\t\t0---退出系统\n");
            printf("---------------------------------------------------------------------------------------------------------------------\n");
            printf("\t\t\t\t\t\t请输入选项(0~8)\n");
            scanf("%d",&t);
            if(t == 0)
                break;
            switch(t)
            {
            case 1:
                Insert(&Head);
                break;
            case 2:
                pri(Head);
                break;
            case 3:
                Serch(Head);
                break;
            case 4:
                Delete(&Head);
                break;
            case 5:
                Update(&Head);
                break;
            case 6:
                Sort(Head);
                break;
            case 7:
                Head = Creat();
                break;
            case 8:
                Input(Head);
            default:
                break;
            }
        }
    }
    else
        printf("登陆已被限制\n");

    return 0;
}
//-------------------------------------------------------------------------------
void Insert(Pointer*Head)//------------------------------------------------------Insert()and  User_Max() BY 杨州
{
    int num_t;
    Pointer p,q,r;
    printf("请输入编号:\n");
    scanf("%d",&num_t);
    p = q = *Head;
    p = p->next;
    while(p != NULL)
    {
        if(p->ID >= num_t)
        {
            printf("已经有相同编号:\n");
            return;
        }
        else
        {
            q = p;
            p = p->next;
        }
    }
    r = (Pointer)malloc(sizeof(PeopleLink));
    r->next = NULL;
    if(q == NULL)
        *Head = r;
    else
        q->next = r;
    r->ID = num_t;
    printf("请输入姓名:\n");
    scanf("%s",r->Name);
    printf("请输入性别:\n");
    scanf("%s",r->Sex);
    printf("请输入年龄:\n");
    scanf("%d",&r->Age);
    printf("请输入薪金:\n");
    scanf("%d",&r->Money);
    printf("请输入奖金:\n");
    scanf("%d",&r->Reward);
    printf("请输入保险金额:\n");
    scanf("%d",&r->Insurance);
    printf("计算实发工资为:\n");
    r->Allmoney = r->Money + r->Reward - r->Insurance;
    printf("%d\n",r->Allmoney);
}
void Serch(Pointer Head)//------------------------------------------------Serch()BY 李岩
{
    int flag = 1;
    char Name[20];
    Pointer p;
    p = Head;
    printf("请输入您要查找的姓名:\n");
    scanf("%s",Name);
    while(p != NULL && flag)
    {
        if((strcmp(Name,p->Name)) == NULL)
        {
            flag = 0;
        }
        else
        {
            p = p->next;
        }
    }
    if(flag == 0)
    {
        printf("ID\t姓名\t性别\t年龄\t薪金\t奖金\t保险金额\t实际收入\n");
        printf("%d\t",p->ID);
        printf("%s\t",p->Name);
        printf("%s\t",p->Sex);
        printf("%d\t",p->Age);
        printf("%d\t",p->Money);
        printf("%d\t",p->Reward);
        printf("%d\t\t",p->Insurance);
        printf("%d\n",p->Allmoney);
    }
    else
    {
        printf("没有要查询的记录\n");
    }
}
void Update(Pointer *Head)//----------------------------------------------------------Update() BY 付璐
{
    Pointer r;
    char Name[20];
    int flag = 1;
    r = *Head;
    r = r->next;
    printf("请输入要修改的姓名\n");
    scanf("%s",Name);
    while(r != NULL && flag)
    {
        if(strcmp(Name,r->Name) == NULL)
        {
            printf("请输入姓名:\n");
            scanf("%s",r->Name);
            printf("请输入性别:\n");
            scanf("%s",r->Sex);
            printf("请输入年龄:\n");
            scanf("%d",&r->Age);
            printf("请输入薪金:\n");
            scanf("%d",&r->Money);
            printf("请输入奖金:\n");
            scanf("%d",&r->Reward);
            printf("请输入保险金额:\n");
            scanf("%d",&r->Insurance);
            int t;
            t = r->Money + r->Reward - r->Insurance;
            printf("计算实发工资为:\n");
            r->Allmoney = t;
            printf("%d\n",r->Money);
            flag = 0;
        }
    }
    if(flag)
        printf("没有查询到要修改的记录:\n");
}
void Delete(Pointer *Head)//----------------------------------------------------------Delete() and pri?() BY 江海宾
{
    int flag = 1;
    char Name[20];
    printf("请输入您要删除记录的姓名:\n");
    scanf("%s",Name);
    Pointer p,q;
    p = q = *Head;
    while(p != NULL && flag)
    {
        if(strcmp(Name,p->Name) == NULL)
        {
            int t = 0;
            printf("是否要真的删除信息?请输入\n1--是\n0--否\n");
            scanf("%d",&t);
            if(t)
            {
                if(p == *Head)
                {
                    *Head = p->next;
                    free(p);
                    flag = 0;
                }
                else
                {
                    q->next = p->next;
                    free(p);
                    flag = 0;
                }
            }
            else
            {
                break;
            }

        }
        else
        {
            q = p;
            p = p->next;
        }
    }
    if(flag)
        printf("没有找到可以删除的数据\n");
}
int User_Max()
{
    int i;
    char c[100];
    char a[] = "admin";
    char b[] = "admin";
    printf("请输入管理员账号:\n");
    printf("账号:");
    scanf("%s",Admin);
    printf("请输入管理员密码:\n");
    for(i = 0;i < 100;++i)
    {
        Password[i] = getch();
        if(Password[i] == '\r')
            break;
        printf("*");
    }
    Password[i] = '\0';
    printf("\n");
    if((strcmp(Admin,a)) == 0 && (strcmp(Password,b)) == 0)
        return 1;
    else
        return 0;
}
void pri(Pointer Head)
{
    Pointer p;
    p = Head;
    int t = 0;
    if(p == NULL)
        printf("无记录\n");
    p = p->next;
    while(p!=NULL)
    {
        if(!t)
            printf("ID\t姓名\t性别\t年龄\t薪金\t奖金\t保险金额\t实发工资\n");
        t = 1;
        printf("%d\t",p->ID);
        printf("%s\t",p->Name);
        printf("%s\t",p->Sex);
        printf("%d\t",p->Age);
        printf("%d\t",p->Money);
        printf("%d\t",p->Reward);
        printf("%d\t\t",p->Insurance);
        printf("%d\t\n",p->Allmoney);
        p = p->next;
    }
}
/*void bubblesort(Pointer Head)
{
    if(Head->next == NULL || Head->next->Name == NULL)
    {
        return;
    }
    Pointer ll,pre,cur,next,end,temp;
    ll = (Pointer)malloc(sizeof(PeopleLink));
    ll = Head;
    end = NULL;
    while(Head !=end)
    {
        for(pre = ll, cur = pre -> next, next = cur -> next; next != end; pre = pre -> next, cur = cur -> next, next = next -> next)
        {

            if(cur->Age > next->Age)
            {
                cur -> next = next -> next;
                pre -> next = next;
                next -> next = cur;
                temp = next;
                next = cur;
                cur = temp;
            }
            end = cur;
        }
    }
}*/
Pointer maopao1(Pointer l)
{
    Pointer head,ptr,qtr,team;
    team=(Pointer)malloc(sizeof(PeopleLink));
    team->next=NULL;
    int len=0;
    int i,j;
    head = l;
    ptr=head->next;
    while(ptr != NULL)
    {
        ptr=ptr->next;
        len++;
    }
    for( i=0; i<len; i++)
    {
        qtr=head->next;
        ptr=head->next->next;
        for( j=0; j<len-i-1; j++)
        {
            if(qtr->Age>ptr->Age)
            {
                team->ID = qtr->ID;
                strcpy(team->Name,qtr->Name);
                strcpy(team->Sex,qtr->Sex);
                team->Money = qtr->Money;
                team->Age = qtr->Age;
                team->Reward = qtr->Reward;
                team->Insurance = qtr->Insurance;
                team->Allmoney = qtr->Allmoney;

                qtr->ID = ptr->ID;
                strcpy(qtr->Name,ptr->Name);
                strcpy(qtr->Sex,ptr->Sex);
                qtr->Money = ptr->Money;
                qtr->Age = ptr->Age;
                qtr->Reward = ptr->Reward;
                qtr->Insurance = ptr->Insurance;
                qtr->Allmoney = ptr->Allmoney;

                ptr->ID = team->ID;
                strcpy(ptr->Name,team->Name);
                strcpy(ptr->Sex,team->Sex);
                ptr->Money = team->Money;
                ptr->Age = team->Age;
                ptr->Reward = team->Reward;
                ptr->Insurance = team->Insurance;
                ptr->Allmoney = team->Allmoney;

            }
            qtr = qtr->next;
            ptr = ptr->next;
        }
    }
    return head;
}
Pointer maopao2(Pointer l)
{
    Pointer head,ptr,qtr,team;
    team=(Pointer)malloc(sizeof(PeopleLink));
    team->next=NULL;
    int len=0;
    int i,j;
    head = l;
    ptr=head->next;
    while(ptr != NULL)
    {
        ptr=ptr->next;
        len++;
    }
    for( i=0; i<len; i++)
    {
        qtr=head->next;
        ptr=head->next->next;
        for( j=0; j<len-i-1; j++)
        {
            if(qtr->Money>ptr->Money)
            {
                team->ID = qtr->ID;
                strcpy(team->Name,qtr->Name);
                strcpy(team->Sex,qtr->Sex);
                team->Money = qtr->Money;
                team->Age = qtr->Age;
                team->Reward = qtr->Reward;
                team->Insurance = qtr->Insurance;
                team->Allmoney = qtr->Allmoney;

                qtr->ID = ptr->ID;
                strcpy(qtr->Name,ptr->Name);
                strcpy(qtr->Sex,ptr->Sex);
                qtr->Money = ptr->Money;
                qtr->Age = ptr->Age;
                qtr->Reward = ptr->Reward;
                qtr->Insurance = ptr->Insurance;
                qtr->Allmoney = ptr->Allmoney;

                ptr->ID = team->ID;
                strcpy(ptr->Name,team->Name);
                strcpy(ptr->Sex,team->Sex);
                ptr->Money = team->Money;
                ptr->Age = team->Age;
                ptr->Reward = team->Reward;
                ptr->Insurance = team->Insurance;
                ptr->Allmoney = team->Allmoney;

            }
            qtr = qtr->next;
            ptr = ptr->next;
        }
    }
    return head;
}
Pointer maopao3(Pointer l)
{
    Pointer head,ptr,qtr,team;
    team=(Pointer)malloc(sizeof(PeopleLink));
    team->next=NULL;
    int len=0;
    int i,j;
    head = l;
    ptr=head->next;
    while(ptr != NULL)
    {
        ptr=ptr->next;
        len++;
    }
    for( i=0; i<len; i++)
    {
        qtr=head->next;
        ptr=head->next->next;
        for( j=0; j<len-i-1; j++)
        {
            if(qtr->Allmoney>ptr->Allmoney)
            {
                team->ID = qtr->ID;
                strcpy(team->Name,qtr->Name);
                strcpy(team->Sex,qtr->Sex);
                team->Money = qtr->Money;
                team->Age = qtr->Age;
                team->Reward = qtr->Reward;
                team->Insurance = qtr->Insurance;
                team->Allmoney = qtr->Allmoney;

                qtr->ID = ptr->ID;
                strcpy(qtr->Name,ptr->Name);
                strcpy(qtr->Sex,ptr->Sex);
                qtr->Money = ptr->Money;
                qtr->Age = ptr->Age;
                qtr->Reward = ptr->Reward;
                qtr->Insurance = ptr->Insurance;
                qtr->Allmoney = ptr->Allmoney;

                ptr->ID = team->ID;
                strcpy(ptr->Name,team->Name);
                strcpy(ptr->Sex,team->Sex);
                ptr->Money = team->Money;
                ptr->Age = team->Age;
                ptr->Reward = team->Reward;
                ptr->Insurance = team->Insurance;
                ptr->Allmoney = team->Allmoney;

            }
            qtr = qtr->next;
            ptr = ptr->next;
        }
    }
    return head;
}
void Sort(Pointer Head)//-------------------------------------Sort()、maopao1()、maopao2()、maopao3() BY 张建华
{
    int s;
    Pointer t = NULL;
    printf("请输入需要排序信息\n");
    printf("1---年龄\n");
    printf("2---薪金\n");
    printf("3---实际工资\n");
    scanf("%d",&s);
    t = Head->next;
    if(s == 1)
    {
        t = maopao1(Head);
        pri(t);
    }
    else if(s == 2)
    {
        t = maopao2(Head);
        pri(t);
    }
    else if(s == 3)
    {
        t = maopao3(Head);
        pri(t);
    }
}
Pointer Input(Pointer Head)//-------------------------------------------------------Input()、openfile() and Creat() BY 陈祥田
{
    FILE*fp;
    if((fp = fopen("d:\\input.txt","w+")) == NULL);
    if((fp = fopen("d:\\input.txt","at+")) == NULL)
    {
        printf("Can't open the file\n");
    }
    if(n == 0)
    {
        fprintf(fp,"%s","ID      姓名    性别    年龄    薪金    奖金    保险金额      实际收入\n");
        n = 1;
    }
    Pointer p;
    p = Head;
    p = p->next;
    while(p!=NULL)
    {
        fprintf(fp,"%d\t",p->ID);
        fprintf(fp,"%s\t",p->Name);
        fprintf(fp,"%s\t",p->Sex);
        fprintf(fp,"%d\t",p->Age);
        fprintf(fp,"%d\t",p->Money);
        fprintf(fp,"%d\t",p->Reward);
        fprintf(fp,"%d\t\t",p->Insurance);
        fprintf(fp,"%d\n",p->Allmoney);
        p = p->next;
    }
    fflush(fp);
    fclose(fp);
}
FILE*openfile(char *fileaddress,char *openmode)
{
    FILE *fp;
    if((fp = fopen(fileaddress,openmode))== NULL)
    {
        printf("File open error!\n");
        exit(0);
    }
    return fp;
}
Pointer Creatfile()
{
    Pointer p,team,ptr,head;
    char name[20],sex[20];
    FILE* fp = openfile("d:\\input.txt","a+");
    head = (Pointer)malloc(sizeof(PeopleLink));
    team = (Pointer)malloc(sizeof(PeopleLink));
    team->next = NULL;
    p = head;
    p->next = NULL;

    fscanf(fp,"%d%s%s%d%d%d%d%d",&team->ID,name,sex,&team->Age,&team->Money,&team->Reward,&team->Insurance,&team->Allmoney);
    strcpy(team->Name,name);
    strcpy(team->Sex,sex);
    while(!feof(fp))
    {
        p->next = (Pointer)malloc(sizeof(PeopleLink));
        p = p->next;
        p->next = NULL;
        p->ID = team->ID;
        strcpy(p->Name,team->Name);
        strcpy(p->Sex,team->Sex);
        p->Money = team->Money;
        p->Age = team->Age;
        p->Reward = team->Reward;
        p->Insurance = team->Insurance;
        p->Allmoney = team->Allmoney;
        fscanf(fp,"%d%s%s%d%d%d%d%d",&team->ID,name,sex,&team->Age,&team->Money,&team->Reward,&team->Insurance,&team->Allmoney);
        strcpy(team->Name,name);
        strcpy(team->Sex,sex);
    }
    fclose(fp);
    return head;
}
Pointer Creat()
{
    Pointer newlist;
    newlist = Creatfile();
    //newlist = newlist->next;
    return newlist;
}

        这个课程设计其实很简单,但是作为二本院校的我做起来还是废了很大的劲儿才写的出来(毕竟大二才学数据结构,这是我大一写的代码)。

  • 28
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值