代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C
】
c中struct和指针写的职工管理系统
作者:
独步天下
/ 发布于
2013/9/13
/
834
一个控制台文件,试用用各类平台。。主要就是用到了struct和指针。。
#include<stdio.h> #include<stdlib.h> #include<string.h> #define LEN sizeof(struct worker) struct worker { long num; char name[20]; char sex[5]; int age; char edu[20]; char post[20]; long wage; char address[50]; long phone; struct worker * next; }; void f1() /*此函数仅用于美观作用*/ { int i; for( i=0;i<26;i++) printf(" *"); printf(" 请输入序号选择相应操作\n "); } void f2() /*此函数仅用于美观作用*/ { int i; for( i=0;i<26;i++) printf(" *"); } int k; /*定义全局变量*/ struct worker *creat(int k) /*创建数据函数*/ { struct worker *head,*p1,*p2; int i; for(i=1;i<=k;i++) { p1=(struct worker *)malloc(LEN); /*申请空间*/ printf("\n 请输入第 %d 个职工相关信息(请按以下顺序输入相关信息)\n\n 职工号 姓名 性别 年龄 学历 职务 工资 住址 电话\n\n",i); printf(" 请输入职工号: "); /*输入相关职工信息*/ scanf("%d",&p1->num); printf(" 请输入职工姓名: "); getchar(); gets(p1->name); printf(" 请输入职工性别: "); gets(p1->sex); printf(" 请输入职工年龄: "); scanf("%d",&p1->age); printf(" 请输入职工学历: "); getchar(); gets(p1->edu); printf(" 请输入职工职务: "); gets(p1->post); printf(" 请输入职工工资: "); scanf("%ld",&p1->wage); printf(" 请输入职工住址: "); getchar(); gets(p1->address); printf(" 请输入职工电话: "); scanf("%ld",&p1->phone); if(i==1) head=p1; /*定位*/ else p2->next=p1; p1->next=NULL; p2=p1; } printf("\n 新建数据成功!\n"); return(head); /*返回head*/ } struct worker *work() /*输入新数据的函数*/ { struct worker *p6; p6=(struct worker *)malloc(LEN); printf("\n 请输入职工相关信息(请按以下顺序输入相关信息)\n\n 职工号 姓名 性别 年龄 学历 职务 工资 住址 电话\n\n"); printf(" 请输入职工号: "); /*输入数据*/ scanf("%d",&p6->num); printf(" 请输入职工姓名: "); getchar(); gets(p6->name); printf(" 请输入职工性别: "); gets(p6->sex); printf(" 请输入职工年龄: "); scanf("%d",&p6->age); printf(" 请输入职工学历: "); getchar(); gets(p6->edu); printf(" 请输入职工职务: "); gets(p6->post); printf(" 请输入职工工资: "); scanf("%ld",&p6->wage); printf(" 请输入职工住址: "); getchar(); gets(p6->address); printf(" 请输入职工电话: "); scanf("%ld",&p6->phone); return(p6); /*返回head*/ } struct worker * add(struct worker *head,struct worker *work) /*添加数据函数*/ { struct worker *p3,*p4,*p5; p4=head; p3=work; if(head==NULL) { head=p3; p3->next=NULL; } /*申请空间*/ else while(( p3->num > p4->num )&&( p4->next!=NULL )) /*定位*/ { p5=p4; p4=p4->next; } if( p3->num <= p4->num ) { if(head==p4) head=p3; else p5->next=p3; p3->next=p4; } else { p4->next=p3; p3->next=NULL; } k=k+1; printf("\n 添加数据成功!\n"); return(head); /*返回head*/ } struct worker *delate(struct worker *head , int num) /*删除数据函数*/ { struct worker *p7,*p8; p7 = head; while(num!=p7->num && p7->next!=NULL) { p8=p7; p7 = p7->next;} /*定位*/ if( num==p7->num) { if(p7==head) head=p7->next; else p8->next = p7->next; /* 分离*/ printf("\n 删除数据成功!\n"); k=k-1; free(p7); /*释放*/ } else printf(" 没有职工号: %d !\n",num); return(head); /*返回head*/ } struct worker *repair(struct worker *head , int num2) /*修改数据函数*/ { struct worker *p13,*p14,*p15,*p16,*p17; int m=0; /*标记*/ printf("\n 请输入要修改的数据\n"); p14=work(); if(head->num==num2) /*判定*/ {p15=head->next; /*定位*/ head=p14; head->next=p15; while(p15!=NULL) p15=p15->next; m=1; /*标记*/ printf("\n 修改数据成功!\n"); } else /*定位*/ { p16=head->next; p13=p16; head->next=p13; while(p13!=NULL) /*判定+数据交换*/ { if(p13->num==num2) { p17=p13->next; p13->num=p14->num,strcpy(p13->name,p14->name),strcpy(p13->sex,p14->sex),p13->age=p14->age,strcpy(p13->edu,p14->edu),strcpy(p13->post,p14->post),p13->wage=p14->wage,strcpy(p13->address,p14->address),p13->phone=p14->phone; p13->next=p17; m=1; /*标记*/ } p13=p13->next; } if(m==0)printf("\n 您输入的职工号不存在,请查证后在操作\n"); } return(head); } void print(struct worker * head ) /*浏览信息函数*/ { struct worker *p9; p9 = head; /* p9指向第一个数据结点 */ while( p9!=NULL ) { printf("\n 职工号: %d\n 姓 名: %s\n 性 别: %s\n 年 龄: %d\n 学 历: %s\n 职 务: %s\n 工 资: %ld\n 住 址: %s\n 电 话: %ld\n\n\n",p9->num,p9->name,p9->sex,p9->age,p9->edu,p9->post,p9->wage,p9->address,p9->phone); p9 = p9->next ; } /* p9 指向下一个数据结点 */ } void search(struct worker * head,int a2 ) /*查询函数*/ { struct worker *p10; struct worker *p11; struct worker *p12; int num,m=0; long wage; char edu[20]; p10=p11=p12=head; if(a2>=1&&a2<=3) switch(a2) /*调用switch语句*/ { case 1:{printf(" 请输入您要查询的职工号: "); /*按职工号查询*/ scanf("%d",&num); while(p10!=NULL) { if(p10->num==num) /*判定+输出数据*/ { printf(" 职工号: %d\n 姓 名: %s\n 性 别: %s\n 年 龄: %d\n 学 历: %s\n 职 务: %s\n 工 资: %ld\n 住 址: %s\n 电 话: %ld\n\n",p10->num,p10->name,p10->sex,p10->age,p10->edu,p10->post,p10->wage,p10->address,p10->phone); m=1; } p10=p10->next; } if(m==0)printf("\n 您输入的职工号不存在,请查证后在操作\n"); break; } case 2:{printf(" 请输入您要查询的工资: "); /*按工资查询*/ scanf("%ld",&wage); while(p11!=NULL) { if(p11->wage>=wage) /*判定+输出数据*/ { printf(" 职工号: %d\n 姓 名: %s\n 性 别: %s\n 年 龄: %d\n 学 历: %s\n 职 务: %s\n 工 资: %ld\n 住 址: %s\n 电 话: %ld\n\n",p11->num,p11->name,p11->sex,p11->age,p11->edu,p11->post,p11->wage,p11->address,p11->phone); m=1; } p11=p11->next; } if(m==0)printf("\n 您输入的工资不存在,请查证后在操作\n"); break; } case 3:{printf(" 请输入您要查询的学历: "); /*按学历chaxun*/ getchar(); gets(edu); while(p12!=NULL) { if(strcmp(p12->edu,edu)==0) /*判定+输出数据*/ { printf(" 职工号: %d\n 姓 名: %s\n 性 别: %s\n 年 龄: %d\n 学 历: %s\n 职 务: %s\n 工 资: %ld\n 住 址: %s\n 电 话: %ld\n\n",p12->num,p12->name,p12->sex,p12->age,p12->edu,p12->post,p12->wage,p12->address,p12->phone); m=1; } p12=p12->next; } if(m==0)printf(" 您输入的学历不存在,请查证后在操作\n"); break; } } else printf("\n 您输入的序号有误,请查证后再操作\n\n"); } void save(struct worker * head ) /*保存信息函数*/ { struct worker *p18; FILE *fp; /*定义文件*/ p18 = head; fp=fopen("zgxx.txt","w"); /*打开文件*/ while( p18!=NULL ) /*输出数据*/ { fprintf(fp,"\n 职工号: %d\n 姓 名: %s\n 性 别: %s\n 年 龄: %d\n 学 历: %s\n 职 务: %s\n 工 资: %ld\n 住 址: %s\n 电 话: %ld\n\n\n",p18->num,p18->name,p18->sex,p18->age,p18->edu,p18->post,p18->wage,p18->address,p18->phone); p18 = p18->next ; } printf("\n 保存数据成功!\n"); /* p18 指向下一个数据结点 */ } void main() /*主函数*/ { /*定义*/ struct worker *head; int i,k,a1,a2,a3,num,num2; printf("\n 欢迎来到 职工信息管理系统\n"); for( i=0;i<26;i++) printf(" *"); printf("\n"); /*主菜单*/ loop1:printf("\n 1. 新建数据\n 2. 添加数据\n 3. 删除数据\n 4. 修改数据\n 5. 查询信息\n 6. 浏览信息\n 7. 保存信息\n 8. 退出\n"); f1(); scanf("%d",&a1); if(a1>=1&&a1<=8) switch(a1) /*调用switch语句*/ { case 1: { printf(" 请输入您要新建的数据的职工数: "); /*新建数据*/ scanf("%d",&k); head=creat(k); goto loop1; } case 2: { head=add(head,work()); /*添加数据*/ goto loop1; } case 3: { printf(" 请输入您要删除的数据的职工的职工号: "); /*删除数据*/ scanf("%d",&num); head=delate(head,num); goto loop1; } case 4: { printf(" 请输入您要修改的数据的职工的职工号: "); /*修改数据*/ scanf("%d",&num2); head=repair(head,num2); goto loop1; } /*查询信息*/ case 5: { loop2:printf("\n 1. 按职工号查询\n 2. 按工资查询\n 3. 按学历查询\n"); f1(); scanf("%d",&a2); search(head,a2); printf("\n 是否继续查询? 1. yes 2. no\n"); f1(); scanf("%d",&a3); if(a3==1)goto loop2; else goto loop1; } case 6: { print(head); /*浏览信息*/ goto loop1; } case 7:{ save(head); /*保存信息*/ goto loop1; } /*退出*/ case 8: { f2(); printf("\n\n\n 欢迎您再次使用职工信息管理系统\n\n\n"); f2(); printf("\n"); break; } } else { printf("\n 您输入的序号有误,请查证后再操作\n\n"); goto loop1; } }
试试其它关键字
职工管理系统
同语言下
.
获取手机通讯录 iOS去除数字以外的所有字符
.
异步加载音乐等资源
.
交通罚单管理系统
.
freemark实现,简单的替换
.
计算斐波那契数列
.
base64解码 包括解码长度
.
图像显示
.
冒泡排序
.
输入十进制数,输出指定进制
.
链式栈
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
独步天下
贡献的其它代码
(
2
)
.
第k大元素
.
c中struct和指针写的职工管理系统
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3