课程设计名称:工资管理系统
课程设计者:盈泽
#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;
}
这个课程设计其实很简单,但是作为二本院校的我做起来还是废了很大的劲儿才写的出来(毕竟大二才学数据结构,这是我大一写的代码)。