职工信息管理系统 单链表实现 C语言源程序(范文)

时间:2019-05-14 03:48:48下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《职工信息管理系统 单链表实现 C语言源程序(范文)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《职工信息管理系统 单链表实现 C语言源程序(范文)》。

第一篇:职工信息管理系统 单链表实现 C语言源程序(范文)

#include #include #include int saveflag=0;

/* 单链表内容有无发生改变,是否需要存盘的标志变量 */ struct employee {

};

typedef struct Node {

void InitList(LinkList *head)

/*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空*/ {

}

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

//通过职工工号查找,返回定位指针。{ LinkList p;if((*head=(LinkList)malloc(sizeof(ListNode)))==NULL)

/*为头结点分配一 printf(“系统分配存储空间失败!n”);个存储空间*/ exit(-1);(*head)->next=NULL;

/*将头结点的指针域置为空*/ struct employee data;struct Node *next;char num[10];

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

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

/* 性别 */ int age;

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

/* 学历 */ 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(“请你输入新的学历(原来是%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)结束

} //void Modify(LinkList L)

//修改功能结束 void Add(LinkList head)

/* 录入职工信息 */ {

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

/* 实现添加操作的临时的结构体指针变量 */ int sign;

/* 标记重复工号的变量 */ char num[10];r=head;s=head->next;

/* 链表没有节点时,s=NULL;链表有节点时,指向while(r->next!=NULL)/* 如果存在后继结点时,r指针后移一个 */ r=r->next;

/* 将指针移至于链表最末尾,准备添加记录 */ printf(“输入‘#’将退出职工信息录入,退回至主菜单!nn”);while(1){

printf(“(PS:职工号为‘#’即退出录入功能)nn”);printf(“请输入职工号:”);fflush(stdin);

//清除缓冲区。gets(num);if(strcmp(num,“#”)==0)/* 输入‘0’,跳出while(1),即跳出Add()函数 */ break;s=head->next;

/* 每次从第一个节点开始找,看num是否重

while(s){

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

} s=s->next;printf(“***提示***n工号为:‘%s’的职工信息已经存在!printf(”若要修改请按‘4’,放弃请按‘0’!n“);scanf(”%d“,&sign);if(sign==4)

Modify(head);return;else 第一个职工节点 */ 复。*/ n”,num);}//while(s)if((p=(LinkList)malloc(sizeof(ListNode)))==NULL)//生成没赋值的新节点 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(“请输入该职工的学历:”);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;

/* 表明这是链表的尾部结点 */ r->next=p;

/* 将新建的结点加入链表尾部中 */ r=p;saveflag=1;printf(“n”);printf(“系统分配存储空间失败!n”);printf(“退出程序!n”);exit(-1);}//while(1)}//void Add函数结束。

void printline()

//打印横线。{ }

void printsubject()

//打印各分类标题。{ }

void printLinkList(LinkList p)

//打印p结点各个数据成员的值。{ 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显示结果n”);printline();printsubject();printf(“n”);while(p)printf(“***提示***:目前没有存储任何职工记录!n”);printf(“返回主菜单,请重新选择功能!n”);return;printf(“ 工 号t 姓 名

性 别

年 龄

学 历

工 资

电 话tt 住 址n”);printf(“------------------n”);

} {

} printline();printf(“n”);printf(“已经存储了%d条职工信息!n”,count);printLinkList(p);p=p->next;count++;void Wrong(){ }

void menu()

//主菜单。{

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

printf(“t*

printf(”t*

< 职工信息管理系统_单链表实现 >

printf(“t*

printf(”t*

[1]

录入职工信息

[2]

删除职工信息

printf(“t*

[3]

查询职工信息

[4]

修改职工信息

printf(”t*

[5]

插入职工记录

[6]

统计职工信息

printf(“t*

[7]

排序

[8]

保存职工信息

printf(”t*

[9]

显示所有职工记录

[0]

退出系统

printf(“n***提示***:输入错误!n”);*********n“);*n”);*n“);*n”);*n“);*n”);*n“);*n”);*n“);*n”);

printf(“t*

printf(”t*

printf(“t*

版权所有人:printf(”t*

电子132班

printf(“t*

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

*n“);*n”);1319200063

*n“);*********n”);} //void menu菜单结束。

void Del(LinkList L)//删除职工信息。{

