<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現職工資訊管理系統的具體程式碼,供大家參考,具體內容如下
程式碼實現如下:
#include <stdio.h>//輸入、輸出指令 #include <malloc.h>//在記憶體中動態的分配size位元組的儲存區 #include <string.h>//字串相關操作指令 #include <stdlib.h>//五種型別、一些宏和通用工具函數 #include<conio.h>//通過鍵盤產生的對應操作 #include <MEMORY.H>//儲存存取標頭檔案 typedef struct node { char name[20]; int age; int worktime; char sex[20]; char marrige[20]; int grade; char tired[20]; struct node *next; }STU; void output(STU *head); STU *Create(); STU *findByName(STU *head,char *name); STU *findByWorktime(STU *head,int worktime); STU *findByGrade(STU *head,int grade); void find(STU *head); STU *insert(STU *head); STU *findByNumEx(STU *head,char num[],STU **ppbefore); STU *del(STU *head); void update(STU *head); void sort(STU *head); void save_info(STU *head); void copy(); STU *load_info(); char *password(); void main() { char *p; int i,n=0; char a[40]; printf(" tt*******歡迎使用職工資訊管理系統********nn"); printf(" tt請輸入口令:n"); printf(" tt----------:n"); for(i=0;i<3;i++) { n=n+1; printf(" tt第%d次輸入:",i+1); p=password(); if(p!=NULL) { STU *head; int choice; int n; head=NULL; printf("n tt你是合法使用者!nn"); for (i = 0; i < 0x7FFFFFF; i++); for (i = 0; i < 0x7FFFFFF; i++); for (i = 0; i < 0x7FFFFFF; i++); system("cls"); for(;;) { system("cls"); printf(" tt*******職工資訊管理系統********n"); printf(" tt* 1.輸入職工資訊 *n"); printf(" tt* 2.顯示全部職工資訊 *n"); printf(" tt* 3.查詢職工資訊 *n"); printf(" tt* 4.新增職工資訊 *n"); printf(" tt* 5.刪除職工資訊 *n"); printf(" tt* 6.修改職工資訊 *n"); printf(" tt* 7.對職工資訊排序 *n"); printf(" tt* 8.儲存當前資訊到檔案 *n"); printf(" tt* 9.備份資訊資料到檔案 *n"); printf(" tt* 10.從檔案載入職工資訊 *n"); printf(" tt* 0.退出系統 *n"); printf(" tt*******************************n"); printf(" tt請選擇(0-9):"); scanf("%d",&choice); if(choice==0) break; switch(choice) { case 1: head=Create(); break; case 2: output(head);break; case 3:find(head);break; case 4: head=insert(head); break; case 5: head=del(head); break; case 6: update(head);break; case 7: sort(head);break; case 8: save_info(head);break; case 9: copy();break; case 10:head=load_info();break; } printf("按任意鍵繼續...."); getch(); } printf(" tt感謝您的使用,再見!n"); break; } else { printf("n tt你是非法使用者!nn"); if(n==3) printf(" tt你的錯誤口令次數超過3次,程式關閉!n"); } } } STU *Create() { STU *head,*pnew,*pend; head=NULL; printf("輸入職工資訊:n姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); for(;;) { pnew=(STU *)malloc(sizeof(STU)); scanf("%s",pnew->name); if(strcmp(pnew->name,"0")==0) { printf("員工資訊錄入完畢n"); break; } scanf("%d%d%s%s%d%s",&pnew->age,&pnew->worktime,pnew->sex,pnew->marrige,&pnew->grade,pnew->tired); pnew->next=NULL; if(head==NULL){ head=pnew; pend=pnew; } else{ pend->next=pnew; pend=pend->next; } } return head; } void output(STU *head) { STU *p; printf("職工資訊如下:n姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); for(p=head;p!=NULL;p=p->next) printf("%st%dt%dt%st%st%dt%sn",p->name,p->age,p->worktime,p->sex,p->marrige,p->grade,p->tired); } void find(STU *head) { STU *p; char name[20]; int worktime,grade,i; int choice; system("cls"); for(;;) { system("cls"); printf(" tt*******職工資訊查詢系統********n"); printf(" tt* 1.按職工姓名查詢 *n"); printf(" tt* 2.按職工工齡查詢 *n"); printf(" tt* 3.按職工級別查詢 *n"); printf(" tt* 0.退出系統 *n"); printf(" tt*******************************n"); printf(" tt請選擇(0-3):"); scanf("%d",&choice); if(choice==0) break; switch(choice) { case 1: printf("請輸入職工姓名:"); scanf("%s",name); p=findByName(head,name);break; case 2: printf("請輸入職工工齡:"); scanf("%d",&worktime); p=findByWorktime(head,worktime);break; case 3: printf("請輸入職工級別:"); scanf("%d",&grade); p=findByGrade(head,grade);break; } if(p==NULL) { printf("無與此職工相關的資訊!an"); } else { if(choice==1) { printf("職工資訊如下:n姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); for(p=head;p!=NULL;p=p->next) { if(strcmp(p->name,name)==0) printf("%st%dt%dt%st%st%dt%sn",p->name,p->age,p->worktime,p->sex,p->marrige,p->grade,p->tired); } } else if(choice==2) { printf("職工資訊如下:n姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); for(p=head;p!=NULL;p=p->next) { if(p->worktime==worktime) printf("%st%dt%dt%st%st%dt%sn",p->name,p->age,p->worktime,p->sex,p->marrige,p->grade,p->tired); } } else if(choice==3) { printf("職工資訊如下:n姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); for(p=head;p!=NULL;p=p->next) { if(p->grade==grade) printf("%st%dt%dt%st%st%dt%sn",p->name,p->age,p->worktime,p->sex,p->marrige,p->grade,p->tired); } } } printf("按任意鍵繼續...."); getch(); } printf(" tt您已退出查詢系統nn"); } STU *findByName(STU *head,char *name) { STU *p,*result=NULL; for(p=head;p!=NULL;p=p->next) if(strcmp(p->name,name)==0) { result=p; break; } return result; } STU *findByWorktime(STU *head,int worktime) { STU *p,*result=NULL; for(p=head;p!=NULL;p=p->next) if(p->worktime==worktime) { result=p; break; } return result; } STU *findByGrade(STU *head,int grade) { STU *p,*result=NULL; for(p=head;p!=NULL;p=p->next) if(p->grade==grade) { result=p; break; } return result; } STU *insert(STU *head) { STU *pnew,*pcur,*pbefore,*p; int choice; printf("輸入職工資訊:n"); for(;;) { //1.申請一個新節點並賦值 pnew=(STU *)malloc(sizeof(STU)); printf("職工資訊如下:n姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); scanf("%s%d%d%s%s%d%s",pnew->name,&pnew->age,&pnew->worktime,pnew->sex,pnew->marrige,&pnew->grade,pnew->tired); pnew->next=NULL; //2.將新節點插入到連結串列 //若連結串列為空,則直接插入;若連結串列不為空,則查詢位置,然後插入 if(head==NULL) { head=pnew; } else { pcur=NULL; for(p=head;p!=NULL;pbefore=p,p=p->next) if(strcmp(p->name,pnew->name)==1) { pcur=p; break; } //查詢之後,判斷pcur是否為空, //若pcur為空,則pnew所指節點應插入到連結串列尾部 if(pcur==NULL) { pbefore->next=pnew; } //若pcur非空,則pnew所指節點應插入到pcur之前,pbefore之後,此時,又分兩種情況: //pcur指向的是首節點,或者pcur指向後續節點; else { if(pcur==head) { pnew->next=pcur; head=pnew; } else { pnew->next=pcur; pbefore->next=pnew; } } } printf("請選擇:按1繼續新增->按0結束新增n"); printf("choice="); scanf("%d",&choice); if(choice==0) { printf("資訊新增完畢!n"); break; } } return head; } STU *del(STU *head) { STU *presult,*pbefore; char name[20]; printf("要刪除的職工資訊:"); scanf("%s",&name); presult=findByNumEx(head,name,&pbefore); if(presult!=NULL) { printf("找到了!職工資訊如下:n姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); printf("%st%dt%dt%st%st%dt%sn",presult->name,presult->age,presult->worktime,presult->sex,presult->marrige,presult->grade,presult->tired); if(presult==head) { head=presult->next; } else { pbefore->next=presult->next; } printf("刪除成功---> "); } else printf("無與此職工相關的資訊aan"); return head; } //函數說明: // 在head所指向連結串列中,查詢學號為num的節點 // 找到後,返回兩個值:指向當前節點的指標presult,指向當前節點的前一節點的指標pbefore, // presult通過函數返回值返回(即return),pbefore通過輸出型引數ppBefore返回 STU *findByNumEx(STU *head,char name[],STU **ppbefore) { STU *p,*presult=NULL,*pbefore=NULL; for(p=head;p!=NULL;pbefore=p,p=p->next) if(strcmp(p->name,name)==0) { presult=p; break; } if(p==NULL) pbefore=NULL; *ppbefore=pbefore; return presult; } void update(STU *head) { STU *presult; char name[20]; printf("輸入要修改員工姓名:n"); scanf("%s",name); presult=findByName(head,name); if(presult==NULL) printf("查無此人!無法修改!an"); else { printf("找到了!職工資訊如下:n姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); printf("%st%dt%dt%st%st%dt%sn",presult->name,presult->age,presult->worktime,presult->sex,presult->marrige,presult->grade,presult->tired); printf("請輸入修改資訊:n"); printf("姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); scanf("%s%d%d%s%s%d%s",presult->name,&presult->age,&presult->worktime,presult->sex,presult->marrige,&presult->grade,presult->tired); printf("修改完畢---> "); } } void sort(STU *head)//按級別排序 { STU *pi,*pj,*pindex,*p; STU temp; int len=sizeof(STU)-sizeof(STU *); int i,j,n=0; for(p=head;p!=NULL;p=p->next) n++; for(pi=head,i=0;i<n-1;i++,pi=pi->next){ pindex=pi; for(pj=pi->next,j=i+1;j<n;j++,pj=pj->next) if(pindex->grade> pj->grade) pindex=pj; memcpy(&temp,pi,len); memcpy(pi,pindex,len); memcpy(pindex,&temp,len); } printf("排序完畢---> "); } void save_info(STU *head) { char filename[20]; FILE *fp; STU *p; printf("儲存當前資訊到檔案的處理n"); printf("請輸入檔名:"); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("無法開啟檔案n"); return; } fprintf(fp,"全部職工資訊如下:n姓名t年齡t工齡t性別t婚姻t級別t是否在職n"); for(p=head;p!=NULL;p=p->next) fprintf(fp,"%st%dt%dt%st%st%dt%sn",p->name,p->age,p->worktime,p->sex,p->marrige,p->grade,p->tired); fprintf(fp,"%d",0); fclose(fp); printf("儲存完成!--->"); } void copy() { FILE *in,*out; char infile[40],ch; char outfile[40]; printf("現在進入學生資訊檔案的備份n"); printf("原始檔名:"); scanf("%s",infile); printf("備份檔名:"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NULL) { printf("檔案無法開啟n"); exit(0); } if((out=fopen(outfile,"w"))==NULL) { printf("檔案無法開啟n"); exit(0); } ch=fgetc(in); while(ch!=EOF) { fputc(ch,out); ch=fgetc(in); } fclose(in); fclose(out); printf("備份成功!n"); } STU *load_info() { STU *head=NULL,*pnew,*pend; char filename[20]; char a[20]; FILE *fp; int i; printf(" tt檔案載入職工資訊,輸入檔名:"); scanf("%s",filename); if((fp=fopen(filename,"r"))==NULL) { printf(" tt載入失敗!n"); exit(0); } for(i=0;i<8;i++) fscanf(fp,"%s",a); for(;;) { pnew=(STU *)malloc(sizeof(STU)); fscanf(fp,"%s",&pnew->name); if(strcmp(pnew->name,"0")==0) break; fscanf(fp,"%d%d%s%s%d%s",&pnew->age,&pnew->worktime,&pnew->sex,&pnew->marrige,&pnew->grade,&pnew->tired); pnew->next=NULL; if(head==NULL) { head=pnew; pend=pnew; } else { pend->next=pnew; pend=pnew; } } fclose(fp); printf(" tt載入成功!n"); return head; } char *password() { char password[100],c; char *result=NULL; int e,count; e=0;count=0; while((c=getch())!=13&&e<100)//13為回車 { if(c==8&&e>0)//8為退格 { password[e--]=' ';//刪除最後一個,並且計數器減1 printf("b b");//退格 } else { password[e++]=c; printf("*");//覆蓋*號,當輸出空格覆蓋前一個字元后,再一次前移,以便下一次輸入 } } password[e]=' '; if(strcmp(password,"123456")==0) result=1; return result; }
程式執行效果
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45