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

📄 renshiguanli.txt

📁 人事管理系统
💻 TXT
字号:
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 

struct stud 
{ 
long num; 
char name[20]; 
double score; 
}; 

typedef struct stucode 
{ 
struct stud student ; 
struct stucode *next; 
}L; 


void menu(); 
void createlist(struct stucode **r); 
void out(struct stucode *r); 
void search1(struct stucode *r); 
void search2(struct stucode *r); 
void del(struct stucode **r); 
void insert(struct stucode **r); 
void sort(struct stucode **r); 

void main() 
{ 
char choose; 
int flag=1; 
struct stucode *r=NULL; 

while(flag) 
{ 
system("cls"); 
menu(); 
choose=getchar(); 
switch(choose) 
{ 
case '1': 
createlist(&r); 
out(r); 
printf("Testing function 1\nPress any key to continue\n"); 
getchar(); 
getchar(); 
break; 

case '2': 
search1(r); 
printf("Testing function 1\nPress any key to continue\n"); 
getchar(); 
getchar(); 
break; 

case '3': 
search2(r); 
printf("Testing function 1\nPress any key to continue\n"); 
getchar(); 
getchar(); 
break; 

case '4': 
del(&r); 
out(r); 
printf("Testing function 1\nPress any key to continue\n"); 
getchar(); 
getchar(); 
break; 

case '5': 
insert(&r); 
out(r); 
printf("Testing function 1\nPress any key to continue\n"); 
getchar(); 
getchar(); 
break; 

case '6': 
sort(&r); 
out(r); 
printf("Testing function 1\nPress any key to continue\n"); 
getchar(); 
getchar(); 
break; 

case '7': 
out(r); 
printf("Testing function 7\nPress any key to continue\n"); 
getchar(); 
getchar(); 
break; 

case '0': 
flag=0; 
printf("The end.\n"); 
break; 

default: printf("\nWrong Selection!(选择错误,请重选!)\n");getchar();getchar(); 
} 
} 
} 

void createlist(struct stucode **r) 
{ 
struct stucode *p,*t; 
long n; 
char a[20]; 
double s; 
if(*r) *r=NULL; 
printf(" \n请输入:\n 学号(请按学号升序排列) 姓名 分数 (若要结束请输入三个为零)\n"); 
scanf("%ld%s%lf",&n,a,&s); 
if(n==0) return; 

p=(L *)malloc(sizeof(L)); 
p->student.num=n; 
strcpy(p->student.name,a); 
p->student.score=s; 
p->next=NULL; 
*r=p; 

scanf("%ld%s%lf",&n,a,&s); 

while(n) 
{ 
t=p; 
p=(L *)malloc(sizeof(L)); 
p->student.num=n; 
strcpy(p->student.name,a); 
p->student.score=s; 
p->next=NULL; 
t->next=p; 
scanf("%ld%s%lf",&n,a,&s); 
} 
} 

void search1(struct stucode *r) 
{ 
long x; 
if(!r) 
{ 
printf("没有学生信息可查询!\n"); 
return ; 
} 
printf(" 请输入要查询的学生信息的学生学号:\n"); 
scanf("%ld",&x); 
while(r&&r->student.num!=x) 
r=r->next; 
if(r==NULL) 
printf("Error! No such student !\n"); 
else 
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score); 
} 
void search2(struct stucode *r) 
{ 
char m[20]; 
if(!r) 
{ 
printf("没有学生信息可查询!\n"); 
return ; 
} 

printf(" 请输入要查询的学生信息的学生姓名:\n"); 
scanf("%s",m); 
while(r&&strcmp(r->student.name,m)) 
r=r->next; 
if(r==NULL) 
printf("Error! No such student !\n"); 
else 
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score); 
} 
void del(struct stucode **r) 
{ 
long k; 
struct stucode *p=*r,*t; 
if(!(*r)) 
{ 
printf("没有学生信息可删除 !\n"); 
return ; 
} 
printf(" 请输入要删除的学生信息的学生学号:\n"); 
scanf("%ld",&k); 

if(p->student.num==k) 
*r=(*r)->next,free(p); 
else 
{ 
while(p->next&&p->next->student.num!=k) 
p=p->next; 
if(p->next==NULL) 
printf("Error! No such student !\n"); 
else 
{ 
t=p->next; 
p->next=p->next->next; 
free(t); 
} 
} 

} 
void insert(struct stucode **r) 
{ 
long n; 
char a[20]; 
double s; 



L *p,*t,*k; 
printf(" 请输入要插入的学生信息的学生学号 姓名 分数:\n"); 
scanf("%ld%s%lf",&n,a,&s); 
p=(L *)malloc(sizeof(L)); 
p->student.num=n; 
p->student.score=s; 
strcpy(p->student.name,a); 
if(!(*r)) 
{ 
*r=p; 
(*r)->next=NULL; 
return ; 
} 
if(p->student.num<(*r)->student.num) 
p->next=(*r),(*r)=p; 
else 
{ 
t=*r; 
k=t; 
while(t->next&&t->next->student.num<=p->student.num) 
t=t->next; 
p->next=t->next; 
t->next=p; 
*r=k; 
} 
} 


void sort(struct stucode **r) 
{ 
struct stucode *t,*p,*q,*z; 
if(!r) 
{ 
printf("没有学生信息可排序!\n"); 
return ; 
} 

if(!(*r)||!(*r)->next) 
return; 

t=*r; 
p=t->next; 
t->next=NULL; 
while(p) 
{ 
q=p->next; 
if(p->student.score>t->student.score) 
{ 
p->next=t; 
t=p; 
} 
else 
{ 
z=t; 
while(z->next&&z->next->student.score>=p->student.score) 
z=z->next; 
p->next=z->next; 
z->next=p; 
} 


p=q; 
} 
*r=t; 

} 
void out(struct stucode *r) 
{ 
printf("\n\n"); 
if(!r) 
{ 
printf("没有学生信息可输出!\n"); 
return ; 
} 

while(r) 
{ 
printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score); 
r=r->next; 
} 
printf("\n\n"); 
} 
void menu() 
{ 
printf("\n 学生信息管理系统\n"); 
printf("\n 菜单\n\n"); 
printf("\n 1建立链表并显示\n"); 
printf("\n 2查找某学号的学生信息\n"); 
printf("\n 3查找某姓名的学生信息\n"); 
printf("\n 4删除某学号的学生信息\n"); 
printf("\n 5插入新的学生信息\n"); 
printf("\n 6按分数降序排列输出\n"); 
printf("\n 7输出\n"); 
printf("\n 0退出\n"); 

printf("\n 请选择您要执行的选项:\n"); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -