




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳航空航天大学 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计课程设计题目:公司员工管理软件 学院:计算机学院 专业:计算机科学与技术 班级:24010103 学号:2012040101117 姓名:刘志远 指导教师:张璐 完成日期:2013.3.23 目录第1章 课设内容及要求.1 1.1课程设计内容.1 1.2课程设计要求.1第2章 功能设计.2第3章 总体设计方案.3 3.1设计技术说明.3 3.2函数关系示意图.3 3.3 总体流程图.4第4章 详细设计.5 4.1主函数.5 4.2菜单函数.5 4.3录入函数.6 4.4查询函数.6 4.5删除函数.6 4.6修改函数.6 4.7统计函数.7 4.8保存函数.7第5章 运行结果.8 参考文献.11附录1(各函数流程图).12附录2(程序清单).15 第1章 课设内容及要求 1 课程设计内容通过设计一个公司员工信息管理软件,完成对职工信息的相关管理功能;1. 员工的个人信息,如姓名、性别、学历、职务、地址、电话等,以文件的形式保存;2. 职工的信息维护:包括对职工信息的增加、职工信息的修改、职工信息的删除功能;3. 可以按姓名查找并统计职工信息;4. 人数不得少于10人;5. 有界面友好并易于使用的菜单。 2 课程设计要求 1.员工信息存入文件,学生独立完成系统的设计、编码和调试工作并通过指导老师的检查;2.用C语言实现课题任务;3.按课程设计规范撰写课程设计报告。 第2章 功能设计对于任何大小公司来讲,职工信息的管理是非常重要的一个环节,职工增加、删除、管理是一个整体。本设计就是基于C语言、在C+环境中编译和运行的职工信息管理系统。本报告设计的职工信息管理系统主要是管理职工资料的,方便修改,查询,删除。该系统有以下功能:1、 能够建立一个文件夹来储存职工的信息;2、 能够录入职工的信息;3、能够查询任一职工的信息;4、能够修改任意职工的信息;5、能够删除任意职工的信息;6、能够退出系统; 系统的功能结构图如下: 公司员工管理系统新建文件夹职工信息录入职工信息查询职工信息修改职工信息删除 第3章 总体设计方案3.1设计技术说明 该设计是一个小型的员工管理系统,该系统主要数据包括姓名、性别、职务等。每个职工信息就是数据表中的一项纪录,所有职工信息构成一张总表,在程序中使用结构体储存这些数据,每当输入完成可以将这些数据保存在磁盘文件中。3.2函数关系示意图 为了主函数的简洁,该程序采用模块化的设计方法,将系统的每个功能用一个相对独立的函数来完成。其中包括菜单函数、员工信息查询函数、员工信息录入函数、员工信息删除函数、员工信息修改函数、员工信息统计函数、保存函数。其示意图如下: 主函数 员工信息查询函数员工信息录入函数员工信息删除函数员工信息修改函数员工信息统计函数保存函数3.3 总体流程图 开始 声明函数用户选择菜单 =0&=0&=6 读入数据 输出统计信息 Y N 打印错误调用选择的功能函数 关闭文件夹 退出 返回 图5(统计函数流程图) 图6(菜单函数流程图) 附录2 程序清单总体程序代码如下: #include#include#include#include#define SIZE 20#define NULL 0#define LEN sizeof(struct staff)typedef struct staffint num;char duty10;char name10;char sex3;unsigned char age;char edu10;int salary; char tel_office20;char mobile50;char address31;struct staff *next;staff;struct staff_typeint num;char duty10;char name10;char sex3;unsigned char age;char edu10;int salary;char tel_office13;char mobile13;char address31;struct staff *next;staffSIZE; struct staff * staff_first, * staff_end;char gsave,gfirst;void addstaff(void);void findstaff(void);void listst(void);void modifystaff(void);void summarystaff(void);void delstaff(void);void savedata(void);int modi_age(int s);int modi_salary(int s); char *modi_field1(char * content); char *modi_field2(char * content); char *modi_field3(char * content); char *modi_field4(char * content);struct staff * findname(char *name);void displaystaff(struct staff * staff,char *field,char *name);void bound(char ch,int n);void menu();void main() FILE * fp; gsave=gfirst=0; if(fp=fopen(staff.txt,rb)=NULL)printf(打开文件staff.txt出错!n);getchar();return; fread(&staff_end,sizeof(struct staff_type),1,fp);fclose(fp); menu(); void menu() char choice; system(cls);doprintf(t*公司员工管理系统*n);printf(nn);printf(t1.*输入员工信息*nn);printf(t2.*查询员工信息*nn);printf(t3.*删除员工信息*nn); printf(t4.*修改员工信息*nn);printf(t5.*统计员工信息*nn); printf(t0.*退出程序*nn);printf(nn *请选择您需要的操作!*);dofflush(stdin);choice=getchar();system(cls);switch(choice)case1:addstaff();break; savedata(); case2:if(gfirst)printf(系统中没有员工信息,请先添加员工信息!n);getchar();break;findstaff();savedata();break; case3: if(gfirst)printf(系统中没有员工信息,请先添加员工信息!n);getchar();break;delstaff(); savedata();break; case4: if(gfirst)printf(系统中没有员工信息,请先添加员工信息!n);getchar();break;modifystaff(); savedata();break;case5: if(gfirst)printf(系统中没有员工信息,请先添加员工信息!n);getchar();break;summarystaff(); savedata(); break; case0: savedata(); printf(谢谢使用!nn); printf(按回车键退出! n); fflush(stdin);exit(0);while(choice6);system(cls);while(1);void addstaff()FILE * fp;struct staff * staff1;int i=0;char choice=y;if(fp=fopen(staff.txt,rb)=NULL)printf(打开文件staff.txt出错!n);getchar();return;do i+; staff1=(struct staff * )malloc(LEN);if(staff1=NULL) printf(内存分配失败,按任意键退出n);getchar();return;printf(请输入第%d个员工的信息,n,i);printf(工号: );scanf(%d,&staff1-num); printf(职务: );scanf(%s,&staff1-duty); printf(姓名: );scanf(%s,&staff1-name); printf(性别: );scanf(%s,&staff1-sex); printf(年龄: );scanf(%d,&staff1-age); printf(学历: );scanf(%s,&staff1-edu); printf(工资: );scanf(%d,&staff1-salary); printf(办公电话: );scanf(%s,&staff1-tel_office); printf(移动电话: );scanf(%s,&staff1-mobile); printf(地址: );scanf(%s,&staff1-address);staff1-next=NULL;if(staff_first=NULL) staff_first=staff1;staff_end=staff1;else staff_end-next=staff1; staff_end=staff1;fwrite(&staff_end,sizeof(struct staff_type),1,fp);gfirst=0;printf(n);printf(n是否继续输入?(y/n);fflush(stdin);choice=getchar();if(choice!=y) fclose(fp); printf(nn); printf(输入完毕,请按回车键返回!n); fflush(stdin); getchar(); return; system(cls);while(1); void delstaff()int findok=0;struct staff * staff1,* staff2;char name10,choice;system(cls);printf(n输入要删除员工的姓名:);scanf(%s,&name);staff1=staff_first;staff2=staff1;while(staff1)if(strcmp(staff1-name,name)=0)findok=1;system(cls);printf(员工:%s的信息如下: n,staff1-name); printf(工号: %dn,staff1-num); printf(职务: %sn,staff1-duty); printf(姓名: %sn,staff1-name); printf(性别: %sn,staff1-sex); printf(年龄: %dn,staff1-age); printf(学历: %sn,staff1-edu); printf(工资: %dn,staff1-salary); printf(办公电话: %sn,staff1-tel_office); printf(移动电话: %sn,staff1-mobile); printf(地址: %sn,staff1-address);printf(n);printf(您真的要删除该员工吗?(y/n); fflush(stdin); choice=getchar();if(choice!=y&choice!=Y) return;if(staff1=staff_first) staff_first=staff1-next;else staff2-next=staff1-next;free(staff1);gsave=1; savedata(); printf(n); printf(删除成功,请按回车键退出!); fflush(stdin);getchar();return;elsestaff2=staff1;staff1=staff1-next; if(!findok) printf(n没有找到您要删除的员工信息,请重新确认!n); printf(n); printf(按回车键退出! n); fflush(stdin); getchar(); return;void findstaff()int ret=0,i=0;char str13;struct staff * staff1;printf(n请输入要查询的员工姓名: );scanf(%s,str);staff1=findname(str);displaystaff(staff1,姓名,str);fflush(stdin);getchar();struct staff * findname(char * name)struct staff * staff1;staff1=staff_first;while(staff1) if(strcmp(name,staff1-name)=0) return(staff1);staff1=staff1-next;return(NULL);void displaystaff(struct staff * staff,char * field,char * name)if(staff)printf(n%s:%s信息如下: n,field,name); printf(工号: %dn,staff-num); printf(职务: %sn,staff-duty); printf(姓名: %sn,staff-name); printf(性别: %sn,staff-sex); printf(年龄: %dn,staff-age); printf(学历: %sn,staff-edu); printf(工资: %dn,staff-salary); printf(办公电话: %sn,staff-tel_office); printf(移动电话: %sn,staff-mobile); printf(地址: %sn,staff-address); else printf(n);printf(资料库中没有%s为: %s的员工!请重新确认!,field,name);printf(nn); printf(按回车键退出!n); fflush(stdin); return;void summarystaff()struct staff * staff1;int sum=0,num=0,man=0,woman=0;staff1=staff_first;while(staff1) num+;sum+=staff1-salary;if(strcmp(staff1-sex,nan)=0) man+;else woman+;staff1=staff1-next;printf(n下面是相关员工的统计信息! n); printf(n);printf(员工总数是: %dn,num);printf(员工的工资总数是: %dn,sum);printf(男员工数为: %dn,man);printf(女员工数为: %dn,woman); printf(n);printf(按回车键退出! n); fflush(stdin);getchar();return;void savedata()FILE * fp; if(fp=fopen(staff.txt,wb)=NULL) printf(打开文件staff.txt出错!n);return; fwrite(&staff_first,sizeof(struct staff_type),1,fp);fclose(fp);void modifystaff()struct staff * staff1;char name10, * newcontent;int choice;printf(n请输入您要修改的员工姓名:);scanf(%s,&name);staff1=findname(name);displaystaff(staff1,姓名,name);if(staff1)printf(n请输入您要修改的员工选项!n);printf(1.修改职务n); printf(2.修改年龄n); printf(3.修改文化程度n); printf(4.修改工资n); printf(5.修改移动电话n); printf(6.修改住址n); printf(0.返回n);dofflush(stdin);choice=getchar();switch(choice)case1:newcontent=modi_field1(staff1-duty);if(newcontent!=NULL)strcpy(staff1-duty,newcontent);free(newcontent);break; case2:staff1-age=modi_age(staff1-age);break; case3:newcontent=modi_field2(staff1-edu); if(newcontent!=NULL)strcpy(staff1-edu,newcontent);free(newcontent);break; case4: staff1-salary=modi_salary(staff1-salary); break; case5:newcontent=modi_field4(staff1-mobile); if(newcontent!=NULL)strcpy(staff1-mobile,newcontent);free(newcontent); break; case6:newcontent=modi_field3(staff1-address); if(newcontent!=NULL)strcpy(staff1-address,newcontent);free(newcontent);break; case0: return;while(choice7);gsave=1;savedata();printf(n修改完毕,请按回车键退出!n); fflush(stdin);getchar(); return;int modi_salary(int salary)int newsalary;printf(原来的工资为:%dn,salary);printf(新的工资为: );scanf(%d,&newsalary);return(newsalary);int modi_age(int age)int newage;printf(原来的年龄为:%dn,age);printf(新的年龄为: );scanf(%d,&newage);return(newage);char *modi_field4(char * content)char *str;str=(char * )malloc(LEN);if(str=NULL) printf(内存分配失败,按任意键退出n);getchar();return NULL;printf(原来的移动电话为: %sn,content);pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年汽车参数考试题目及答案
- 2025年普通话笔试试题及答案
- 老旧厂区改造建设工程项目施工方案
- 光伏发电项目建筑工程方案
- 高强预应力混凝土管桩在支护结构中的实践应用
- 基于岗位需求的汽车类技工教育实践教学体系构建
- 2025年新能源汽车自动驾驶法规与车联网隐私保护报告
- 恒大网络购房营销方案
- 航空仪表知识题库及答案
- 舞蹈专业就业面试题及答案
- 个体诊所药品管理制度
- 2025年高考化学试卷(广东卷)(空白卷)
- 智联招聘公司管理制度
- 卫生心理健康课件
- 2025年学前教育专业课程考试试题及答案
- 医院培训课件:《精神科暴力特征及实战技巧》
- 2025年临床执业医师考试《第一单元》新版真题卷(含答案)
- 雅砻江公司招聘笔试题库2025
- T/CACE 0128-2024一次性原竹餐具通用技术要求
- 湖北省2025届高三数学上学期9月起点考试含答案
- 国际压力性损伤-溃疡预防和治疗临床指南(2025年版)解读课件
评论
0/150
提交评论