int select;

//删除方式选择记录变量。ListNode *p,*r;char find[20];if(!L->next)

//当list无后继结点时,提示和结束Del()函数。{

}

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;//从第一个结点找起,直到发现r->next=p, 是待删除结点,跳出循环。

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()删除函数结束。

void Search(LinkList L)

//查询职工信息。{ int select;

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

//实现查询操作的临时结构体指针变量。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

查找结果n“);printline();

//打印横线。printsubject();

//打印各分类标题。

printLinkList(p);

//打印p结点各个数据成员的值。printline();

//打印横线。printf(”n***提示***:没有职工信息资料可以查询!n“);printf(”返回主菜单,请重新选择功能!n“);return;请按‘3’n”);

} if(p){

} while(p){

{

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

//姓名。{

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

printf(“tttt查找结果n”);printline();printsubject();printLinkList(p);

} } printline();else Nofind();else Wrong();}//void Search()查询函数结束。

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)

//将第一个记录结点值写入文

{

p=p->next;

//依次写入下一个结点的 count++;

//文件的记录数+1。printf(“n***提示***:打开文件时发生错误!n”);return;件。

值。

}

else

{

flag=0;

printf(“写入文件过程发生错误!n”);

break;

}

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

} else {

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

printf(“文件保存失败!‘0’条记录被保存。n”);printf(“n***提示***:文件保存成功。(有%d条记录已经保存。)n”,count);saveflag=0;

}//void Save()函数结束。

void Sort(LinkList L)

//排序功能函数。{

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

//不包含头结点的职工信息结点的总个数。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)//统计职工中的最高工资和最低工资。{

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(“若要查看最低,最高工资的相关职工信息,n”);printf(“请按‘1’,然后按照提示进行相关操作,n”);printf(“否则,请按‘1’除外的任何数字键以退出统计功能,返回主菜单。n”);printf(“n=====>功能选择:”);scanf(“%d”,&i);if(i==1)Search(L);

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

//Max指针指向最高工资的职工结点。Min=t;

//Min指针指向最低工资的职工结点。if(Min->data.salary>t->data.salary)t=t->next;void Insert(LinkList L)

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

printf(“本功能可以通过姓名和工号查找到符合要求的n”);//功能介绍。printf(“相关职工信息,然后将您希望添加进去的新的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(“系统分配存储空间失败!n”);system(“cls”);return;printf(“您输入的该职工姓名不在信息记录中,请重新核审!n”);printf(“返回主菜单。n”);return;system(“cls”);

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

} getchar();printf(“n”);printf(“请输入新职工的年龄:”);scanf(“%d”,&s->data.age);printf(“n”);printf(“请输入新职工的学历:”);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(“请输入新职工的学历:”);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(“系统分配存储空间失败!n”);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;/*保存选择结果变量*/

char ch;

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

int count=0;/*保存文件中的记录条数(或结点个数)*/

struct Node *p,*r;

/*定义记录指针变量*/

printf(“tttt职工信息管理系统nttttn”);

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

if(!L)

{

printf(“n系统分配存储空间失败!n”);/*如没有申请到,打印提示信

return;

/*返回菜单*/ 息*/

}

L->next=NULL;

r=L;

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

if(fp==NULL)

