C语言职工信息管理系统_第1页
C语言职工信息管理系统_第2页
C语言职工信息管理系统_第3页
C语言职工信息管理系统_第4页
C语言职工信息管理系统_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件学院课程设计报告设计名称: C语言课程设计 选题名称: 职工信息管理系统 姓 名: 学 号: 专业班级 移动二班 系 (院): 软件学院 设计时间: 2015.12.232015.12.29 设计地点: 15#310 1课程设计目的 巩固和加深学生对C语言的基本知识的理解和掌握; 掌握C语言编程和程序调试的基本技能; 利用C语言进行简单软件设计的基本思路和方法; 提高运用C语言解决实际问题的能力; 掌握书写程序设计说明文档的能力。2课程设计任务与要求:任务设计题目从任务书所列选题表中选取,每人1题。要求:1、在处理每个题目时,要求从分析题目的需求入手,进行合理的模块设计,定义正确函数和自定

2、义数据类型(如结构体类型)、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。2、设计的题目要求达到一定工作量(200行以上代码),并具有一定的深度。3、程序设计语言推荐使用C,程序书写规范,源程序需加必要的注释并且缩进一致。4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。3课程设计说明书一 需求分析 需要进行施工信息

3、的录入,然后进行查询、修改、删除、排序操作,最后要向文件中写入全部的职工信息,完成这些基本功能后,进行一些菜单美化操作,加上一些特殊功能,例如密码登录等等。二 系统设计 利用了C语言完成了这个小型的职工信息管理系统。在设计中采用文件的记忆功能可以对已输入的货物信息进行二次操作。系统首先是数据的录入并将数据储存在二进制文件中 基本功能:1. 职工基本信息(职工号,姓名,性别,出生年月日,学历,职务,工资,家庭住址,电话号码)的录入,并存放在文件当中。2.职工信息的查询与修改。3.职工信息的添加和删除。4. 职工信息按职工号排序。5.对同一类型记录的查找:如查找同一性别的记录6. 向文件中写入职工

4、信息。有功能模块图和流程图 1.查询函数流程图。2.插入信息。3.删除函数。4.修改信息。 三 详细设计 1、首先写入头文件#include#include#include#include#include#define N sizeof(struct student) 2、定义两个结构体存储职工的信息struct birthday int year; int month; int day;struct student int sno;/职工号 char name20;/职工姓名 char sex5;/性别 struct birthday bir;/出生日期 char edu20;/学历 cha

5、r duty20;/职务 int score;/工资 char live50;/住址 long phone;/电话号 struct student *next;3.写一个建立链表函数。struct student *creat()/创建链表 struct student *p; p=(struct student *)malloc(N); p-next=NULL; return p;4、然后写输入职工信息函数void input(struct student *p1)/输入信息 struct student *p2; p1=head; p2=(struct student *)malloc(N

6、); printf(请输入职工信息:n); printf(姓名:); scanf(%s,p2-name); printf(性别:); scanf(%s,p2-sex); printf(出生年月日:);scanf(%d%d%d,&p2-bir.year,&p2-bir.month,&p2-bir.day);printf(学历:);scanf(%s,p2-edu); printf(职务:); scanf(%s,p2-duty); printf(工资:); scanf(%d,&p2-score); printf(住址:); scanf(%s,p2-live); printf(电话:); scanf(

7、%ld,&p2-phone); p2-sno=+z; z+; while(p1-next!=NULL) p1=p1-next; p1-next=p2; p2-next=NULL;5. 输出信息函数。void output(struct student *p)/输出信息 /p=head; printf(tttt职工信息:n); while(p-next!=NULL) p=p-next; printf(职工号:%d,p-sno); printf(姓名:%s,p-name); printf(性别:%s,p-sex); printf(出生年月日:%d/%d/%d,p-bir.year,p-bir.mo

8、nth,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score); printf(住址:%s,p-live); printf(电话:%ld,p-phone); printf(n);6.查询职工信息函数。void find(struct student *head)/查询职工信息 struct student *p; p=head; int n,fi,sc;/n查询方式,fi职工号,sc职工工资 int m=0;/m用来判断是否有该职工 char na20,se5;/na查找职工姓名se查找职工性别

9、printf(*请选择查询方式:*n); printf(1.*按职工号查找*n); printf(2.*按职工姓名查找*n); printf(3.*按职工性别查找*n); printf(4.*按职工工资查找*n); printf(5.*返回*n); scanf(%d,&n); switch(n) case 1: printf(请输入要查询的职工号:n); scanf(%d,&fi); while(p-next!=NULL) p=p-next; if(p-sno=fi) printf(tttt职工信息:n); printf(职工号:%d,p-sno); printf(姓名:%s,p-name);

10、 printf(性别:%s,p-sex); printf(出生年月日:%d/%d/%d,p-bir.year,p-bir.month,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score); printf(住址:%s,p-live); printf(电话:%ld,p-phone); printf(n); printf(5秒后跳转); Sleep(5000); system(cls); system(color 5A); m+; break; case 2: getchar(); printf(请输

11、入要查询的职工姓名:n); gets(na); printf(tttt职工信息:n); while(p-next!=NULL) p=p-next; if(strcmp(p-name,na)=0) printf(职工号:%d,p-sno); printf(姓名:%s,p-name); printf(性别:%s,p-sex); printf(出生年月日:%d/%d/%d,p-bir.year,p-bir.month,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score); printf(住址:%s,p

12、-live); printf(电话:%ld,p-phone); printf(n); printf(5秒后跳转); Sleep(5000); system(cls); system(color 5A); m+; break; case 3: getchar(); printf(请输入要查询的职工性别:n); gets(se); printf(tttt职工信息:n); while(p-next!=NULL) p=p-next; if(strcmp(p-sex,se)=0) printf(职工号:%d,p-sno); printf(姓名:%s,p-name); printf(性别:%s,p-sex

13、); printf(出生年月日:%d/%d/%d,p-bir.year,p-bir.month,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score); printf(住址:%s,p-live); printf(电话:%ld,p-phone); printf(n); while(p-next!=NULL) p=p-next; if(strcmp(p-sex,se)=0) printf(职工号:%d,p-sno); printf(姓名:%s,p-name); printf(性别:%s,p-sex);

14、 printf(出生年月日:%d/%d/%d,p-bir.year,p-bir.month,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score); printf(住址:%s,p-live); printf(电话:%ld,p-phone); printf(n); printf(5秒后跳转); Sleep(5000); system(cls); system(color 5A); m+; break; case 4: printf(请输入要查询的职工工资:n); scanf(%d,&sc); pri

15、ntf(tttt职工信息:n); while(p-next!=NULL) p=p-next; if(p-score=sc) printf(职工号:%d,p-sno); printf(姓名:%s,p-name); printf(性别:%s,p-sex); printf(出生年月日:%d/%d/%d,p-bir.year,p-bir.month,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score); printf(住址:%s,p-live); printf(电话:%ld,p-phone); prin

16、tf(n); while(p-next!=NULL) p=p-next; if(p-score=sc) printf(职工号:%d,p-sno); printf(姓名:%s,p-name); printf(性别:%s,p-sex); printf(出生年月日:%d/%d/%d,p-bir.year,p-bir.month,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score); printf(住址:%s,p-live); printf(电话:%ld,p-phone); printf(n); pri

17、ntf(5秒后跳转); Sleep(5000); system(cls); system(color 5A); m+; break; case 5: system(cls); system(color 8A); m+; break; default: printf(选择错误!); m+; break; if(m=0) printf(查无此人!请重新查找!n); 7.添加职工信息函数。void insert(struct student *head)/插入信息 int n=0,ad;/ad为职工号 ,n用来判断职工是否存在 struct student *p,*pt; p=head; print

18、f(请输入你想在哪个职工后添加信息(职工号):n); scanf(%d,&ad); while(p-next!=NULL) p=p-next; if(p-sno=ad) pt=(struct student *)malloc(N); printf(请输入要插入的职工信息:n); printf(姓名:); scanf(%s,pt-name); printf(性别:); scanf(%s,pt-sex); printf(出生年月日:); scanf(%d%d%d,&pt-bir.year,&pt-bir.month,&pt-bir.day); printf(学历:); scanf(%s,pt-ed

19、u); printf(职务:); scanf(%s,pt-duty); printf(工资:); scanf(%d,&pt-score); printf(住址:); scanf(%s,pt-live); printf(电话:); scanf(%ld,&pt-phone); pt-sno=+z; pt-next=p-next; p-next=pt; z+; n+; if(n=1) output(head); printf(添加成功,稍后跳转.n); Sleep(3000); system(cls); system(color 8A); if(n=0) printf(没有这个职工!n); 8.删除

