1、next = head;就是将最后一个结点的后继指向头结点,函数结尾 return head; 将约瑟夫环的头指针返回,并将它赋值head,然后主函数继续调用Josephu函数,通过讲head和Password引入函数,以建立两个嵌套循环输出并实现如下功能:编号是1,2,,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。2.程序源代码: 员工管理系统#include
2、windows.htime.hstring.h#define N 100struct employee int num; char name10; char sex; int age; char xueli30; int wage; char addr30; long int tel;em100; /*定义一个结构体*/void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void searc
3、h_tel();void modify(); /*定义各函数*/void menu() /*菜单函数*/ printf( 计算机科学系软件工程0901Bn);n *职工信息管理*n 1.录入职工信息 2.浏览职工信息n 3.查询职工信息 4.删除职工信息n 5.添加职工信息 6.修改职工信息n 7.退出n *谢谢使用*nvoid main() menu(); /*调用菜单函数*/ int n,flag; char a; do 请选择你需要操作的步骤(1-7): scanf(%d,&n); if(n=1&n=7) flag=1; break; else flag=0;您输入有误,请重新选择! w
4、hile(flag=0); while(flag=1) switch(n) case 1:printf( 输入职工信息ninput();break; case 2: 浏览职工信息ndisplay(); case 3: 按职工号查询职工信息nsearch(); case 4: 删除职工信息ndel(); case 5: 添加职工信息nadd(); case 6: 修改职工信息nmodify(); case 7:exit(0); default : getchar();是否继续进行(y or n):%ca); if(a=y) system(cls /*清屏*/请再次选择你需要操作的步骤(1-6):
5、 else exit(0);void input() /*录入函数*/ int i,m;请输入需要创建信息的职工人数(1-100):m); for (i=0;im;i+)职工号: srand(int)time(0); emi.num=rand()%10000+20000000; if(emi.num!=emi-1.num)%8d ,emi.num);请输入姓名:%s,emi.name);请输入性别(w女 m男):emi.sex);请输入年龄:emi.age);请输入学历:,emi.xueli);请输入工资:emi.wage);请输入住址:,emi.addr);请输入电话:emi.tel);n创
6、建完毕! save(m);void save(int m) /*保存文件函数*/ int i; FILE*fp; if (fp=fopen(employee_list,wb)=NULL) /*创建文件并判断是否能打开*/ printf (cannot open fileni+) /*将内存中职工的信息输出到磁盘文件中去*/ if (fwrite(&emi,sizeof(struct employee),1,fp)!=1)file write errorn fclose(fp);int load() /*导入函数*/ int i=0; if(fp=fopen(rb)=NULL) do fread
7、(&emi,sizeof(struct employee),1,fp); i+; while(feof(fp)=0); return(i-1);void display() /*浏览函数*/ int m=load();n 职工号t姓名t性别t年龄t学历t工资t住址t电话 n for(i=0;n %dt%st%ct%dt%st%dt%st%ldn,emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel);void del() /*删除函数*/ int i,j,n,t,flag; char name20;n 原来的职
8、工信息: display(); /* 调用浏览函数*/请输入要删除的职工的姓名:,name); for(flag=1,i=0;flag& if(strcmp(emi.name,name)=0)n已找到此人,原始记录为:n职工号t姓名t性别t年龄t学历t工资t住址t电话 nn%dt%st%ct%dt%st%dt%st%ldnn确实要删除此人信息请按1,不删除请按0n if(n=1) /*如果删除,则其他的信息都往上移一行*/ for(j=i;jt8|c1) n选择错误,请重新选择! if(flag=1) switch(c)职工号改为: emi-1.num=num;姓名改为: strcpy(emi-1.name,name);性别改为:sex); emi-1.sex=sex;年龄改为:age); emi-1.age=age;学历改为: strcpy(emi-1.xueli,xueli);工资改为:,wage);住址改为:,addr); strcpy(emi-1.add
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1