{

printf(“n***提示***:存储职工信息的文件还不存在,是否创建?

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

*/

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

{

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

printf(“文件创建成功!n”);

}

else

{

printf(“文件没有创建,无法写入职工信息!nn”);

printf(“<-----退 出 职 工 信 息 管 理 系 统----->n”);

exit(0);

}

} // if(fp==NULL)

printf(“n=====>提示:文件已经打开,正在导入记录......n”);

while(!feof(fp))//没有到文件尾时,循环

{

fclose(fp);/* 关闭文件 */

printf(“n=====>提示:记录导入完毕,共导入%d条记录。n”,count);

while(1)

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

if(!p)

{

if(fread(p,sizeof(struct Node),1,fp))/* 读文件的已有内容放入结点中

{

p->next=NULL;

r->next=p;

r=p;/* 将该结点挂入链表中, r指向最后的节点 */

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=====>提示:资料已经改动,是否将改动保存到文件

scanf(”%c“,&ch);

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

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

} //if

printf(“n***提示***:您已经退出系统,欢迎再次使用!~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语言课程设计 职工信息管理系统 单链表实现程序源代码

//C语言课程设计 职工信息管理系统—单链表实现 #include “stdio.h” #include “stdlib.h” #include “string.h”

int saveflag=0;/*是否需要存盘的标志变量*/

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不是数字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);//统计 void Sort(Link l);//排序 void Modify(Link l);//修改功能

void save(Link l);//将单链表l中的数据写入文件

void printe(Node *p);//本函数用于打印链表中某个节点的数据内容 */

//以下4个函数用于输出中文标题 void printstart();void Wrong();void Nofind();void printc();

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

职工信息管理系统_结构体数组实现 *n”);printf(“t* *n”);printf(“t* [1] 增加职工信息 [2] 删除职工信息 *n”);printf(“t* [3] 查询职工信息 [4] 修改职工信息 *n”);printf(“t* [5] 插入职工记录 [6] 统计职工记录 *n”);printf(“t* [7] 排序 [8] 保存职工信息 *n”);printf(“t* [9] 显示数据 [0] 退出系统 *n”);printf(“t* *n”);printf(“t*****************************************************************n”);} //void menu菜单结束

void Disp(Link l)//显示单链表l中存储的职工记录,内容为employee结构中定义的内容 { int count=0;Node *p;p=l->next;// l存储的是单链表中头结点的指针,该头结点没有存储职工信息,指针域指向的后继结点才有职工信息

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

printf(“n=====>提示:没有职工记录可以显示!n”);

return;}

printf(“tttt显示结果n”);printstart();//打印横线

printc();//打印各学科标题

printf(“n”);

while(p)//逐条输出链表中存储的职工信息

{

printe(p);

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

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

void Wrong(){ printf(“n=====>提示:输入错误!n”);}

void Nofind(){ printf(“n=====>提示:没有找到该职工!n”);}

void printc()/* 本函数用于输出中文 */ { printf(“ 工号t 姓名 性别 部门 职称 工资 总工资平均工资n”);}

void printe(Node *p)/* 本函数用于打印链表中某个节点的数据内容 */ { 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”);/* 该函数用于定位连表中符合要求的结点,并返回该指针 */ 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()函数中,无节点时,r指向list头,有节点时,r指向末尾节点 void Add(Link l)/* 增加职工 */ { Node *p,*r,*s;/*实现添加操作的临时的结构体指针变量*/ char num[10];int flag=0;r=l;s=l->next;//链表没有节点时,s=null;/链表有节点时,指向第一个职工节点

while(r->next!=NULL)//如果存在后继结点时,r指针后移一个

r=r->next;/*将指针移至于链表最末尾,准备添加记录*/

while(1){

printf(“请你输入工号(以'0'返回上一级菜单:)”);

scanf(“%s”,num);

if(strcmp(num,“0”)==0)//输入'0',跳出while(1),即跳出add()函数

break;

s=l->next;//作用? 每次从第一个节点开始找,看num是否重复。

while(s)//工号重复时,返回主菜单

{

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

{

printf(“=====>提示:工号为'%s'的职工已经存在,若要修改请你选择'4 修改'!n”,num);

flag=1;//break;

return;

}

s=s->next;

} //while(s)

p=(Node *)malloc(sizeof(Node));//生成没赋值的新节点 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();

/* 信息输入已经完成 */

p->next=NULL;/*表明这是链表的尾部结点*/

r->next=p;/*将新建的结点加入链表尾部中*/

r=p;

saveflag=1;} //while(1)} //void Add增加结束

void Del(Link l)/* 删除 */ { int sel;Node *p,*r;/*实现删除操作的临时的结构体指针变量*/ char findmess[20];

if(!l->next)//当list无后继结点时,提示和结束返回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;//从第一个结点找起,直到发现r->next=p, 删除结点,跳出循环

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

free(p);

printf(“n=====>提示:该职工已经成功删除!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=====>提示:该职工已经成功删除!n”);

saveflag=1;

}

else

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

Wrong();//显示输入错误的话 } //void Del删除结束

void Qur(Link l)//查询功能 { int sel;char findmess[20];Node *p;//实现查询操作的临时的结构体指针变量

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查找结果n”);

printstart();//打印横线

printc();//打印各学科标题

printe(p);//打印p结点各个数据成员的值

printstart();//打印横线

}