20、职工信息函数。void cancel(struct student *head)/删除信息 struct student *p1,*p2; int del,n; /del为要删除的职工的职工号,n判断删除后是否返回 p1=head; printf(请输入你想删除职工信息的职工的职工号:n); scanf(%d,&del);while(p1-next!=NULL)&(p1-sno!=del) p2=p1; p1=p1-next;/利用p2为删除结点的先驱/p1为删除结点 if(p1-sno=del) p2-next=p1-next; free(p1); p1=NULL; output(head)

21、; printf(删除成功,返回请选 1n); while(1) scanf(%d,&n); if(n=1) printf(3秒后返回!n); Sleep(3000); system(cls); break; if(n!=1) printf(选择错误!请重新选择!n); else printf(没有这个职工!n);9.销毁链表函数。struct student *fre(struct student *head)/销毁链表 struct student *p,*pre;p=head; while(p!=NULL) pre=p; free(p); p=pre-next; head=NULL; r

22、eturn head;10、写一个存储函数来把数据保存到文件中。void whrite(struct student *head)/向文件内写入职工信息 FILE *fp; struct student *p; p=head; if(fp=fopen(file.txt,w)=NULL) printf(can not open n); exit(0); while(p-next!=NULL) p=p-next; fprintf(fp,%d %s %s ,p-sno,p-name,p-sex); fprintf(fp,%d/%d/%d ,p-bir.year,p-bir.month,p-bir.d

23、ay); fprintf(fp,%s %s %d %s %ldn,p-edu,p-duty,p-score,p-live,p-phone);fclose(fp);10.修改职工信息函数。void alter(struct student *head)/修改函数 struct student *p;int a,n=0;p=head; while(1) printf(请输入你想要修改的职工信息的职工职工号:n); scanf(%d,&a); while(p-next!=NULL) p=p-next; if(p-sno=a) printf(请输入修改后的职工信息:n); printf(姓名:); s

24、canf(%s,p-name); printf(性别:); scanf(%s,p-sex); printf(出生年月日:); scanf(%d%d%d,&p-bir.year,&p-bir.month,&p-bir.day); printf(学历:); scanf(%s,p-edu); printf(职务:); scanf(%s,p-duty); printf(工资:); scanf(%d,&p-score); printf(住址:); scanf(%s,p-live); printf(电话:); scanf(%ld,&p-phone); n+; if(n=1) output(head); p

25、rintf(修改成功!n); Sleep(2000); system(cls); break; if(n=0) printf(没有这个职工!n); printf(请重新输入!n); continue; 11、按职工号排序职工信息函数。void sort(struct student *head)/排序函数 struct student *p1,*p2,temp,t; p1=head; for(p1=head-next;p1-next!=NULL;p1=p1-next) for(p2=p1-next;p2!=NULL;p2=p2-next) if(p1-sno p2-sno) temp=*p1;

26、 *p1=*p2; *p2=temp; t.next=p1-next; p1-next=p2-next; p2-next=t.next; output(head);printf(排序成功!n3秒后跳转!n);Sleep(3000);system(cls);12、保存用户名函数。void whritname(char str10)/保存用户名 FILE *fp; if(fp=fopen(zhanghao.txt,w)=NULL) printf(设置失败!请重试!n); exit(0); fprintf(fp,%s,str); fclose(fp);13.保存密码函数。void whritpwd(

27、char str10)/保存密码 FILE *fp; if(fp=fopen(mima.txt,w)=NULL) printf(设置失败!请重试!n); exit(0); fprintf(fp,%s,str); fclose(fp);14.读取用户名函数。char *readname()/从文件中读取用户名 FILE *fp; char name20;/文件中获得用户名保存在这个数组 if(fp=fopen(zhanghao.txt,r)=NULL) printf(打开失败!n); exit(0); fscanf(fp,%s,name); return name; fclose(fp);15.

