欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      職工信息管理系統(tǒng) 單鏈表實現(xiàn) C語言源程序(范文)

      時間:2019-05-14 03:48:48下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《職工信息管理系統(tǒng) 單鏈表實現(xiàn) C語言源程序(范文)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《職工信息管理系統(tǒng) 單鏈表實現(xiàn) C語言源程序(范文)》。

      第一篇:職工信息管理系統(tǒng) 單鏈表實現(xiàn) C語言源程序(范文)

      #include #include #include int saveflag=0;

      /* 單鏈表內(nèi)容有無發(fā)生改變,是否需要存盤的標(biāo)志變量 */ struct employee {

      };

      typedef struct Node {

      void InitList(LinkList *head)

      /*將單鏈表初始化為空。動態(tài)生成一個頭結(jié)點,并將頭結(jié)點的指針域置為空*/ {

      }

      ListNode *Locatenum(LinkList head,char find[])

      //通過職工工號查找,返回定位指針。{ LinkList p;if((*head=(LinkList)malloc(sizeof(ListNode)))==NULL)

      /*為頭結(jié)點分配一 printf(“系統(tǒng)分配存儲空間失?。”);個存儲空間*/ exit(-1);(*head)->next=NULL;

      /*將頭結(jié)點的指針域置為空*/ struct employee data;struct Node *next;char num[10];

      /* 工號 */ char name[15];

      /* 姓名 */ char sex[7];

      /* 性別 */ int age;

      /* 年齡 */ char education[15];

      /* 學(xué)歷 */ int salary;

      /* 工資 */ char phone[20];

      /* 電話號碼 */ char address[30];

      /* 住址 */ }ListNode,*LinkList;

      } p=head->next;if(!p)

      //如果職工信息記錄為空,返回NULL。

      {

      } return NULL;if(strcmp(p->data.num,find)==0)return p;p=p->next;return NULL;while(p)ListNode *Locatename(LinkList head,char find[])

      //通過職工姓名查找,返回定位指針。{

      }

      ListNode *Locatesalary(LinkList head,int salary)

      //通過職工工資查找,返回定位指針。{

      LinkList p;p=head->next;if(!p)

      //如果職工信息記錄為空,返回NULL。

      return NULL;while(p){ LinkList p;p=head->next;if(!p)

      //如果職工信息記錄為空,返回NULL。

      {

      } return NULL;if(strcmp(p->data.name,find)==0)return p;p=p->next;return NULL;while(p)

      }

      } if(p->data.salary==salary)return p;p=p->next;return NULL;void Nofind(){ }

      void Modify(LinkList L)

      //修改功能。{

      ListNode *p;

      char find[20];

      if(!L->next)

      {

      printf(“請你輸入要修改的職工工號:”);

      scanf(“%s”,find);

      p=Locatenum(L,find);

      if(p)

      {

      printf(“請你輸入新的工號(原來是%s):”,p->data.num);

      scanf(“%s”,p->data.num);

      getchar();

      printf(“n”);

      printf(“請你輸入新的姓名(原來是%s):”,p->data.name);

      scanf(“%s”,p->data.name);

      getchar();

      printf(“n”);

      printf(“n***提示***:沒有資料可以修改!n”);

      return;printf(“n***提示***:沒有找到該職工!n”);

      }

      printf(“請你輸入新的性別(原來是%s):”,p->data.sex);

      scanf(“%s”,p->data.sex);

      getchar();

      printf(“n”);

      printf(“請你輸入新的年齡(原來是%d):”,p->data.age);

      scanf(“%d”,&p->data.age);

      printf(“n”);

      printf(“請你輸入新的學(xué)歷(原來是%s):”,p->data.education);

      scanf(“%s”,p->data.education);

      getchar();

      printf(“n”);

      printf(“請你輸入新的工資(原來是%d):”,p->data.salary);

      scanf(“%d”,&p->data.salary);

      printf(“n”);

      printf(“請你輸入新的電話(原來是%s):”,p->data.phone);

      scanf(“%s”,p->data.phone);

      getchar();

      printf(“n”);

      printf(“請你輸入新的住址(原來是%s):”,p->data.address);

      scanf(“%s”,p->data.address);

      getchar();

      printf(“n”);

      printf(“n***提示***:資料修改成功!n”);

      saveflag=1;

      }

      else

      Nofind();//if(p)結(jié)束

      } //void Modify(LinkList L)

      //修改功能結(jié)束 void Add(LinkList head)

      /* 錄入職工信息 */ {

      system(“cls”);ListNode *p,*r,*s;

      /* 實現(xiàn)添加操作的臨時的結(jié)構(gòu)體指針變量 */ int sign;

      /* 標(biāo)記重復(fù)工號的變量 */ char num[10];r=head;s=head->next;

      /* 鏈表沒有節(jié)點時,s=NULL;鏈表有節(jié)點時,指向while(r->next!=NULL)/* 如果存在后繼結(jié)點時,r指針后移一個 */ r=r->next;

      /* 將指針移至于鏈表最末尾,準(zhǔn)備添加記錄 */ printf(“輸入‘#’將退出職工信息錄入,退回至主菜單!nn”);while(1){

      printf(“(PS:職工號為‘#’即退出錄入功能)nn”);printf(“請輸入職工號:”);fflush(stdin);

      //清除緩沖區(qū)。gets(num);if(strcmp(num,“#”)==0)/* 輸入‘0’,跳出while(1),即跳出Add()函數(shù) */ break;s=head->next;

      /* 每次從第一個節(jié)點開始找,看num是否重

      while(s){

      if(strcmp(s->data.num,num)==0){

      } s=s->next;printf(“***提示***n工號為:‘%s’的職工信息已經(jīng)存在!printf(”若要修改請按‘4’,放棄請按‘0’!n“);scanf(”%d“,&sign);if(sign==4)

      Modify(head);return;else 第一個職工節(jié)點 */ 復(fù)。*/ n”,num);}//while(s)if((p=(LinkList)malloc(sizeof(ListNode)))==NULL)//生成沒賦值的新節(jié)點 p。

      {

      } strcpy(p->data.num,num);printf(“n”);printf(“請輸入該職工姓名:”);scanf(“%s”,p->data.name);getchar();printf(“n”);printf(“請輸入該職工的性別:(注:男性:male;女性:female)”);scanf(“%s”,p->data.sex);getchar();printf(“n”);printf(“請輸入該職工的年齡:”);scanf(“%d”,&p->data.age);printf(“n”);printf(“請輸入該職工的學(xué)歷:”);scanf(“%s”,p->data.education);getchar();printf(“n”);printf(“請輸入該職工的工資:”);scanf(“%d”,&p->data.salary);printf(“n”);printf(“請輸入該職工的電話號碼:”);scanf(“%s”,p->data.phone);getchar();printf(“n”);printf(“請輸入該職工的住址:”);gets(p->data.address);printf(“n”);p->next=NULL;

      /* 表明這是鏈表的尾部結(jié)點 */ r->next=p;

      /* 將新建的結(jié)點加入鏈表尾部中 */ r=p;saveflag=1;printf(“n”);printf(“系統(tǒng)分配存儲空間失??!n”);printf(“退出程序!n”);exit(-1);}//while(1)}//void Add函數(shù)結(jié)束。

      void printline()

      //打印橫線。{ }

      void printsubject()

      //打印各分類標(biāo)題。{ }

      void printLinkList(LinkList p)

      //打印p結(jié)點各個數(shù)據(jù)成員的值。{ printf(“ %s

      %s %s

      %d %s %d

      %s

      %sn”,p->data.num,p->data.name,p->data.sex,p->data.age,p->data.education,p->data.salary,p->data.phone,p->data.address);}

      void Allemployeeinfo(LinkList head)//顯示所有職工信息。{

      int count=0;ListNode *p;p=head->next;if(!p){

      } printf(“tttt顯示結(jié)果n”);printline();printsubject();printf(“n”);while(p)printf(“***提示***:目前沒有存儲任何職工記錄!n”);printf(“返回主菜單,請重新選擇功能!n”);return;printf(“ 工 號t 姓 名

      性 別

      年 齡

      學(xué) 歷

      工 資

      電 話tt 住 址n”);printf(“------------------n”);

      } {

      } printline();printf(“n”);printf(“已經(jīng)存儲了%d條職工信息!n”,count);printLinkList(p);p=p->next;count++;void Wrong(){ }

      void menu()

      //主菜單。{

      printf(“n”);printf(“t**********************************************************printf(”t*

      printf(“t*

      printf(”t*

      < 職工信息管理系統(tǒng)_單鏈表實現(xiàn) >

      printf(“t*

      printf(”t*

      [1]

      錄入職工信息

      [2]

      刪除職工信息

      printf(“t*

      [3]

      查詢職工信息

      [4]

      修改職工信息

      printf(”t*

      [5]

      插入職工記錄

      [6]

      統(tǒng)計職工信息

      printf(“t*

      [7]

      排序

      [8]

      保存職工信息

      printf(”t*

      [9]

      顯示所有職工記錄

      [0]

      退出系統(tǒng)

      printf(“n***提示***:輸入錯誤!n”);*********n“);*n”);*n“);*n”);*n“);*n”);*n“);*n”);*n“);*n”);

      printf(“t*

      printf(”t*

      printf(“t*

      版權(quán)所有人:printf(”t*

      電子132班

      printf(“t*

      printf(”t***********************************************************n“);*n”);彭林

      *n“);*n”);1319200063

      *n“);*********n”);} //void menu菜單結(jié)束。

      void Del(LinkList L)//刪除職工信息。{

      int select;

      //刪除方式選擇記錄變量。ListNode *p,*r;char find[20];if(!L->next)

      //當(dāng)list無后繼結(jié)點時,提示和結(jié)束Del()函數(shù)。{

      }

      printf(“n按工號刪除,請按‘1’n按姓名刪除,請按‘2’n”);printf(“n=====>功能選擇:”);scanf(“%d”,&select);if(select==1){

      printf(“請輸入要刪除的職工工號:”);scanf(“%s”,find);getchar();p=Locatenum(L,find);if(p){ r=L;printf(“n***提示***:沒有記錄可以刪除!n”);return;

      } while(r->next!=p)r=r->next;//從第一個結(jié)點找起,直到發(fā)現(xiàn)r->next=p, 是待刪除結(jié)點,跳出循環(huán)。

      r->next=p->next;free(p);printf(“n***提示***:該職工信息已成功刪除!n”);saveflag=1;else Nofind();}//if(select==1).else if(select==2){

      printf(“請輸入要刪除的職工姓名:”);scanf(“%s”,find);getchar();p=Locatename(L,find);if(p){

      } else Nofind();r=L;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf(“n***提示***:該職工信息已成功刪除!n”);saveflag=1;}//if(select==2).else Wrong();

      //顯示輸入錯誤的話

      }//void Del()刪除函數(shù)結(jié)束。

      void Search(LinkList L)

      //查詢職工信息。{ int select;

      int salary;int sign=0;char find[20];ListNode *p;

      //實現(xiàn)查詢操作的臨時結(jié)構(gòu)體指針變量。if(!L->next){

      } printf(“n按工號查找,請按‘1’n按工資查找,請按‘2’n按姓名查找,printf(”n=====>功能選擇:“);scanf(”%d“,&select);printf(”n“);if(select==1)

      //工號。{

      } else if(select==2)

      //工資。{

      printf(”請輸入要查找的工資:“);scanf(”%d“,&salary);p=Locatesalary(L,salary);printf(”請輸入要查找的工號:“);scanf(”%s“,find);getchar();p=Locatenum(L,find);if(p){

      } else Nofind();printf(”tttt

      查找結(jié)果n“);printline();

      //打印橫線。printsubject();

      //打印各分類標(biāo)題。

      printLinkList(p);

      //打印p結(jié)點各個數(shù)據(jù)成員的值。printline();

      //打印橫線。printf(”n***提示***:沒有職工信息資料可以查詢!n“);printf(”返回主菜單,請重新選擇功能!n“);return;請按‘3’n”);

      } if(p){

      } while(p){

      {

      } } if(sign==0)Nofind();printf(“tttt查找結(jié)果n”);printline();printsubject();printLinkList(p);printline();sign++;p=Locatesalary(p,salary);if(p)printf(“tttt查找結(jié)果n”);printline();printsubject();printLinkList(p);printline();sign++;else if(select==3)

      //姓名。{

      printf(“請輸入要查找的姓名:”);scanf(“%s”,find);getchar();p=Locatename(L,find);if(p){

      printf(“tttt查找結(jié)果n”);printline();printsubject();printLinkList(p);

      } } printline();else Nofind();else Wrong();}//void Search()查詢函數(shù)結(jié)束。

      void Save(LinkList L)

      //信息保存到文件中。{

      FILE *fp;ListNode *p;int count=0;int flag=1;fp=fopen(“Employeeinfo.txt”,“wb”);if(fp==NULL){

      } p=L->next;while(p){

      if(fwrite(p,sizeof(ListNode),1,fp)==1)

      //將第一個記錄結(jié)點值寫入文

      {

      p=p->next;

      //依次寫入下一個結(jié)點的 count++;

      //文件的記錄數(shù)+1。printf(“n***提示***:打開文件時發(fā)生錯誤!n”);return;件。

      值。

      }

      else

      {

      flag=0;

      printf(“寫入文件過程發(fā)生錯誤!n”);

      break;

      }

      }//while(p).if(count>0){

      } else {

      } fclose(fp);system(“cls”);//清屏。

      printf(“文件保存失??!‘0’條記錄被保存。n”);printf(“n***提示***:文件保存成功。(有%d條記錄已經(jīng)保存。)n”,count);saveflag=0;

      }//void Save()函數(shù)結(jié)束。

      void Sort(LinkList L)

      //排序功能函數(shù)。{

      ListNode *p,*m,*n;int i,j,count=0;p=L->next;if(!p){

      } system(“cls”);

      //清屏。printf(“按工資從低到高排序:n”);printf(“***以下為排序前的所有職工記錄***n”);Allemployeeinfo(L);while(p){

      } for(i=0;i

      //不包含頭結(jié)點的職工信息結(jié)點的總個數(shù)。p=p->next;system(“cls”);

      //清屏。printf(“無任何職工信息!n”);printf(“返回主菜單!n”);return;

      }

      {

      } printf(“***以下為排序后的所有職工記錄***n”);Allemployeeinfo(L);saveflag=1;printf(“排序成功!n”);n=L;p=L->next;m=p->next;while(m){

      } if(p->data.salary>m->data.salary){

      } else {

      } n=p;p=m;m=m->next;n->next=p->next;p->next=m->next;m->next=p;n=m;m=p->next;void Statistics(LinkList L)//統(tǒng)計職工中的最高工資和最低工資。{

      ListNode *Max,*Min;int i;ListNode *t=L->next;if(!t){ system(“cls”);

      //清屏。printf(“沒有儲存任何職工記錄!n”);

      }

      } printf(“返回主菜單,請先錄入職工信息!n”);return;system(“cls”);Max=Min=t;t=t->next;while(t){

      } printf(“最高工資為:%dn”,Max->data.salary);printf(“最低工資為:%dn”,Min->data.salary);printf(“若要查看最低,最高工資的相關(guān)職工信息,n”);printf(“請按‘1’,然后按照提示進行相關(guān)操作,n”);printf(“否則,請按‘1’除外的任何數(shù)字鍵以退出統(tǒng)計功能,返回主菜單。n”);printf(“n=====>功能選擇:”);scanf(“%d”,&i);if(i==1)Search(L);

      //顯示符合要求的職工信息。return;else if(Max->data.salarydata.salary)Max=t;

      //Max指針指向最高工資的職工結(jié)點。Min=t;

      //Min指針指向最低工資的職工結(jié)點。if(Min->data.salary>t->data.salary)t=t->next;void Insert(LinkList L)

      //插入新的職工信息。{

      printf(“本功能可以通過姓名和工號查找到符合要求的n”);//功能介紹。printf(“相關(guān)職工信息,然后將您希望添加進去的新的n”);printf(“職工信息插入到該職工信息記錄的后面。n”);ListNode *p,*s;char find[20];

      //存放工號和姓名的變量。int i;printf(“通過姓名查找,請按‘1’。n”);printf(“通過工號查找,請按‘2’。n”);

      printf(“返回主菜單,請按‘3’。n”);printf(“n=====>功能選擇:”);scanf(“%d”,&i);printf(“n”);if(i==3){

      } else if(i==1){

      printf(“請輸入已在存儲記錄中的職工姓名:”);scanf(“%s”,find);getchar();p=Locatename(L,find);//定位。if(!p){

      } s=(LinkList)malloc(sizeof(ListNode));if(!s){

      } printf(“請輸入新職工工號:”);gets(s->data.num);printf(“n”);printf(“請輸入新職工姓名:”);scanf(“%s”,s->data.name);getchar();printf(“n”);printf(“請輸入新職工的性別:(注:男性:male;女性:female)”);scanf(“%s”,s->data.sex);printf(“系統(tǒng)分配存儲空間失??!n”);system(“cls”);return;printf(“您輸入的該職工姓名不在信息記錄中,請重新核審!n”);printf(“返回主菜單。n”);return;system(“cls”);

      //退出插入功能,返回主菜單。return;

      } getchar();printf(“n”);printf(“請輸入新職工的年齡:”);scanf(“%d”,&s->data.age);printf(“n”);printf(“請輸入新職工的學(xué)歷:”);scanf(“%s”,s->data.education);getchar();printf(“n”);printf(“請輸入新職工的工資:”);scanf(“%d”,&s->data.salary);printf(“n”);printf(“請輸入新職工的電話號碼:”);scanf(“%s”,s->data.phone);getchar();printf(“n”);printf(“請輸入新職工的住址:”);scanf(“%s”,s->data.address);getchar();printf(“n”);s->next=p->next;p->next=s;printf(“姓名為:%s的新職工信息已成功插到姓名為:%s的職工信息記saveflag=1;

      //資料已改動的存儲變量。錄后面。n”,s->data.name,p->data.name);else if(i==2){

      printf(“請輸入已在存儲記錄中的職工工號:”);scanf(“%s”,find);getchar();p=Locatenum(L,find);//定位。if(!p){

      printf(“您輸入的該職工工號不在信息記錄中,請重新核審!n”);printf(“返回主菜單。n”);return;

      } s=(LinkList)malloc(sizeof(ListNode));if(!s){

      } printf(“請輸入新職工工號:”);gets(s->data.num);printf(“n”);printf(“請輸入新職工姓名:”);scanf(“%s”,s->data.name);getchar();printf(“n”);printf(“請輸入新職工的性別:(注:男性:male;女性:female)”);scanf(“%s”,s->data.sex);getchar();printf(“n”);printf(“請輸入新職工的年齡:”);scanf(“%d”,&s->data.age);printf(“n”);printf(“請輸入新職工的學(xué)歷:”);scanf(“%s”,s->data.education);getchar();printf(“n”);printf(“請輸入新職工的工資:”);scanf(“%d”,&s->data.salary);printf(“n”);printf(“請輸入新職工的電話號碼:”);scanf(“%s”,s->data.phone);getchar();printf(“n”);printf(“請輸入新職工的住址:”);scanf(“%s”,s->data.address);getchar();printf(“n”);printf(“系統(tǒng)分配存儲空間失?。”);system(“cls”);return;

      }

      } s->next=p->next;p->next=s;printf(“姓名為:%s的新職工信息已成功插到姓名為:%s的職工信息記saveflag=1;錄后面。n”,s->data.name,p->data.name);else {

      } printf(“功能選擇有誤!返回主菜單。n”);return;void main(){

      LinkList L;/*定義鏈表*/ // struct Node *list;

      FILE *fp;/* 文件指針 */

      int choose;/*保存選擇結(jié)果變量*/

      char ch;

      /*保存(y,Y,n,N)*/

      int count=0;/*保存文件中的記錄條數(shù)(或結(jié)點個數(shù))*/

      struct Node *p,*r;

      /*定義記錄指針變量*/

      printf(“tttt職工信息管理系統(tǒng)nttttn”);

      L=(struct Node*)malloc(sizeof(struct Node));

      if(!L)

      {

      printf(“n系統(tǒng)分配存儲空間失?。”);/*如沒有申請到,打印提示信

      return;

      /*返回菜單*/ 息*/

      }

      L->next=NULL;

      r=L;

      fp=fopen(“Employeeinfo.txt”,“rb”);

      if(fp==NULL)

      {

      printf(“n***提示***:存儲職工信息的文件還不存在,是否創(chuàng)建?

      scanf(”%c“,&ch);(y/n)n”);

      */

      if(ch=='y'||ch=='Y')

      {

      fp=fopen(“Employeeinfo.txt”,“ab+”);

      printf(“文件創(chuàng)建成功!n”);

      }

      else

      {

      printf(“文件沒有創(chuàng)建,無法寫入職工信息!nn”);

      printf(“<-----退 出 職 工 信 息 管 理 系 統(tǒng)----->n”);

      exit(0);

      }

      } // if(fp==NULL)

      printf(“n=====>提示:文件已經(jīng)打開,正在導(dǎo)入記錄......n”);

      while(!feof(fp))//沒有到文件尾時,循環(huán)

      {

      fclose(fp);/* 關(guān)閉文件 */

      printf(“n=====>提示:記錄導(dǎo)入完畢,共導(dǎo)入%d條記錄。n”,count);

      while(1)

      p=(struct Node*)malloc(sizeof(struct Node));

      if(!p)

      {

      if(fread(p,sizeof(struct Node),1,fp))/* 讀文件的已有內(nèi)容放入結(jié)點中

      {

      p->next=NULL;

      r->next=p;

      r=p;/* 將該結(jié)點掛入鏈表中, r指向最后的節(jié)點 */

      count++;

      printf(“ memory malloc failure!n”);

      /*沒有申請成功*/

      exit(0);

      /*退出*/

      }

      }

      } //while(!feof(fp))

      {

      menu();

      printf(“tt====>請選擇:”);

      scanf(“%d”,&choose);

      if(choose==0)

      {

      if(saveflag==1)

      {

      getchar();

      printf(“n=====>提示:資料已經(jīng)改動,是否將改動保存到文件

      scanf(”%c“,&ch);

      if(ch=='y'||ch=='Y')

      Save(L);中(y/n)?n”);

      } //if

      printf(“n***提示***:您已經(jīng)退出系統(tǒng),歡迎再次使用!~n”);

      break;

      }//if switch(choose){ case 1:Add(L);

      break;break;break;break;break;break;Sort(L);break;Save(L);case 2:Del(L);case 3:Search(L);case 4:Modify(L);case 5:Insert(L);case 6:Statistics(L);case 7: case 8:

      break;system(“cls”);Allemployeeinfo(L);break;case 9: default:

      } } } Wrong();break;

      第二篇:C語言課程設(shè)計 職工信息管理系統(tǒng) 單鏈表實現(xiàn)程序源代碼

      //C語言課程設(shè)計 職工信息管理系統(tǒng)—單鏈表實現(xiàn) #include “stdio.h” #include “stdlib.h” #include “string.h”

      int saveflag=0;/*是否需要存盤的標(biāo)志變量*/

      struct employee { char name[15];char num[10];/* 工號 */ char sex[4];char bm[15];char zc[20];int gz;

      };

      typedef struct node { struct employee data;struct node *next;}Node,*Link;

      //Link l(注意是:字母l不是數(shù)字1)void add(Link l);void disp(Link l);//查看職工所有信息 void del(Link l);//刪除功能

      Node* Locate(Link l,char findmess[],char nameornum[]);

      void Qur(Link l);//查詢功能 void Tongji(Link l);//統(tǒng)計 void Sort(Link l);//排序 void Modify(Link l);//修改功能

      void save(Link l);//將單鏈表l中的數(shù)據(jù)寫入文件

      void printe(Node *p);//本函數(shù)用于打印鏈表中某個節(jié)點的數(shù)據(jù)內(nèi)容 */

      //以下4個函數(shù)用于輸出中文標(biāo)題 void printstart();void Wrong();void Nofind();void printc();

      void menu(){ printf(“t*****************************************************************n”);printf(“t* *n”);printf(“t*

      職工信息管理系統(tǒng)_結(jié)構(gòu)體數(shù)組實現(xiàn) *n”);printf(“t* *n”);printf(“t* [1] 增加職工信息 [2] 刪除職工信息 *n”);printf(“t* [3] 查詢職工信息 [4] 修改職工信息 *n”);printf(“t* [5] 插入職工記錄 [6] 統(tǒng)計職工記錄 *n”);printf(“t* [7] 排序 [8] 保存職工信息 *n”);printf(“t* [9] 顯示數(shù)據(jù) [0] 退出系統(tǒng) *n”);printf(“t* *n”);printf(“t*****************************************************************n”);} //void menu菜單結(jié)束

      void Disp(Link l)//顯示單鏈表l中存儲的職工記錄,內(nèi)容為employee結(jié)構(gòu)中定義的內(nèi)容 { int count=0;Node *p;p=l->next;// l存儲的是單鏈表中頭結(jié)點的指針,該頭結(jié)點沒有存儲職工信息,指針域指向的后繼結(jié)點才有職工信息

      if(!p)/*p==NULL,NUll在stdlib中定義為0*/ {

      printf(“n=====>提示:沒有職工記錄可以顯示!n”);

      return;}

      printf(“tttt顯示結(jié)果n”);printstart();//打印橫線

      printc();//打印各學(xué)科標(biāo)題

      printf(“n”);

      while(p)//逐條輸出鏈表中存儲的職工信息

      {

      printe(p);

      p=p->next;} printstart();printf(“n”);} //void Disp結(jié)束

      void printstart(){ printf(“---------n”);}

      void Wrong(){ printf(“n=====>提示:輸入錯誤!n”);}

      void Nofind(){ printf(“n=====>提示:沒有找到該職工!n”);}

      void printc()/* 本函數(shù)用于輸出中文 */ { printf(“ 工號t 姓名 性別 部門 職稱 工資 總工資平均工資n”);}

      void printe(Node *p)/* 本函數(shù)用于打印鏈表中某個節(jié)點的數(shù)據(jù)內(nèi)容 */ { printf(“%-12s%st%st%dt%dt%dt %dt %dn”,p->data.num,p->data.name,p->data.sex,p->data.bm,p->data.zc,p->data.gz);}

      //Locate(l,findmess,“num”);/* 該函數(shù)用于定位連表中符合要求的結(jié)點,并返回該指針 */ Node* Locate(Link l,char findmess[],char zcornum[]){ Node *r;if(strcmp(zcornum,“num”)==0)/* 按工號查詢 */ {

      r=l->next;

      while(r!=NULL)

      {

      if(strcmp(r->data.num,findmess)==0)/*若找到findmess值的工號*/

      return r;

      r=r->next;

      } } else if(strcmp(zcornum,“zc”)==0)/* 按職稱查詢 */ {

      r=l->next;

      while(r!=NULL)

      {

      if(strcmp(r->data.zc,findmess)==0)/*若找到findmess值的職工職稱*/

      return r;

      r=r->next;

      } } return 0;/*若未找到,返回一個空指針*/ }

      //add()函數(shù)中,無節(jié)點時,r指向list頭,有節(jié)點時,r指向末尾節(jié)點 void Add(Link l)/* 增加職工 */ { Node *p,*r,*s;/*實現(xiàn)添加操作的臨時的結(jié)構(gòu)體指針變量*/ char num[10];int flag=0;r=l;s=l->next;//鏈表沒有節(jié)點時,s=null;/鏈表有節(jié)點時,指向第一個職工節(jié)點

      while(r->next!=NULL)//如果存在后繼結(jié)點時,r指針后移一個

      r=r->next;/*將指針移至于鏈表最末尾,準(zhǔn)備添加記錄*/

      while(1){

      printf(“請你輸入工號(以'0'返回上一級菜單:)”);

      scanf(“%s”,num);

      if(strcmp(num,“0”)==0)//輸入'0',跳出while(1),即跳出add()函數(shù)

      break;

      s=l->next;//作用? 每次從第一個節(jié)點開始找,看num是否重復(fù)。

      while(s)//工號重復(fù)時,返回主菜單

      {

      if(strcmp(s->data.num,num)==0)

      {

      printf(“=====>提示:工號為'%s'的職工已經(jīng)存在,若要修改請你選擇'4 修改'!n”,num);

      flag=1;//break;

      return;

      }

      s=s->next;

      } //while(s)

      p=(Node *)malloc(sizeof(Node));//生成沒賦值的新節(jié)點 p

      strcpy(p->data.num,num);

      printf(“請你輸入姓名:”);

      scanf(“%s”,p->data.name);

      getchar();

      printf(“請你輸入性別:”);

      scanf(“%s”,p->data.sex);

      getchar();

      printf(“請你輸入職工所在部門:”);

      scanf(“%d”,&p->data.bm);

      getchar();

      printf(“請你輸入職工職稱:”);

      scanf(“%d”,&p->data.zc);

      getchar();

      printf(“請你輸入職工工資:”);

      scanf(“%d”,&p->data.gz);

      getchar();

      /* 信息輸入已經(jīng)完成 */

      p->next=NULL;/*表明這是鏈表的尾部結(jié)點*/

      r->next=p;/*將新建的結(jié)點加入鏈表尾部中*/

      r=p;

      saveflag=1;} //while(1)} //void Add增加結(jié)束

      void Del(Link l)/* 刪除 */ { int sel;Node *p,*r;/*實現(xiàn)刪除操作的臨時的結(jié)構(gòu)體指針變量*/ char findmess[20];

      if(!l->next)//當(dāng)list無后繼結(jié)點時,提示和結(jié)束返回del(){

      printf(“n=====>提示:沒有記錄可以刪除!n”);

      return;}

      printf(“n=====>1按工號刪除n=====>2按姓名刪除n”);scanf(“%d”,&sel);if(sel==1)//按工號刪除

      {

      printf(“請你輸入要刪除的工號:”);

      scanf(“%s”,findmess);

      p=Locate(l,findmess,“num”);

      if(p)

      {

      r=l;

      while(r->next!=p)

      r=r->next;//從第一個結(jié)點找起,直到發(fā)現(xiàn)r->next=p, 刪除結(jié)點,跳出循環(huán)

      r->next=p->next;//r r->next(p)p->next

      free(p);

      printf(“n=====>提示:該職工已經(jīng)成功刪除!n”);

      saveflag=1;

      }

      else

      Nofind();//顯示一句話

      } //if(sel==1)else if(sel==2)//按姓名刪除

      {

      是待

      printf(“請你輸入要刪除的姓名:”);

      scanf(“%s”,findmess);

      p=Locate(l,findmess,“name”);

      if(p)

      {

      r=l;

      while(r->next!=p)

      r=r->next;

      r->next=p->next;//r r->next(p)p->next

      free(p);

      printf(“n=====>提示:該職工已經(jīng)成功刪除!n”);

      saveflag=1;

      }

      else

      Nofind();} //if(sel==2)else

      Wrong();//顯示輸入錯誤的話 } //void Del刪除結(jié)束

      void Qur(Link l)//查詢功能 { int sel;char findmess[20];Node *p;//實現(xiàn)查詢操作的臨時的結(jié)構(gòu)體指針變量

      if(!l->next){

      printf(“n=====>提示:沒有資料可以查詢!n”);

      return;}

      printf(“n=====>1按工號查找n=====>2按職稱查找n”);scanf(“%d”,&sel);

      if(sel==1)/* 工號 */ {

      printf(“請你輸入要查找的工號:”);

      scanf(“%s”,findmess);

      p=Locate(l,findmess,“num”);

      if(p)

      {

      printf(“tttt查找結(jié)果n”);

      printstart();//打印橫線

      printc();//打印各學(xué)科標(biāo)題

      printe(p);//打印p結(jié)點各個數(shù)據(jù)成員的值

      printstart();//打印橫線

      }

      else

      Nofind();} //if(sel==1)

      else if(sel==2)/* 職稱 */ {

      printf(“請你輸入要查找的職稱:”);

      scanf(“%s”,findmess);

      p=Locate(l,findmess,“zc”);

      if(p)

      {

      printf(“tttt查找結(jié)果n”);

      printstart();

      printc();

      printe(p);

      printstart();

      }

      else

      Nofind();} else

      Wrong();} //void Qur查詢結(jié)束

      void Modify(Link l)//修改功能 { Node *p;char findmess[20];if(!l->next){

      printf(“n=====>提示:沒有資料可以修改!n”);

      return;}

      printf(“請你輸入要修改的職工工號:”);scanf(“%s”,findmess);p=Locate(l,findmess,“num”);

      if(p){

      printf(“請你輸入新工號(原來是%s):”,p->data.num);

      scanf(“%s”,p->data.num);

      printf(“請你輸入新姓名(原來是%s):”,p->data.name);

      scanf(“%s”,p->data.name);

      getchar();

      printf(“請你輸入新性別(原來是%s):”,p->data.sex);

      scanf(“%s”,p->data.sex);

      getchar();

      printf(“請你輸入新的部門(原來是%s):”,p->data.bm);

      scanf(“%d”,&p->data.bm);

      printf(“請你輸入新的職稱(原來是%s):”,p->data.zc);

      scanf(“%d”,&p->data.zc);

      getchar();

      printf(“請你輸入新的工資(原來是%d):”,p->data.gz);

      scanf(“%d”,&p->data.gz);

      printf(“n=====>提示:資料修改成功!n”);

      //shoudsave=1;} else

      Nofind();//if(p)結(jié)束

      } //void Modify(Link l)//修改功能結(jié)束

      //插入記錄:按工號查詢到要插入的節(jié)點的位置,然后在該工號之后插入一個新節(jié)點。

      void Insert(Link l){ Node *s,*r,*p;/*p指向插入位置,p指新插入記錄節(jié)點*/ char ch,new_num[10],old_num[10];//old_num[]保存插入點位置之前的工號,new_num[]保存輸入的新記錄的工號

      int flag=0;s=l->next;system(“cls”);Disp(l);

      while(1){

      //stringinput(s,10,“please input insert location after the Number:”);

      printf(“請你輸入已存在的工號(以'0'返回上一級菜單:)”);

      scanf(“%s”,old_num);

      if(strcmp(old_num,“0”)==0)//輸入'0',跳出while(1),即跳出Insert()函數(shù)

      return;

      s=l->next;//作用? 每次從第一個節(jié)點開始找

      flag=0;

      while(s)/*查詢該工號是否存在,flag=1表示該工號存在*/

      {

      if(strcmp(s->data.num,old_num)==0)

      {

      flag=1;

      break;

      }

      s=s->next;

      }

      if(flag==1)

      break;/*若工號存在,則進行插入之前的新記錄的輸入操作*/

      else

      {

      getchar();

      printf(“n=====>The number %s is not existing,try again?(y/n):”,old_num);

      scanf(“%c”,&ch);

      if(ch=='y'||ch=='Y')

      {continue;}

      else

      {return;} //回主菜單

      }

      }//while(1)/*以下新記錄的插入新節(jié)點,工號不能跟已存在的工號相同,操作與Add()相同*/

      printf(“請你輸入待插入的工號(以'0'返回上一級菜單:)”);scanf(“%s”,new_num);if(strcmp(new_num,“0”)==0)//輸入'0',跳出while(1),即跳出add()函數(shù)

      return;s=l->next;//作用? 每次從第一個節(jié)點開始找,看num是否重復(fù)。

      while(s)//工號重復(fù)時,返回主菜單

      {

      if(strcmp(s->data.num,new_num)==0)

      {

      printf(“=====>提示:工號為'%s'的職工已經(jīng)存在'!n”,new_num);

      flag=1;

      return;

      }

      s=s->next;} //while(s)

      p=(Node *)malloc(sizeof(Node));if(!p){

      printf(“n allocate memory failure ”);/*如沒有申請到,打印提示信息*/

      return;/*返回主界面*/ }

      strcpy(p->data.num,new_num);printf(“請你輸入姓名:”);scanf(“%s”,p->data.name);getchar();printf(“請你輸入性別:”);scanf(“%s”,p->data.sex);getchar();printf(“請你輸入部門:”);scanf(“%d”,&p->data.bm);getchar();printf(“請你輸入職稱:”);scanf(“%d”,&p->data.zc);getchar();printf(“請你輸入工資:”);scanf(“%d”,&p->data.gz);getchar();// 信息輸入已經(jīng)完成

      p->next=NULL;/*表明這是鏈表的尾部結(jié)點*/

      saveflag=1;/*在main()有對該全局變量的判斷,若為1,則進行存盤操作*/ /*將指針賦值給r,因為l中的頭節(jié)點的下一個節(jié)點才實際保存著學(xué)生的記錄*/

      r=l->next;while(1){

      if(strcmp(r->data.num,old_num)==0)/*在鏈表中插入一個節(jié)點*/

      {

      p->next=r->next;

      r->next=p;

      break;

      }

      r=r->next;}// while(1),r作為查詢指針,依次從第一個節(jié)點找起,找到后 跳出 while(1)循環(huán)

      Disp(l);printf(“nn”);// getchar();

      }

      void Tongji(Link l)//統(tǒng)計 { Node *max,*min;/*用于指向工資最高的節(jié)點*/ Node *t=l->next;if(!t){

      system(“cls”);

      printf(“n=====>Not employee record!n”);

      getchar();

      return;} system(“cls”);Disp(l);max=min=t;while(t){

      if(t->data.gz>=max->data.gz)max=t;

      if(t->data.gz<=min->data.gz)min=t;

      t=t->next;

      printf(“最高工資為:%dn”,max);

      printf(“t%st%st%st%st%st%dnn”,t->data.num,t->data.name,t->data.sex,t->data.bm,t->data.zc,t->data.gz);printf(“最低工資為:%dn”,min);

      printf(“t%st%st%st%st%st%dnn”,t->data.num,t->data.name,t->data.sex,t->data.bm,t->data.zc,t->data.gz);} }

      void Sort(Link l)//排序 { Link ll;Node *p,*rr,*s;int i=0;if(l->next==NULL){ system(“cls”);printf(“n=====>Not employee record!n”);getchar();return;} ll=(Node*)malloc(sizeof(Node));/*用于創(chuàng)建新的節(jié)點*/ if(!ll){

      printf(“n allocate memory failure ”);/*如沒有申請到,打印提示信息*/

      return;/*返回主界面*/ } ll->next=NULL;system(“cls”);Disp(l);/*顯示排序前的所有職工記錄*/ p=l->next;while(p)/*p!=NULL*/ {

      s=(Node*)malloc(sizeof(Node));/*新建節(jié)點用于保存從原鏈表中取出的節(jié)點信息*/

      if(!s)/*s==NULL*/

      {

      printf(“n allocate memory failure ”);/*如沒有申請到,打印提示信息*/

      return;/*返回主界面*/

      }

      s->data=p->data;/*填數(shù)據(jù)域*/

      s->next=NULL;/*指針域為空*/

      rr=ll;

      /*rr鏈表于存儲插入單個節(jié)點后保持排序的鏈表,ll是這個鏈表的頭指針,每次從頭開始查找插入位置*/

      while(rr->next!=NULL && rr->next->data.gz>=p->data.gz)

      {rr=rr->next;} /*指針移至總分比p所指的節(jié)點的總分小的節(jié)點位置*/

      if(rr->next==NULL)/*若新鏈表ll中的所有節(jié)點的總分值都比p->data.gz大時,就將p所指節(jié)點加入鏈表尾部*/

      rr->next=s;

      else /*否則將該節(jié)點插入至第一個總分字段比它小的節(jié)點的前面*/

      {

      s->next=rr->next;

      rr->next=s;

      }

      p=p->next;/*原鏈表中的指針下移一個節(jié)點*/ }

      l->next=ll->next;/*ll中存儲是的已排序的鏈表的頭指針*/

      Disp(l);saveflag=1;printf(“n =====>sort complete!n”);}

      void Save(Link l){ FILE* fp;Node *p;//實現(xiàn)保存操作的臨時的結(jié)構(gòu)體指針變量

      int flag=1,count=0;

      fp=fopen(“employee.txt”,“wb”);if(fp==NULL){

      printf(“n=====>提示:重新打開文件時發(fā)生錯誤!n”);

      return;}

      p=l->next;//p指向第一個記錄結(jié)點

      while(p){

      if(fwrite(p,sizeof(Node),1,fp)==1)//將第一個記錄結(jié)點值寫入文件

      {

      p=p->next;//依次寫入第二個結(jié)點的值,count++;//文件的記錄數(shù)+1

      }

      else

      {

      flag=0;

      break;

      } } //while(p)

      if(count>0){

      printf(“n=====>提示:文件保存成功.(有%d條記錄已經(jīng)保存.)n”,count);

      saveflag=0;} else {

      system(“cls”);

      printf(“保存文件失敗,'0'條記錄被保存!n”);} fclose(fp);} // void Save結(jié)束

      void main(){ Link list;/*定義鏈表*/ // struct node *list;FILE *fp;/* 文件指針 */ int choose;/*保存選擇結(jié)果變量*/ char ch;/*保存(y,Y,n,N)*/

      int count=0;/*保存文件中的記錄條數(shù)(或結(jié)點個數(shù))*/ struct node *p,*r;/*定義記錄指針變量*/ printf(“tttt職工信息管理系統(tǒng)nttttn”);

      list=(struct node*)malloc(sizeof(struct node));

      if(!list){

      printf(“n allocate memory failure ”);/*如沒有申請到,打印提示信息*/

      return;/*返回主界面*/ }

      list->next=NULL;r=list;

      fp=fopen(“employee.txt”,“rb”);if(fp==NULL){

      printf(“n=====>提示:文件還不存在,是否創(chuàng)建?(y/n)n”);

      scanf(“%c”,&ch);

      if(ch=='y'||ch=='Y')

      fp=fopen(“employee.txt”,“ab+”);

      else

      exit(0);} // if(fp==NULL)

      printf(“n=====>提示:文件已經(jīng)打開,正在導(dǎo)入記錄......n”);

      while(!feof(fp))//沒有到文件尾時,循環(huán)

      {

      p=(struct node*)malloc(sizeof(struct node));

      if(!p)

      {

      printf(“ memory malloc failure!n”);/*沒有申請成功*/

      exit(0);/*退出*/

      }

      if(fread(p,sizeof(struct node),1,fp))/* 讀文件的已有內(nèi)容放入結(jié)點中 */

      {

      p->next=NULL;

      r->next=p;

      r=p;/* 將該結(jié)點掛入鏈表中, r指向最后的節(jié)點 */

      count++;

      } } //while(!feof(fp))

      fclose(fp);/* 關(guān)閉文件 */ printf(“n=====>提示:記錄導(dǎo)入完畢,共導(dǎo)入%d條記錄.n”,count);

      while(1){

      menu();

      printf(“tt====>請選擇:”);

      scanf(“%d”,&choose);

      if(choose==0)

      {

      if(saveflag==1)

      {

      getchar();

      printf(“n=====>提示:資料已經(jīng)改動,是否將改動保存到文件中(y/n)?n”);

      scanf(“%c”,&ch);

      if(ch=='y'||ch=='Y')

      Save(list);

      } //if

      printf(“n=====>提示:你已經(jīng)退出系統(tǒng),再見!n”);

      break;

      }//if

      switch(choose)

      {

      case 1:Add(list);

      break;/* 增加職工記錄 */

      case 2:

      Del(list);

      break;/* 刪除職工記錄 */

      case 3:

      Qur(list);

      break;/* 查詢職工記錄 */

      case 4:

      Modify(list);

      break;/* 修改職工記錄 */

      case 5:

      Insert(list);

      break;/*插入職工記錄*/

      case 6:

      Tongji(list);

      break;/*統(tǒng)計職工記錄*/

      case 7:

      Sort(list);

      break;/*排序職工記錄*/

      case 8:

      Save(list);

      break;/* 保存職工記錄 */

      case 9:

      system(“cls”);

      Disp(list);

      break;/*顯示職工記錄*/

      default:

      Wrong();

      getchar();

      break;

      } //switch(choose)}//while(1)} //main()/* */

      第三篇:c語言源程序

      基于單片機msp430和溫度傳感器ds18b20的水溫度控制系統(tǒng)的c語言源程序(不是測量,要有加熱跟制冷)

      我這是用STC做的,應(yīng)該很容易移植到MPS430上的給你參考一下。#include #include #define uchar unsigned char #define uint unsigned int

      sbit scl=P1^3;sbit sda=P1^4;

      sbit key1=P1^6;sbit key2=P1^7;sbit key3=P2^0;sbit key4=P2^1;

      sbit lcrs=P3^7;//數(shù)據(jù)/命令 sbit lcwr=P3^5;//讀/寫 sbit lcden=P3^4;//使能

      sbit DS=P2^2;

      /*sbit lcrs=P3^4;//數(shù)據(jù)/命令 sbit lcwr=P3^7;//讀/寫 sbit lcden=P3^5;//使能 */ sbit jrk=P2^2;sbit cyk=P2^3;sbit xhk=P2^4;bit flag=0,rsg=0,not=0,he=0,in=0;int acon=0,bcon=0,dcon=0,econ=0, temp=0,y=0,j=0,l=0,cfj=0,ec=0,dc=0,at;uchar code table[]={48,49,50,51,52,53,54,55,56,57};uchar code ta1[]={“Temperature UP”};uchar code ta2[]={“Temperature DN”};uchar code ta3[]={“Inflator Cycle”};uchar code ta4[]={“Inflator Time ”};uchar code ta5[]={“ Heating UP ”};uchar code ta6[]={“ Inflator ”};uchar code table7[]={“Temperature”};uchar table1[]={0,0,0,'.',0};uchar table3[]={“AptitudeAquarium”};uchar table4[]={0,0,0,0,0};uchar n,c=0;void delay(uchar);void wen_kong();void xh();void rso();void weno();

      void Init_Com(void){ TMOD = 0x11;PCON = 0x00;TH1=0x61;TL1=0x99;EA=1;ET1=1;TR1=1;} void delay(uchar count)//delay { uint i;while(count){ i=200;while(i>0)i--;count--;} } ////初始化18B20///////// bit init18b20(void){ uint i;bit no;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;no=DS;if(no==0){ DS=1;i=100;while(i>0)i--;no=DS;if(no==1)not=0;else not=1;} else not=1;return(not);}

      bit tmpread()bit(void)//讀一位

      { uint i;bit dat;DS=0;i++;DS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return(dat);}

      uchar tmpread()(void)//讀一個字節(jié) { uchar i,j,dat;dat=0;for(i=1;i<=8;i++){ j=tmpread()bit();dat=(j<<7)|(dat>>1);//讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里

      } return(dat);}

      void tmpwritebyte(uchar dat)//寫一個字節(jié)到 ds18b20 { uint i;uchar j;bit testb;for(j=1;j<=8;j++){ testb=dat&0x01;dat=dat>>1;if(testb)//write 1 { DS=0;i++;i++;DS=1;i=8;while(i>0)i--;} else { DS=0;//write 0 i=8;while(i>0)i--;DS=1;i++;i++;} } }

      int tmp()//DS18B20溫度讀取 { float tt;int a,b;if(init18b20()==0){ WDT_CONTR=0x36;/////喂狗 EA=0;delay(1);

      tmpwritebyte(0xcc);// 跳過讀ROM操作 tmpwritebyte(0x44);// 啟動溫度轉(zhuǎn)換 delay(10);init18b20();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp<<=8;//將高字節(jié)溫度數(shù)據(jù)與低字節(jié)溫度數(shù)據(jù)整合 temp=temp|a;c=b>>4;

      tt=temp*0.0625;

      temp=tt*10+0.5;//放大10倍輸出并四舍五入 EA=1;return temp;} else not=1;}

      //////1062///////// void ydelay(uint x){ uint a,b;for(a=x;a>0;a--)for(b=10;b>0;b--);} void write_com(uchar com){ P0=com;lcwr=0;lcrs=0;lcden=0;ydelay(10);lcden=1;ydelay(10);lcden=0;lcwr=1;}

      void write_date(uchar date)//寫數(shù)據(jù) {

      P0=date;lcwr=0;lcrs=1;lcden=0;ydelay(10);lcden=1;ydelay(10);lcden=0;lcwr=1;}

      void init1602()//初始化 { write_com(0x38);//設(shè)置顯示模式 ydelay(20);write_com(0x0c);//開顯示 ydelay(20);write_com(0x06);//指針和光標(biāo)自動加一 ydelay(20);write_com(0x01);//清屏指令 ydelay(20);}

      ///////顯示程序////// void display(int num){ uint i,A1,A2;WDT_CONTR=0x35;/////喂狗 if(c!=0)num=~num+1;A1=num/1000;A2=num%1000/100;if(not==0){

      if(c!=0){ c=0;table1[0]='-';} else if(A1==0)table1[0]=' ';else

      table1[0]=table[A1];if(A1==0)if(A2==0)table1[1]=' ';else table1[1]=table[A2];

      table1[2]=table[num%1000%100/10];table1[4]=table[num%1000%100%10];} else { table1[0]='?';table1[1]='?';table1[2]='?';table1[4]='?';}

      write_com(0x80);for(i=0;i<11;i++){write_date(table7[i]);delay(2);} write_com(0x8b);for(i=0;i<5;i++){write_date(table1[i]);delay(2);} write_com(0xc0);for(i=0;i<16;i++){ if(he==1)write_date(ta5[i]);else if(in==1)write_date(ta6[i]);else write_date(table3[i]);} c=0;WDT_CONTR=0x35;/////喂狗 } ////顯示2//////////////////// display2(uchar bh,int dat){ uchar a,A,B;WDT_CONTR=0x35;/////喂狗 //write_com(0x01);//清屏指令 y=dat;y=y&0x8000;if(y!=0)dat=~dat+1;A=dat/1000;B=dat%1000/100;if((bh!=4)&&(bh!=5)){ if(A!=0)table4[0]=table[dat/1000];else if((c!=0)||(y!=0)){ c=0;y=0;table4[0]='-';} else table4[0]=' ';if(B!=0)table4[1]=table[B];else table4[1]=' ';table4[2]=table[dat%1000%100/10];table4[3]='.';table4[4]=table[dat%1000%100%10];} else { table4[0]=' ';if((c!=0)||(y!=0)){ c=0;y=0;table4[1]='-';} else table4[1]=' ';table4[2]=' ';table4[3]=table[dat%1000%100/10];table4[4]=table[dat%1000%100%10];}

      write_com(0xc4);delay(2);for(a=0;a<5;a++)write_date(table4[a]);delay(2);write_com(0x80);switch(bh){ case 1:for(a=0;a<14;a++)write_date(ta1[a]);break;case 2:for(a=0;a<14;a++)write_date(ta2[a]);break;case 3:for(a=0;a<14;a++)write_date(ta3[a]);break;case 4:for(a=0;a<14;a++)write_date(ta4[a]);break;default:break;} }

      ///////////x24c02////////////////// void delay24(){;;}

      void init24c02()//初始化 { sda=1;delay24();scl=1;delay24();}

      void start()//開始信號 { sda=1;delay24();scl=1;delay24();sda=0;delay24();}

      void stop()//停止 { sda=0;delay24();scl=1;delay24();sda=1;delay24();}

      void respons()//應(yīng)答 { uchar i;scl=1;delay24();while((sda==1)&&(i<250))i++;scl=0;delay24();}

      void write_byte(uchar date)// 寫數(shù)據(jù)子函數(shù) { uchar i,temp;temp=date;

      for(i=0;i<8;i++){ temp=temp<<1;scl=0;delay24();sda=CY;delay24();scl=1;delay24();} scl=0;delay24();sda=1;delay24();}

      uchar read_byte()// 讀數(shù)據(jù)子函數(shù) { uchar i,k;scl=0;delay24();sda=1;delay24();for(i=0;i<8;i++){ scl=1;delay24();k=(k<<1)|sda;scl=0;delay24();} return k;} ///////寫數(shù)據(jù)函數(shù)/////////////////// void write_add(uchar address,uint date){ start();write_byte(0xa0);respons();write_byte(address);respons();write_byte(date/256);respons();write_byte(date%256);respons();stop();} uchar read_add(uchar address)//讀數(shù)據(jù)函數(shù) { uchar date;start();write_byte(0xa0);respons();write_byte(address);respons();start();write_byte(0xa1);respons();date=read_byte();stop();return date;}

      void delay1ms(uchar ms){

      uchar i;while(ms--){ for(i = 0;i< 250;i++){ _nop_();_nop_();_nop_();_nop_();} } }

      int keyf(int *num,int up,int dn){ uint i;uchar z;for(i=0;i<600;i++){

      display2(n,*num);if(key1==0){ delay1ms(30);if(key1==0){ i=0;n++;if(n>=9)n=0;while(!key1)display2(n,*num);break;} } if(key2==0){

      delay1ms(10);if(key2==0){ i=0;if(*num>=up)*num=up;else if(n!=4)*num=*num+1;else if(*num<100)*num=*num+5;else

      *num=*num+10;for(z=0;z<65;z++){ display2(n,*num);if(key2!=0)break;} while(!key2){ for(z=0;z<2;z++)display2(n,*num);if(*num>=up)*num=up;else if(n!=4)*num=*num+1;else if(*num<100)*num=*num+5;else

      *num=*num+10;} } }

      if(key3==0){ delay1ms(10);if(key3==0){ i=0;if(*num<=dn)*num=dn;else if(n!=4)*num=*num-1;else if(*num<100)*num=*num-5;else

      *num=*num-10;for(z=0;z<65;z++){ display2(n,*num);if(key3!=0)break;} while(!key3){ for(z=0;z<2;z++)display2(n,*num);if(*num<=dn)*num=dn;else if(n!=4)*num=*num-1;else if(*num<100)*num=*num-5;else

      *num=*num-10;} } } } return(*num);} void keyjc(){ uchar i=0;if(key1==0){ delay1ms(10);if(key1==0){ EA=0;

      for(i=0;i<20;i++){

      display(tmp());} if(key1==0){

      write_com(0x01);//清屏指令

      n++;if(n>=5)n=0;while(!key1){ switch(n){ case 1:display2(n,acon);break;case 0:break;} } if(n==1){ keyf(&acon,1250,-530);if((acon-bcon)<3)bcon=acon-3;} if(n==2){ keyf(&bcon,1240,-550);if((acon-bcon)<3)acon=bcon+3;} write_add(1,acon);//A delay1ms(15);write_add(3,bcon);//B n=0;write_com(0x01);//清屏指令 } EA=1;} } }

      key(){ uint i;if(key4==0)delay1ms(50);if(key4==0){ write_com(0x01);//清屏指令

      for(i=0;i<500;i++){ if(key4==0){ delay1ms(15);if(key4==0){ i=0;n++;if(n>=5)n=0;while(!key4){ switch(n){ case 1: display2(1,acon);break;case 2: display2(2,bcon);break;default: break;} } } } switch(n){ case 1: display2(1,acon);break;case 2: display2(2,bcon);break;default: break;} } n=0;} }

      ///////濾波//////// int filter(){ int tm,buf[6];uchar i,j;EA=0;for(i=0;i<6;i++){ buf[i]=tmp();delay1ms(20);WDT_CONTR=0x35;/////喂狗 }

      for(j=0;j<5;j++)for(i=0;i<5-j;i++)if(buf[i]>buf[i+1]){ tm=buf[i];buf[i]=buf[i+1];buf[i+1]=tm;} tm=((buf[2]+buf[3])/2);EA=1;return(tm);}

      void main(){ uchar b,c;Init_Com();init1602();init24c02();

      b=read_add(1);delay1ms(15);c=read_add(2);delay1ms(15);acon=b*256+c;b=read_add(3);delay1ms(15);c=read_add(4);delay1ms(15);bcon=b*256+c;

      AUXR=0x01;// 禁止ALE輸出 WDT_CONTR=0x35;//啟動看門狗 write_com(0x01);//清屏指令

      while(1){ at=filter();display(at);keyjc();key();

      wen_kong();weno();} }

      //////溫度控制//////////////

      void wen_kong(){ if((flag==0)&&(not==0)){ at=filter();if(at<=bcon)

      { flag=1;jrk=0;xhk=0;he=1;} } }

      void weno(){ if(flag){ at=filter();if(at>=acon){ flag=0;jrk=1;if(rsg)xhk=0;else xhk=1;he=0;} } if(not==1){ flag=0;jrk=1;if(rsg)xhk=0;else xhk=1;he=0;} }

      第四篇:c語言源程序段

      1.有三個整數(shù)a,b,c,由鍵盤輸入,輸出其中最大的數(shù)。#include void main(){ int a,b,c;printf(“輸入三個不同的整數(shù): ”);

      scanf(“%d%d%d”,&a,&b,&c);if(a>b&&a>c)

      printf(“%dn”,a);else

      if(b>a&&b>c)

      printf(“%dn”,b);

      else

      printf(“%dn”,c);} 2.編程輸入整數(shù)a和b,若a2?b2大于100,則輸出a2?b2百位以上的數(shù)字,否則輸出兩數(shù)之和。

      #include void main(){ int a,b,c,d,e,f;c=10;printf(“輸入兩個整數(shù):”);scanf(“%d%d”,&a,&b);e=(a*a+b*b)/c;d=(a*a+b*b)%c;f=(a*a+b*b)/(c*c);if((a*a+b*b)<100)

      printf(“%dn”,(d+e));else

      printf(“%dn”,f);} 3.有一函數(shù):

      ?x(x?1)? y??2x?11(1?x?10)

      ?3x?11(x?10)?編寫一程序,輸入x,輸出y值。#include void main(){ int x,y;printf(“輸入一個整數(shù):”);scanf(“%d”,&x);if(x<1)

      y=x;else

      if(x<10&&x>=1)

      y=2*x-11;

      else

      y=3*x-11;

      printf(“%dn”,y);} 4.給出一百分制成績,要求輸出成績等級’A’,’B’,’C’,’D’,’E’。90分以上為’A’,80-89分為’B’,70-79分為’C’,60-69分為’D’,60分以下為’E’ #include void main(){ int x;printf(“輸入學(xué)生成績:”);scanf(“%d”,&x);if(x>=90)

      printf(“A”);else

      if(x<90&&x>=80)

      printf(“B”);

      else

      if(x<80&&x>=70)

      printf(“C”);

      else

      if(x<70&&x>=60)

      printf(“D”);

      else

      printf(“E”);printf(“n”);} 5.提高題:給一個不多于5位的正整數(shù),要求:①求出它是幾位數(shù);②分別打印出每一位數(shù)字;③按逆序打印出各位數(shù)字,例如原數(shù)是321,應(yīng)輸出123。#include void main(){ int a,b,i,k;float j;printf(“jghg:”);scanf(“%d”,&a);j=a;{

      for(i=0;j>1;i++)

      j=j/10;}

      printf(“%dnn”,i);{

      for(k=1;k<=i;k++){

      b=a%10;

      a=a/10;

      printf(“%d”,b);} } }.求解一元二次方程a*x2+b*x+c=0 #include

      int main(){ int a,b,c,m;double x1,x2,n;

      //解為double類型

      printf(“請輸入ax2+bx+c=0中的a,b,c: n”);scanf(“%d %d %d”,&a,&b,&c);//輸入?yún)?shù)

      m=(b*b-4*a*c);if(m<0)

      printf(“方程無解”);else

      n=sqrt((double)m);

      //對m進行強制類型轉(zhuǎn)換為double,因為接為double

      x1=(-b-m)/(2*(double)a);

      x2=(-b+m)/(2*(double)a);

      printf(“x1=%.2lf x2=%.2lfn”,x1,x2);return 0;}.有一個分數(shù)數(shù)列: 23581321,,,?求出這個數(shù)列前20項之和 1235813#include

      double sum(int n){ int i;double part = 0;

      for(i = 1.0;i <= n;i++)

      part +=(1.0 / i);return 2 * n-part;}

      int main(void){ printf(“%.18fn”, sum(20));return 0;} 將從鍵盤輸入的偶數(shù)寫成兩個素數(shù)之和。#include #include main(){

      int a,b,c,d;

      scanf(“%d”,&a);

      for(b=3;b<=a/2;b+=2)

      {

      for(c=2;c<=sqrt(b);c++)

      if(b%c==0)break;

      if(c>sqrt(b))

      d=a-b;

      else break;

      for(c=2;c<=sqrt(d);c++)

      if(d%c==0)break;

      if(c>sqrt(d))

      printf(“%d=%d+%dn”,a,b,d);

      } } 1:5位跳水高手參加10米高臺跳水決賽,有好事者讓5人據(jù)實力預(yù)測比賽結(jié)果.A選手說:B第二,我第三B選手說:我第二,E第四;C選手說:我第一,D第二;D選手說:C最后,我第三;E選手說:我第四,A第一.決賽成績公布之后,每位選手的預(yù)測都只說對了一半,即一對一錯.請編程解出比賽的實際名次.

      1.#include void main(){ int a,b,c,d,e;for(a=1;a<=5;a++)for(b=1;b<=5;b++)for(c=1;c<=5;c++)for(d=1;d<=5;d++)for(e=1;e<=5;e++){ if(a!=b&&a!=c&&a!=d&&a!=e)if(b!=c&&b!=d&&b!=e)if(c!=d&&c!=e)if(d!=e)if((b==2)+(a==3)==1)if((b==2)+(e==4)==1)if((c==1)+(d==2)==1)if((c==5)+(d==3)==1)if((e==4)+(a==1)==1)printf(“ A=%d B=%d C=%d D=%d E=%dn”,a,b,c,d,e);} getch();}.2:一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少?

      #include void main(){ int i,j,k;for(i=0;i<1000;i++)for(j=10;j<100;j++)for(k=13;k<100;k++)if(i+100==j*j&&i+168==k*k){ printf(“%dn”,i);break;} } 3:猴子吃桃問題:猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。.#include“stdio.h” #include void main(){ int j,k;int i;for(i=10000;i>1;i--){ k=i;for(j=1;j<=10;j++){ if(k!=(k/2)*2)break;k=k/2-1;} if(k==1)break;} printf(“%dn”,i);} 4.4:某個公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過程中是加密的,加密規(guī)則如下:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。#include void main(){ int a[4],j,i,b,k;printf(“請輸入4位數(shù)n”);scanf(“%d”,&b);for(j=1;j<=4;j++){

      } for(i=1;i<=4;i++)

      b=a[0];a[0]=a[3];a[3]=b;b=a[1];a[1]=a[2];a[2]=b;for(k=1;k<=4;k++)printf(“%d”,a[k-1]);{ } a[i-1]=(a[i-1]+5)%10;a[4-j]=b%10;b=b/10;}

      2、編寫程序,對輸入兩個正整數(shù)m和n,求出它們的最大公約數(shù)和最小公倍數(shù) #include “stdio.h” #include “math.h” void main(){ int n,m,maxgy,mingb,i,p;printf(“please input n and m:”);scanf(“%d%d”,&n,&m);if(n>m){

      p=n;n=m;m=p;/*m和n交換*/ } for(i=n;i>=1;i--)

      if(m%i==0&&n%i==0)

      break;maxgy=i;printf(“nmaxgy=%d mingb=%dn”,maxgy,m*n/maxgy);

      }

      2、編寫程序,對輸入兩個正整數(shù)m和n,求出它們的最大公約數(shù)和最小公倍數(shù)

      #include “stdio.h” #include “math.h” void main(){ int n,m,maxgy,mingb,t,p;printf(“please input n and m:”);scanf(“%d%d”,&n,&m);if(n>m){

      p=n;n=m;m=p;/*m和n交換*/ } p=m*n;while(m%n!=0){

      t=m%n;

      m=n;

      n=t;} maxgy=n;printf(“nmaxgy=%d mingb=%dn”,maxgy,p/maxgy);} #include “stdio.h” #include “math.h” void main(){ int n,m,maxgy,p;int maxgy1(int m,int n);printf(“please input n and m:”);scanf(“%d%d”,&n,&m);if(n>m){

      p=n;n=m;m=p;/*m和n交換*/ } p=m*n;

      maxgy=maxgy1(m,n);printf(“nmaxgy=%d mingb=%dn”,maxgy,p/maxgy);} int maxgy1(int m,int n){ if(n==0)

      return m;else return maxgy1(n,m%n);}

      3輸入n判斷n是否為素數(shù) #include “stdio.h” void main(){ int n,i,flag;flag=1;printf(“please input n:”);scanf(“%d”,&n);for(i=2;i

      if(n%i==0)

      {

      flag=0;

      break;

      } if(flag==1)

      printf(“n%d is ssn”,n);else

      printf(“n%d is not ssn”,n);} #include “stdio.h”、求100以內(nèi)的所有素數(shù),并按10個一行進行打印。#include “math.h” void main(){ int n,i,flag,sum;sum=0;for(n=2;n<=100;n++){

      flag=1;

      for(i=2;i<=sqrt(n);i++)

      if(n%i==0)

      {

      flag=0;

      break;

      }

      if(flag==1)

      {

      sum++;

      printf(“%5d”,n);

      if(sum%10==0)

      printf(“n”);

      } } printf(“n”);}

      4、用遞歸求1到100的和

      #include void main(){ long lj(int);printf(“sum=%ldn”,lj(100));} long lj(int n){ if(n==1)

      return 1;else

      return n+lj(n-1);} 累加法求1到100的和 #include void main(){ int i,sum=0;for(i=1;i<=100;i++)

      sum=sum+i;printf(“result=%dn”,sum);} #include void main(){ int i,sum;for(i=1,sum=0;i<=100;sum=sum+i,i++);

      printf(“result=%dn”,sum);} #include void main(){ int i,sum;i=1;sum=0;for(;;)//i<=100 {

      if(i>100)

      break;

      sum=sum+i;

      i++;} printf(“result=%dn”,sum);}

      求20到40以及60到80中所有能被3整除數(shù)的和 #include void main(){ int i,sum=0;for(i=20;i<=80;i++){

      if(i%3==0)

      sum=sum+i;

      if(i==40)

      i=i+19;} //i%3==0&&i>=20&&i<=40||i>=60&&i<=80 printf(“result=%dn”,sum);} A+aa+aaa+….+a…..a #include void main(){ int a,n,i;long sum=0,t=0;printf(“please input a and n:”);scanf(“%d%d”,&a,&n);for(i=1;i<=n;i++){

      t=t*10+a;

      sum=sum+t;} printf(“result=%ldn”,sum);}

      1、請從鍵盤上輸入年、月、日,求該年月日是該年的第多少天? #include void main(){

      int year,month,day,sum=0,i;int days(int,int);printf(“please input year month and day:”);scanf(“%d%d%d”,&year,&month,&day);for(i=1;i

      int day;switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12:day=31;break;case 4: case 6: case 9: case 11:day=30;break;case 2:if(year%4==0&&year%100!=0||year%400==0)

      } return day;

      day=29;else day=28;}

      2、求3到1000內(nèi)所有尾數(shù)為3的素數(shù)之和。#include #include void main(){

      } int ss(int n){

      int flag=1,i;for(i=2;i<=sqrt(n);i++)if(n%i==0){

      flag=0;break;int i,sum=0;int ss(int);for(i=3;i<=1000;i++)if(ss(i)==1)

      if(i%10==3)

      sum=sum+i;printf(“result=%dn”,sum);

      } } return flag;

      3、從鍵盤上輸入一個整數(shù),將它拆成質(zhì)因子的乘積。例如

      18=2*3*3 #include #include void main(){ int n,i;printf(“please input n:”);scanf(“%d”,&n);printf(“%d=”,n);i=2;while(n!=1){

      } if(n%i==0){ } else i++;printf(“%d*”,i);n=n/i;printf(“b n”);}

      4、從鍵盤上輸入一串字符,統(tǒng)計字母、數(shù)字、空格和其它字符的個數(shù)。#include #include void main(){

      char ch;int c,d,s,o;c=d=s=o=0;while((ch=getchar())!=10){ if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')

      c++;else if(ch>='0'&&ch<='9')

      d++;else if(ch==' ')

      s++;else o++;} printf(“c=%dnd=%dns=%dno=%dn”,c,d,s,o);}

      5、從鍵盤上輸入10個數(shù),求它們的最大值。#include #include void main(){

      }

      int n,i,max;scanf(“%d”,&n);max=n;for(i=1;i<10;i++){ scanf(“%d”,&n);if(max

      max=n;} printf(“max=%dn”,max);3. 一個數(shù)恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”。例如,6的因子為1,2,3而6=1+2+3,因此6是完數(shù)。編程找出求1000以內(nèi)的所有完全數(shù)。#include “stdio.h” #include “math.h” void main(){ int n,s,i,k;for(n=1;n<=1000;n++){

      s=0;

      for(i=1;i

      if(n%i==0)

      s=s+i;

      if(n==s)

      {

      printf(“%5d its factors is ”,n);

      for(k=1;k

      if(n%k==0)

      printf(“%d,”,k);

      printf(“b n”);

      } } printf(“n”);} .打印出楊輝三角形(要求打印出10行如下圖)#include “stdio.h” #include “math.h” void main(){ long i,j,x,y,z,k;long jc(int);for(i=0;i<10;i++){

      for(j=0;j<=i;j++)

      {

      x=jc(i);

      y=jc(j);

      z=jc(i-j);

      printf(“%4d”,x/(y*z));

      }

      printf(“n”);} } long jc(int n){ long x=1,k;if(n==0)

      return 1;else

      for(k=1;k<=n;k++)

      x=x*k;return x;}

      #include “stdio.h” #include “math.h” void main(){ long i,j,x,y,z,k;for(i=0;i<10;i++){

      for(j=0;j<=i;j++)

      {

      x=y=z=1;

      for(k=1;k<=i;k++)

      x=x*k;

      for(k=1;k<=j;k++)

      y=y*k;

      for(k=1;k<=i-j;k++)

      z=z*k;

      printf(“%4d”,x/(y*z));

      }

      printf(“n”);} }

      7.用*打印圖形 #include “stdio.h” void main(){ int i,j,k,n;printf(“please input n:”);scanf(“%d”,&n);for(i=1;i<=n;i++)/**/ {

      for(j=1;j<=40-i;j++)/**/

      printf(“ ”);

      for(k=1;k<=2*i-1;k++)/**/

      printf(“*”);

      printf(“n”);} for(i=n-1;i>=1;i--)/**/ {

      for(j=1;j<=40-i;j++)/**/

      printf(“ ”);

      for(k=1;k<=2*i-1;k++)/**/

      }

      } printf(“*”);printf(“n”);

      第五篇:C語言職工信息管理系統(tǒng)設(shè)計

      #include #include #include #include #define N 100 struct employee {

      int num;char name[10];char sex;

      int age;char xueli[30];

      int wage;

      char addr[30];

      long int tel;}em[100];

      /*定義一個結(jié)構(gòu)體*/

      void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify();/*定義各函數(shù)*/

      void menu()

      /*菜單函數(shù)*/ { printf(“

      ☆☆☆計算機科學(xué)與技術(shù)學(xué)系☆☆☆n”);

      printf(“n”);

      printf(“

      ∮08802班 關(guān)麗霞∮n”);

      printf(“n”);printf(“

      ******************職工信息管理****************n”);printf(“

      1.錄入職工信息”);printf(“

      2.瀏覽職工信息n”);printf(“

      3.查詢職工信息”);printf(“

      4.刪除職工信息n”);

      printf(“

      5.添加職工信息”);printf(“

      6.修改職工信息n”);printf(“

      7.退出n”);printf(“

      ********************謝謝使用******************n”);

      printf(“n”);

      printf(“n”);

      }

      void main(){

      menu();/*調(diào)用菜單函數(shù)*/ int n,flag;char a;do {

      printf(“請選擇你需要操作的步驟(1--7):n”);

      scanf(“%d”,&n);

      if(n>=1&&n<=7)

      {

      flag=1;

      break;

      }

      else

      {

      flag=0;

      printf(“您輸入有誤,請重新選擇!”);

      } }

      while(flag==0);

      while(flag==1)

      {

      switch(n)

      {

      case 1:printf(“

      ◆◆◆輸入職工信息◆◆◆n”);printf(“n”);input();break;

      case 2:printf(“

      ◆◆◆瀏覽職工信息◆◆◆n”);printf(“n”);display();break;

      case 3:printf(“

      ◆◆◆按職工號查詢職工信息◆◆◆n”);printf(“n”);search();break;

      case 4:printf(“

      ◆◆◆刪除職工信息◆◆◆n”);printf(“n”);del();break;

      case 5:printf(“

      ◆◆◆添加職工信息◆◆◆n”);printf(“n”);add();break;

      case 6:printf(“

      ◆◆◆修改職工信息◆◆◆n”);printf(“n”);modify();break;

      case 7:exit(0);break;

      default :break;

      }

      getchar();

      printf(“n”);

      printf(“是否繼續(xù)進行(y or n):n”);

      scanf(“%c”,&a);

      if(a=='y')

      {

      flag=1;

      system(“cls”);/*清屏*/

      menu();/*調(diào)用菜單函數(shù)*/

      printf(“請再次選擇你需要操作的步驟(1--6):n”);

      scanf(“%d”,&n);

      printf(“n”);

      }

      else

      exit(0);}

      }

      void input()

      /*錄入函數(shù)*/ {

      int i,m;

      printf(“請輸入需要創(chuàng)建信息的職工人數(shù)(1--100):n”);

      scanf(“%d”,&m);

      for(i=0;i

      {

      printf(“職工號: ”);

      srand((int)time(0));

      em[i].num=rand()%10000+20000000;

      if(em[i].num!=em[i-1].num)

      printf(“%8d ”,em[i].num);

      printf(“n”);

      printf(“請輸入姓名: ”);

      scanf(“%s”,em[i].name);

      getchar();

      printf(“請輸入性別(f--女

      m--男): ”);

      scanf(“%c”,&em[i].sex);

      printf(“請輸入年齡: ”);

      scanf(“%d”,&em[i].age);

      printf(“請輸入學(xué)歷: ”);

      scanf(“%s”,em[i].xueli);

      printf(“請輸入工資: ”);

      scanf(“%d”,&em[i].wage);

      printf(“請輸入住址: ”);

      scanf(“%s”,em[i].addr);

      printf(“請輸入電話: ”);

      scanf(“%d”,&em[i].tel);

      printf(“n”);

      }

      printf(“n創(chuàng)建完畢!n”);

      save(m);}

      void save(int m)/*保存文件函數(shù)*/ { int i;FILE*fp;if((fp=fopen(“employee_list”,“wb”))==NULL)/*創(chuàng)建文件并判斷是否能打開*/ {

      printf(“cannot open filen”);

      exit(0);} for(i=0;i

      if(fwrite(&em[i],sizeof(struct employee),1,fp)!=1)

      printf(“file write errorn”);

      fclose(fp);} int load()/*導(dǎo)入函數(shù)*/ {

      FILE*fp;int i=0;

      if((fp=fopen(“employee_list”,“rb”))==NULL){

      printf(“cannot open filen”);

      exit(0);} else

      {

      do

      {

      fread(&em[i],sizeof(struct employee),1,fp);

      i++;

      }

      while(feof(fp)==0);} fclose(fp);return(i-1);}

      void display()/*瀏覽函數(shù)*/ { int i;int m=load();printf(“n 職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話

      n”);for(i=0;i

      printf(“n %dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);

      }

      void del()

      /*刪除函數(shù)*/ {

      int m=load();int i,j,n,t,flag;char name[20];printf(“n 原來的職工信息:n”);

      display();

      /* 調(diào)用瀏覽函數(shù)*/

      printf(“n”);printf(“請輸入要刪除的職工的姓名:n”);scanf(“%s”,name);for(flag=1,i=0;flag&&i

      if(strcmp(em[i].name,name)==0)

      {

      printf(“n已找到此人,原始記錄為:n”);

      printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話

      n”);

      printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);

      printf(“n確實要刪除此人信息請按1,不刪除請按0n”);

      scanf(“%d”,&n);

      if(n==1)

      /*如果刪除,則其他的信息都往上移一行*/

      {

      for(j=i;j

      {

      strcpy(em[j].name,em[j+1].name);

      em[j].num=em[j+1].num;

      em[j].sex=em[j+1].sex;

      em[j].age=em[j+1].age;

      strcpy(em[j].xueli,em[j+1].xueli);

      em[j].wage=em[j+1].wage;

      strcpy(em[j].addr,em[j+1].addr);

      em[j].tel=em[j+1].tel;

      }

      flag=0;

      }

      } } if(!flag)

      m=m-1;else

      printf(“n對不起,查無此人!n”);

      printf(“n 瀏覽刪除后的所有職工信息:n”);

      save(m);

      /*調(diào)用保存函數(shù)*/

      display();/*調(diào)用瀏覽函數(shù)*/ printf(“n繼續(xù)刪除請按1,不再刪除請按0n”);scanf(“%d”,&t);switch(t){

      case 1:del();break;

      case 0:break;

      default :break;} }

      void add()/*添加函數(shù)*/ { FILE*fp;int n;

      int count=0;

      int i;

      int m=load();

      printf(“n 原來的職工信息:n”);

      display();

      /* 調(diào)用瀏覽函數(shù)*/

      printf(“n”);

      fp=fopen(“emploee_list”,“a”);

      printf(“請輸入想增加的職工數(shù):n”);scanf(“%d”,&n);

      for(i=m;i<(m+n);i++)

      {

      printf(“n 請輸入新增加職工的信息:n”);

      printf(“請輸入職工號: ”);

      srand((int)time(0));

      em[i].num=rand()%10000+20000000;

      if(em[i].num!=em[i-1].num)

      printf(“%8d ”,em[i].num);

      printf(“n”);

      printf(“請輸入姓名: ”);

      scanf(“%s”,em[i].name);

      getchar();

      printf(“請輸入性別(f--女

      m--男): ”);

      scanf(“%c”,&em[i].sex);

      printf(“請輸入年齡: ”);

      scanf(“%d”,&em[i].age);

      printf(“請輸入學(xué)歷: ”);

      scanf(“%s”,em[i].xueli);

      printf(“請輸入工資: ”);

      scanf(“%d”,&em[i].wage);

      printf(“請輸入住址: ”);

      scanf(“%s”,em[i].addr);

      printf(“請輸入電話: ”);

      scanf(“%d”,&em[i].tel);

      printf(“n”);

      count=count+1;

      printf(“已增加的人數(shù):n”);

      printf(“%dn”,count);}

      printf(“n添加完畢!n”);

      m=m+count;printf(“n瀏覽增加后的所有職工信息:n”);printf(“n”);save(m);

      display();

      fclose(fp);}

      void search()/*查詢函數(shù)*/ {

      int t,flag;do {

      printf(“n按職工號查詢請按1;按學(xué)歷查詢請按2;按電話號碼查詢請按3,進入主函數(shù)按4n”);

      scanf(“%d”,&t);

      if(t>=1&&t<=4)

      {

      flag=1;

      break;

      }

      else

      {

      flag=0;

      printf(“您輸入有誤,請重新選擇!”);

      } }

      while(flag==0);

      while(flag==1){

      switch(t)

      {

      case 1:printf(“按職工號查詢n”);search_num();break;

      case 2:printf(“按學(xué)歷查詢n”);search_xueli();break;

      case 3:printf(“按電話號碼查詢n”);search_tel();break;

      case 4:main();break;

      default:break;

      }

      } }

      void search_num(){

      int num;

      int i,t;

      int m=load();

      printf(“請輸入要查找的職工號(20001111---20009999):n”);

      scanf(“%d”,&num);

      for(i=0;i

      if(num==em[i].num){

      printf(“n已找到此人,其記錄為:n”);

      printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話

      n”);

      printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);

      break;}

      if(i==m)

      printf(“n對不起,查無此人n”);

      printf(“n”);

      printf(“返回查詢函數(shù)請按1,繼續(xù)查詢職工號請按2n”);

      scanf(“%d”,&t);

      switch(t)

      {

      case 1:search();break;

      case 2: break;

      default:break;

      } }

      void search_xueli(){

      char xueli[30];

      int i,t;

      int m=load();

      printf(“請輸入要查找的學(xué)歷:n”);

      scanf(“%s”,xueli);

      for(i=0;i

      if(strcmp(em[i].xueli,xueli)==0){

      printf(“n已找到,其記錄為:n”);

      printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話

      n”);

      printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);

      }

      if(i==m)

      printf(“n對不起,查無此人n”);

      printf(“n”);

      printf(“返回查詢函數(shù)請按1,繼續(xù)查詢學(xué)歷請按2n”);

      scanf(“%d”,&t);

      switch(t)

      {

      case 1:search();break;

      case 2:break;

      default :break;

      }

      }

      void search_tel(){

      long int tel;

      int i, t;

      int m=load();

      printf(“請輸入要查找的電話號碼:n”);

      scanf(“%ld”,&tel);

      for(i=0;i

      if(tel==em[i].tel){

      printf(“n已找到此人,其記錄為:n”);

      printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話

      n”);

      printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);

      break;}

      if(i==m)

      printf(“n對不起,查無此人n”);

      printf(“n”);

      printf(“返回查詢函數(shù)請按1,繼續(xù)查詢電話號碼請按2n”);

      scanf(“%d”,&t);

      switch(t)

      {

      case 1:search();break;

      case 2:break;

      default :break;

      }

      }

      void modify()/*修改函數(shù)*/ {

      int num;char name[10];char sex;

      int age;char xueli[30];

      int wage;

      char addr[30];

      long int tel;

      int b,c,i,n,t,flag;

      int m=load();/*導(dǎo)入文件內(nèi)的信息*/

      printf(“n 原來的職工信息:n”);

      display();

      /* 調(diào)用瀏覽函數(shù)*/ printf(“n”);

      printf(“請輸入要修改的職工的姓名:n”);scanf(“%s”,name);for(flag=1,i=0;flag&&i

      if(strcmp(em[i].name,name)==0)

      {

      printf(“n已找到此人,原始記錄為:n”);

      printf(“n職工號t姓名t性別t年齡t學(xué)歷t工資t住址t電話

      n”);

      printf(“n%dt%st%ct%dt%st%dt%st%ldn”,em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);

      printf(“n確實要修改此人信息請按1;不修改請按0n”);

      scanf(“%d”,&n);

      if(n==1)

      {

      printf(“n需要進行修改的選項n 1.職工號 2.姓名 3.性別 4.年齡 5.學(xué)歷 6.工資 7.住址 8.電話n”);

      printf(“請輸入你想修改的那一項序號:n”);

      scanf(“%d”,&c);

      if(c>8||c<1)

      printf(“n選擇錯誤,請重新選擇!n”);

      }

      flag=0;

      }

      }

      if(flag==1)printf(“n對不起,查無此人!n”);

      do

      {

      switch(c)

      /*因為當(dāng)找到第i個職工時,for語句后i自加了1,所以下面的應(yīng)該把改后的信息賦值給第i-1個人*/

      {

      case 1:printf(“職工號改為: ”);

      scanf(“%d”,&num);

      em[i-1].num=num;

      break;

      case 2:printf(“姓名改為: ”);

      scanf(“%s”,name);

      strcpy(em[i-1].name,name);

      break;

      case 3:printf(“性別改為: ”);

      getchar();

      scanf(“%c”,&sex);

      em[i-1].sex=sex;

      break;

      case 4:printf(“年齡改為: ”);

      scanf(“%d”,&age);

      em[i-1].age=age;

      break;

      case 5:printf(“學(xué)歷改為: ”);

      scanf(“%s”,xueli);

      strcpy(em[i-1].xueli,xueli);

      break;

      case 6:printf(“工資改為: ”);

      scanf(“%d”,wage);

      break;

      case 7:printf(“住址改為: ”);

      scanf(“%s”,addr);

      strcpy(em[i-1].addr,addr);

      break;

      case 8:printf(“電話改為: ”);

      scanf(“%ld”,&tel);

      em[i-1].tel=tel;

      break;

      }

      printf(“n”);

      printf(“n是否確定所修改的信息?n 是 請按1;不,重新修改 請按2: n”);

      scanf(“%d”,&b);

      }

      while(b==2);

      printf(“n瀏覽修改后的所有職工信息:n”);

      printf(“n”);

      save(m);

      display();

      printf(“n繼續(xù)修改請按1,不再修改請按0n”);

      scanf(“%d”,&t);

      switch(t){

      case 1:modify();break;

      case 0:break;

      default :break;}

      }

      下載職工信息管理系統(tǒng) 單鏈表實現(xiàn) C語言源程序(范文)word格式文檔
      下載職工信息管理系統(tǒng) 單鏈表實現(xiàn) C語言源程序(范文).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        代理商信息管理系統(tǒng) c語言

        C語言課程設(shè)計報告班學(xué)號:學(xué)號:姓名:指導(dǎo)教師:年月 C語言課程設(shè)計報告 題目要求 基本功能:代理商信息采集、瀏覽、查詢;代理商信息的輸入、瀏覽、修改、查詢、統(tǒng)計等。 需求分析......

        C語言課程設(shè)計 職工信息管理系統(tǒng) 結(jié)構(gòu)體數(shù)組實現(xiàn)程序源代碼

        //C語言課程設(shè)計 職工信息管理系統(tǒng)—結(jié)構(gòu)體數(shù)組實現(xiàn) #include #include #include struct employee { char num[10]; char name[15]; char sex[5]; char bm[20]; ch......

        C語言鏈表的概念

        C語言鏈表的概念 在*中采用了動態(tài)分配的辦法為一個結(jié)構(gòu)分配內(nèi)存空間。每一次分配一塊空間可用來存放一個學(xué)生的數(shù)據(jù),我們可稱之為一個結(jié)點。有多少個學(xué)生就應(yīng)該申請分配多少......

        求解Josephus問題實驗總結(jié)(用C語言循環(huán)單鏈表實現(xiàn))(精選5篇)

        求解Josephus問題實驗總結(jié) 1實驗題目: josephus問題可描述如下: 設(shè)有n個人圍成一個環(huán),現(xiàn)從第s個人開始報數(shù),數(shù)到第m的人出列,然后從出列的下一個人從新開始報數(shù),數(shù)到第m的人又......

        職工信息管理系統(tǒng)

        職工信息管理系統(tǒng)設(shè)計報告(VB) 編號:22 職工信息管理系統(tǒng) 設(shè)計報告 學(xué)院 土木工程班級 測繪C111 學(xué)號 117551 姓名 馬驍飛 成績一、設(shè)計思路 1.要達到的目的 培養(yǎng)學(xué)生綜合利......

        c語言 學(xué)生信息管理系統(tǒng)(線性表版)

        #include #include #define MAXSIZE 100 #include #include typedef struct{ char num[8];/*學(xué)號*/ char name[9];/*姓名*/ char gender;/*性別*/ int score;/*成......

        學(xué)生信息管理系統(tǒng)實訓(xùn)(C語言)

        #includevoid lookup(int snum,int sc,int length);void summary(int sc,int length);void change(int n,int snum,int sc,int length); void search(int n,int s......

        黑馬程序員C語言教程:如何實現(xiàn)一個優(yōu)美的鏈表

        如何實現(xiàn)一個優(yōu)美的鏈表 面向?qū)ο蟮恼Z言更接近人的思維方式,而且在很大程度上降低了代碼的復(fù)雜性,同時提高了代碼的可讀性和可維護性,傳統(tǒng)的 C 代碼同樣可以設(shè)計出比較易讀,易維......