else

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

else if(sel==2)/* 职称 */ {

printf(“请你输入要查找的职称:”);

scanf(“%s”,findmess);

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

if(p)

{

printf(“tttt查找结果n”);

printstart();

printc();

printe(p);

printstart();

}

else

Nofind();} else

Wrong();} //void Qur查询结束

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)结束

} //void Modify(Link l)//修改功能结束

//插入记录:按工号查询到要插入的节点的位置,然后在该工号之后插入一个新节点。

void Insert(Link l){ Node *s,*r,*p;/*p指向插入位置,p指新插入记录节点*/ 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()函数

return;

s=l->next;//作用? 每次从第一个节点开始找

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)/*以下新记录的插入新节点,工号不能跟已存在的工号相同,操作与Add()相同*/

printf(“请你输入待插入的工号(以'0'返回上一级菜单:)”);scanf(“%s”,new_num);if(strcmp(new_num,“0”)==0)//输入'0',跳出while(1),即跳出add()函数

return;s=l->next;//作用? 每次从第一个节点开始找,看num是否重复。

while(s)//工号重复时,返回主菜单

{

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

{

printf(“=====>提示:工号为'%s'的职工已经存在'!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();// 信息输入已经完成

p->next=NULL;/*表明这是链表的尾部结点*/

saveflag=1;/*在main()有对该全局变量的判断,若为1,则进行存盘操作*/ /*将指针赋值给r,因为l中的头节点的下一个节点才实际保存着学生的记录*/

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

if(strcmp(r->data.num,old_num)==0)/*在链表中插入一个节点*/

{

p->next=r->next;

r->next=p;

break;

}

r=r->next;}// while(1),r作为查询指针,依次从第一个节点找起,找到后 跳出 while(1)循环

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

}

void Tongji(Link l)//统计 { Node *max,*min;/*用于指向工资最高的节点*/ 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));/*用于创建新的节点*/ 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));/*新建节点用于保存从原链表中取出的节点信息*/

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

{

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

return;/*返回主界面*/

}

s->data=p->data;/*填数据域*/

s->next=NULL;/*指针域为空*/

rr=ll;

/*rr链表于存储插入单个节点后保持排序的链表,ll是这个链表的头指针,每次从头开始查找插入位置*/

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

{rr=rr->next;} /*指针移至总分比p所指的节点的总分小的节点位置*/

if(rr->next==NULL)/*若新链表ll中的所有节点的总分值都比p->data.gz大时,就将p所指节点加入链表尾部*/

rr->next=s;

else /*否则将该节点插入至第一个总分字段比它小的节点的前面*/

{

s->next=rr->next;

rr->next=s;

}

p=p->next;/*原链表中的指针下移一个节点*/ }

l->next=ll->next;/*ll中存储是的已排序的链表的头指针*/

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

void Save(Link l){ FILE* fp;Node *p;//实现保存操作的临时的结构体指针变量

int flag=1,count=0;

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

printf(“n=====>提示:重新打开文件时发生错误!n”);

return;}

p=l->next;//p指向第一个记录结点

while(p){

if(fwrite(p,sizeof(Node),1,fp)==1)//将第一个记录结点值写入文件

{

p=p->next;//依次写入第二个结点的值,count++;//文件的记录数+1

}

else

{

flag=0;

break;

} } //while(p)

if(count>0){

printf(“n=====>提示:文件保存成功.(有%d条记录已经保存.)n”,count);

saveflag=0;} else {

system(“cls”);

printf(“保存文件失败,'0'条记录被保存!n”);} fclose(fp);} // void Save结束