28、读取密码函数。char *readpwd()/从文件中读取密码 FILE *fp; char pwd20;/从文件中获取密码保存在这 if(fp=fopen(mima.txt,r)=NULL) printf(打开失败!n); exit(0); fscanf(fp,%s,pwd); return pwd; fclose(fp);16.修改密码函数。char *alterpwd()/修改密码 char a20;getchar(); printf(请输入修改后的密码:n); gets(a); printf(修改成功!n); return a; /*在程序的设计中,我写的代码有时会出现许多逻辑错误,最

29、初的我无从下手,后来学习了一点如何去调试,一点点查找错误,虽然现在我的调试依旧不是那么熟练,但也能进行一系列操作去寻找错误。*/五 系统运行与演示1、运行主界面如下图:2、输入2进行系统的登录,如图。3、输入2两个职工的信息,如图。4、选择1得到的运行界面如下图。4、输入2添加职工信息,如下图。5、输入3删除职工信息如图。6、输入4查看职工信息如下图。7、选择5修改职工信息,结果如下图。8.选择6职工信息排序。9.选择7修改用户密码。10.选择8结束程序。七、附录(代码) #include#include#include#include#include#define N sizeof(stru

30、ct student)struct birthday int year; int month; int day;struct student int sno;/职工号 char name20;/职工姓名 char sex5;/性别 struct birthday bir;/出生日期 char edu20;/学历 char duty20;/职务 int score;/工资 char live50;/住址 long phone;/电话号 struct student *next;struct student *head;struct student *creat()/创建链表 struct stu

31、dent *p; p=(struct student *)malloc(N); p-next=NULL; return p;static int z=1;/用来自动生成职工号void input(struct student *p1)/输入信息 struct student *p2; p1=head; p2=(struct student *)malloc(N); printf(请输入职工信息:n); printf(姓名:); scanf(%s,p2-name); printf(性别:); scanf(%s,p2-sex); printf(出生年月日:);scanf(%d%d%d,&p2-bi

32、r.year,&p2-bir.month,&p2-bir.day);printf(学历:);scanf(%s,p2-edu); printf(职务:); scanf(%s,p2-duty); printf(工资:); scanf(%d,&p2-score); printf(住址:); scanf(%s,p2-live); printf(电话:); scanf(%ld,&p2-phone); p2-sno=+z; z+; while(p1-next!=NULL) p1=p1-next; p1-next=p2; p2-next=NULL;void output(struct student *p)

33、/输出信息 /p=head; printf(tttt职工信息:n); if(head-next=NULL) printf(这是一个空链表!n); return ; while(p-next!=NULL) p=p-next; printf(职工号:%d,p-sno); printf(姓名:%s,p-name); printf(性别:%s,p-sex); printf(出生年月日:%d/%d/%d,p-bir.year,p-bir.month,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score);

34、printf(住址:%s,p-live); printf(电话:%ld,p-phone); printf(n);void find(struct student *head)/查询职工信息 struct student *p; p=head; int n,fi,sc;/n查询方式,fi职工号,sc职工工资 int m=0;/m用来判断是否有该职工 char na20,se5;/na查找职工姓名se查找职工性别 if(head-next=NULL) printf(这是一个空链表!n); return ; printf(*请选择查询方式:*n); printf(1.*按职工号查找*n); prin

35、tf(2.*按职工姓名查找*n); printf(3.*按职工性别查找*n); printf(4.*按职工工资查找*n); printf(5.*返回*n); scanf(%d,&n); switch(n) case 1: printf(请输入要查询的职工号:n); scanf(%d,&fi); while(p-next!=NULL) p=p-next; if(p-sno=fi) printf(tttt职工信息:n); printf(职工号:%d,p-sno); printf(姓名:%s,p-name); printf(性别:%s,p-sex); printf(出生年月日:%d/%d/%d,p-

36、bir.year,p-bir.month,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score); printf(住址:%s,p-live); printf(电话:%ld,p-phone); printf(n); printf(5秒后跳转); Sleep(5000); system(cls); system(color 5A); m+; break; case 2: getchar(); printf(请输入要查询的职工姓名:n); gets(na); printf(tttt职工信息:n); wh

37、ile(p-next!=NULL) p=p-next; if(strcmp(p-name,na)=0) printf(职工号:%d,p-sno); printf(姓名:%s,p-name); printf(性别:%s,p-sex); printf(出生年月日:%d/%d/%d,p-bir.year,p-bir.month,p-bir.day); printf(学历:%s,p-edu); printf(职务:%s,p-duty); printf(工资:%d,p-score); printf(住址:%s,p-live); printf(电话:%ld,p-phone); printf(n); printf(5秒后跳转); Sleep(5000); system(cls); system(color 5A); m+; break; case 3: getchar(); printf(请输入要查询的职工性别:n); gets(se); printf(tttt职工信息:n); while(p-next!=NULL) p=p-next; if(strcmp(p-sex,se)=0) prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论