void main(){ Link list;/*定义链表*/ // struct node *list;FILE *fp;/* 文件指针 */ int choose;/*保存选择结果变量*/ char ch;/*保存(y,Y,n,N)*/

int count=0;/*保存文件中的记录条数(或结点个数)*/ struct node *p,*r;/*定义记录指针变量*/ printf(“tttt职工信息管理系统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=====>提示:文件还不存在,是否创建?(y/n)n”);

scanf(“%c”,&ch);

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

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

else

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

printf(“n=====>提示:文件已经打开,正在导入记录......n”);

while(!feof(fp))//没有到文件尾时,循环

{

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

if(!p)

{

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

exit(0);/*退出*/

}

if(fread(p,sizeof(struct node),1,fp))/* 读文件的已有内容放入结点中 */

{

p->next=NULL;

r->next=p;

r=p;/* 将该结点挂入链表中, r指向最后的节点 */

count++;

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

fclose(fp);/* 关闭文件 */ printf(“n=====>提示:记录导入完毕,共导入%d条记录.n”,count);

while(1){

menu();

printf(“tt====>请选择:”);

scanf(“%d”,&choose);

if(choose==0)

{

if(saveflag==1)

{

getchar();

printf(“n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?n”);

scanf(“%c”,&ch);

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

Save(list);

} //if

printf(“n=====>提示:你已经退出系统,再见!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;/*统计职工记录*/

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的水温度控制系统的c语言源程序(不是测量,要有加热跟制冷)

我这是用STC做的,应该很容易移植到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;//数据/命令 sbit lcwr=P3^5;//读/写 sbit lcden=P3^4;//使能

sbit DS=P2^2;

/*sbit lcrs=P3^4;//数据/命令 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)//读一个字节 { uchar i,j,dat;dat=0;for(i=1;i<=8;i++){ j=tmpread()bit();dat=(j<<7)|(dat>>1);//读出的数据最低位在最前面,这样刚好一个字节在DAT里

} return(dat);}

void tmpwritebyte(uchar dat)//写一个字节到 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);// 启动温度转换 delay(10);init18b20();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp<<=8;//将高字节温度数据与低字节温度数据整合 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)//写数据 {

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

void init1602()//初始化 { write_com(0x38);//设置显示模式 ydelay(20);write_com(0x0c);//开显示 ydelay(20);write_com(0x06);//指针和光标自动加一 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()//应答 { uchar i;scl=1;delay24();while((sda==1)&&(i<250))i++;scl=0;delay24();}

void write_byte(uchar date)// 写数据子函数 { 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()// 读数据子函数 { 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;} ///////写数据函数/////////////////// 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)//读数据函数 { 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.有三个整数a,b,c,由键盘输入,输出其中最大的数。#include void main(){ int a,b,c;printf(“输入三个不同的整数: ”);

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.编程输入整数a和b,若a2b2大于100,则输出a2b2百位以上的数字,否则输出两数之和。

#include void main(){ int a,b,c,d,e,f;c=10;printf(“输入两个整数:”);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.有一函数:

x(x1) y2x11(1x10)

3x11(x10)编写一程序,输入x,输出y值。#include void main(){ int x,y;printf(“输入一个整数:”);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(“输入学生成绩:”);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位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数是321,应输出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);//输入参数

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

printf(“方程无解”);else

n=sqrt((double)m);

//对m进行强制类型转换为double,因为接为double

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

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

printf(“x1=%.2lf x2=%.2lfn”,x1,x2);return 0;}.有一个分数数列: 23581321,,,求出这个数列前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;} 将从键盘输入的偶数写成两个素数之和。#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人据实力预测比赛结果.A选手说:B第二,我第三B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一.决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错.请编程解出比赛的实际名次.

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:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

#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:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第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:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。#include void main(){ int a[4],j,i,b,k;printf(“请输入4位数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、编写程序,对输入两个正整数m和n,求出它们的最大公约数和最小公倍数 #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、编写程序,对输入两个正整数m和n,求出它们的最大公约数和最小公倍数

#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是否为素数 #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以内的所有素数,并按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整除数的和 #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内所有尾数为3的素数之和。#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、从键盘上输入一个整数,将它拆成质因子的乘积。例如

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、从键盘上输入一串字符,统计字母、数字、空格和其它字符的个数。#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个数,求它们的最大值。#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. 一个数恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3而6=1+2+3,因此6是完数。编程找出求1000以内的所有完全数。#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语言职工信息管理系统设计

#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];

/*定义一个结构体*/

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();/*定义各函数*/

void menu()

/*菜单函数*/ { printf(“

☆☆☆计算机科学与技术学系☆☆☆n”);

printf(“n”);

printf(“

∮08802班 关丽霞∮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();/*调用菜单函数*/ 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(“是否继续进行(y or n):n”);

scanf(“%c”,&a);

if(a=='y')

{

flag=1;

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

menu();/*调用菜单函数*/

printf(“请再次选择你需要操作的步骤(1--6):n”);

scanf(“%d”,&n);

printf(“n”);

}

else

exit(0);}

}

void input()

/*录入函数*/ {

int i,m;

printf(“请输入需要创建信息的职工人数(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(“请输入学历: ”);

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创建完毕!n”);

save(m);}

void save(int m)/*保存文件函数*/ { int i;FILE*fp;if((fp=fopen(“employee_list”,“wb”))==NULL)/*创建文件并判断是否能打开*/ {

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()/*导入函数*/ {

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()/*浏览函数*/ { int i;int m=load();printf(“n 职工号t姓名t性别t年龄t学历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()

/*删除函数*/ {

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

display();

/* 调用浏览函数*/

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学历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);

/*调用保存函数*/

display();/*调用浏览函数*/ printf(“n继续删除请按1,不再删除请按0n”);scanf(“%d”,&t);switch(t){

case 1:del();break;

case 0:break;

default :break;} }

void add()/*添加函数*/ { FILE*fp;int n;

int count=0;

int i;

int m=load();

printf(“n 原来的职工信息:n”);

display();

/* 调用浏览函数*/

printf(“n”);

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

printf(“请输入想增加的职工数: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(“请输入学历: ”);

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(“已增加的人数:n”);

printf(“%dn”,count);}

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

m=m+count;printf(“n浏览增加后的所有职工信息:n”);printf(“n”);save(m);

display();

fclose(fp);}

void search()/*查询函数*/ {

int t,flag;do {

printf(“n按职工号查询请按1;按学历查询请按2;按电话号码查询请按3,进入主函数按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(“按学历查询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学历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(“返回查询函数请按1,继续查询职工号请按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(“请输入要查找的学历:n”);

scanf(“%s”,xueli);

for(i=0;i

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

printf(“n已找到,其记录为:n”);

printf(“n职工号t姓名t性别t年龄t学历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(“返回查询函数请按1,继续查询学历请按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学历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(“返回查询函数请按1,继续查询电话号码请按2n”);

scanf(“%d”,&t);

switch(t)

{

case 1:search();break;

case 2:break;

default :break;

}

}

void modify()/*修改函数*/ {

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();/*导入文件内的信息*/

printf(“n 原来的职工信息:n”);

display();

/* 调用浏览函数*/ 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学历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.学历 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)

/*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第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(“学历改为: ”);

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继续修改请按1,不再修改请按0n”);

scanf(“%d”,&t);

switch(t){

case 1:modify();break;

case 0:break;

default :break;}

}

下载职工信息管理系统 单链表实现 C语言源程序(范文)word格式文档
下载职工信息管理系统 单链表实现 C语言源程序(范文).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    代理商信息管理系统 c语言

    C语言课程设计报告班学号:学号:姓名:指导教师:年月 C语言课程设计报告 题目要求 基本功能:代理商信息采集、浏览、查询;代理商信息的输入、浏览、修改、查询、统计等。 需求分析......

    C语言课程设计 职工信息管理系统 结构体数组实现程序源代码

    //C语言课程设计 职工信息管理系统—结构体数组实现 #include #include #include struct employee { char num[10]; char name[15]; char sex[5]; char bm[20]; ch......

    C语言链表的概念

    C语言链表的概念 在*中采用了动态分配的办法为一个结构分配内存空间。每一次分配一块空间可用来存放一个学生的数据,我们可称之为一个结点。有多少个学生就应该申请分配多少......

    求解Josephus问题实验总结(用C语言循环单链表实现)(精选5篇)

    求解Josephus问题实验总结 1实验题目: josephus问题可描述如下: 设有n个人围成一个环,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人从新开始报数,数到第m的人又......

    职工信息管理系统

    职工信息管理系统设计报告(VB) 编号:22 职工信息管理系统 设计报告 学院 土木工程班级 测绘C111 学号 117551 姓名 马骁飞 成绩一、设计思路 1.要达到的目的 培养学生综合利......

    c语言 学生信息管理系统(线性表版)

    #include #include #define MAXSIZE 100 #include #include typedef struct{ char num[8];/*学号*/ char name[9];/*姓名*/ char gender;/*性别*/ int score;/*成......

    学生信息管理系统实训(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语言教程:如何实现一个优美的链表

    如何实现一个优美的链表 面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可维护性,传统的 C 代码同样可以设计出比较易读,易维......