企业信息管理系统.doc_第1页
企业信息管理系统.doc_第2页
企业信息管理系统.doc_第3页
企业信息管理系统.doc_第4页
企业信息管理系统.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

南京工业大学信息科学与工程学院实 习 报 告( 2013 2014 学年第 一 学期)课程名称:_ _EMIS项目 _ 班 级:_ XXXX_学 号:_ XX _ _ 姓 名:_ XXXXX_指导教师: XXXX _2013 年 1 2 月一、 前言企业管理软件是面向企业的,能够帮助企业管理者优化工作流程,提高工作效率的信息化系统。企业管理软件重视系统功能的全面性,流程的可控性,技术的先进性,系统的易用性。2012年之后,中国企业迎来信息化成熟应用的阶段,中国管理软件产业也因势而变,迎来“一体化”浪潮。 因此企业管理软件很有发展前景。二、 功能描述本项目只是一个简化的企业管理系统,主要用于实现对企业基本信息的管理。具体包括对企业部门与企业员工的管理。其中企业部门管理包括增加部门、删除部门、列出部门;企业员工管理包括增加员工、删除员工、修改员工、列出部门员工、列出所有员工。当然在这些软件功能实现在之前,我给它添加了一个设置有用户名与密码的登录界面。三、 软件环境Windows下VC6.0或Linux下终端vi编译器,我开始选择的是VC6.0,可有些语言命令不识别,于是改为使用linux下终端vi编译器。四、 课题设计1. 系统模块图管理人员通过软件系统对企业部门与员工进行基本信息操作2程序流程图开始用户登录 失败 成功 1增加部门打开管理子系统界面 2删除部门 3列出部门 4增加员工选择功能 5删除员工 6修改员工信息 7列出部门员工 8列出所有员工 0返回(即结束)2. 定义结构体/* 定义员工结构体 */typedef struct char Name20; /姓名char Gender20; /性别int Age; /年龄int EmpId; /ID号Employee;/* 定义部门结构体 */typedef structchar m_strName20; /部门名称int DeptId; /部门ID号int size; /部门员工数 /Employee link;Department;方便程序数据调用。3. 函数功能描述1. void DengLu()void DengLu()函数用于设置登录密保。输入用户名与密码,有三次机会,三次都错就显示 登录失败!无法打开系统管理界面。登录成功就可以调用int ShowMenu()函数,进入系统管理界面。2. int ShowMenu()int ShowMenu()函数用于显示管理系统界面,并且返回键盘输入的08之间的数字3. void Menu ()void Menu ()函数调用int ShowMenu()函数的返回值,通过switch.case下面语句实现功能选择。4. void addDept ()void addDept ()函数用于实现增加部门的操作。选择功能【1】进入增加部门操作,输入部门ID、部门名称,则显示添加成功,若输入部门ID已存在,则显示ID存在。如图所示:5. void deleteDept ()void deleteDept ()函数用于删除部门。选择功能【2】进入删除部门操作,输入部门ID,若ID存在就显示删除成功;否则,显示ID无效。如图所示:6. void listDept ()void listDept ()函数用于实现列出部门信息功能。选择功能【3】进入列出部门操作,就会显示当前部门信息。如上图所示。7. void addEmp ()void addEmp ()函数用于实现增加员工功能,选择功能【4】进入增加员工操作。输入部门ID,若存在则输入员工ID,若存在则继续输入员工ID,直至不存在则输入员工姓名、性别、年龄。若部门ID不存在则显示部门ID无效。如图所示:8. void deleteEmp ()void deleteEmp ()函数用于实现删除员工功能。选择功能【5】进入删除员工操作,输入员工ID,若存在则显示删除成功;否在显示ID无效。如图所示:9. void modifyEmp ()void modifyEmp ()函数用于实现修改员工信息功能,选择功能【6】进入修改员工信息操作,输入员工ID,若存在,则再次输入员工姓名、性别、年龄,提示修改成功;若不存在,则显示ID无效。如图所示:10. void listEmp ()void listEmp ()函数用于实现列出部门员工信息功能,选择功能【7】进入列出部门员工操作,输入部门ID,若存在显示当前部门内的员工信息;否则显示ID无效。如图所示11. void listAllEmp ()void listAllEmp ()函数用于实现列出所有员工信息功能,选择功能【8】进入列出部门员工操作,显示当前所有的员工信息。如上面第9个函数里的图所示。12. 文件读写等操作。fread/fwrite() 函数用于对文件进行读写操作,本次项目程序主要就是熟练并且准确地对文件进行读写操作。fopen() 函数用于打开文件。mv命令用于文件移动(剪切复制)。cp命令用于文件拷贝。fseek()函数用于指定文件操作位置。五、 代码实现首先写emis.h头文件:#ifndef _EMIS_H_ /防止重复包含#define _EMIS_H_/* 定义员工结构体 */typedef struct char Name20; /姓名char Gender20; /性别int Age; /年龄int EmpId; /ID号Employee;/* 定义部门结构体 */typedef structchar m_strName20; /部门名称int DeptId; /部门ID号int size; /部门员工数 /Employee link;Department;int ShowMenu();void DengLu();/void ShowMenu();/int func();void addDept ();void deleteDept ();void listDept ();/void addEmp ();void addEmp1 ();void deleteEmp ();void modifyEmp ();void listEmp ();void listAllEmp (void);void Menu ();#endif /emis.h 然后写manger.c主体函数:#include#include#include#include#include#includeemis.husing namespace std;/* 登录界面 */void DengLu() int num = 0; char buf10; coutendl; cout EMIS系统登陆 endl; cout-endl; for (num = 1;num = 3;num+) cout用户名:flush; fgets(buf, 10, stdin); if (strcmp(buf, wanghuin) continue; cout密码:flush; fgets(buf, 10, stdin); if (strcmp(buf, 123456n) continue; break; if (num = 3) Menu(); else cout登录失败!endl; /* 管理系统界面 */int ShowMenu()/void ShowMenu() cout endl;cout 运营管理子系统 endl;cout - endl;cout 1 增加部门 endl;cout 2 删除部门 endl;cout 3 列出部门 endl;cout 4 增加员工 endl;cout 5 删除员工 endl;cout 6 修改员工信息 endl;cout 7 列出部门员工 endl;cout 8 列出所有员工 endl;cout 0 返回 endl;cout - endl;/int func()cout 请选择: flush;cin.clear ();char strEnter10;fgets(strEnter,10,stdin); /选择功能if (!strcmp(strEnter, 1n)return 1;if (!strcmp(strEnter, 2n)return 2;if (!strcmp(strEnter, 3n)return 3;if (!strcmp(strEnter, 4n)return 4;if (!strcmp(strEnter, 5n)return 5;if (!strcmp(strEnter, 6n)return 6;if (!strcmp(strEnter, 7n)return 7;if (!strcmp(strEnter, 8n)return 8;if (!strcmp(strEnter, 0n)return 0;return -1;/* 增加部门 */void addDept () Department dept;int oldid = 0,size = 0;dept.size = 0;FILE *p_file = fopen(a.bin, a+b); /打开a.bin文件 if (p_file) /打开成功 coutendl请输入部门ID:dept.DeptId; scanf(%*c); rewind(p_file); /从文件头开始 while (size = fread(&oldid, sizeof(int), 1, p_file) if (dept.DeptId = oldid) break; fseek(p_file, 24, SEEK_CUR); fseek(p_file, 0, SEEK_END); if (size) cout这个部门ID已存在!endl; else cout endl 请输入部门名称: dept.m_strName; if (strlen(dept.m_strName) = 19 & dept.m_strName18 != n) scanf(%*n); scanf(%*c); cin.clear (); /清除错误状态 cin.ignore (1024, n); /清除输入缓冲中字符 fwrite(&dept.DeptId, sizeof(int), 1, p_file); /记录部门ID fwrite(dept.m_strName, sizeof(char), 20, p_file); /记录部门名称 fwrite(&dept.size, sizeof(int), 1, p_file); /记录部门人数 cout增加部门成功!endl; fclose(p_file); p_file = NULL;/* 删除部门 */void deleteDept () Department dept; int flog=0;int oldid = 0,size = 0; system(cp a.bin d.bin);FILE *p_file = fopen(d.bin, rb); FILE *p_file1= fopen(a.bin,wb); if (p_file) cout请输入部门ID:dept.DeptId; scanf(%*c); / rewind(p_file); /从文件头开始 fseek(p_file,0,0); /printf(%dn,dept.DeptId); while (size = fread(&oldid, sizeof(int), 1, p_file) / printf(oldid=%dn,oldid); if (dept.DeptId = oldid) / break; flog=1; fseek(p_file,24,1); /printf(shanchu chenggongn); cout 删除部门成功! endl; continue; else int deptid; char name20=; int sum; fseek(p_file,-4,1); fread(&deptid,4,1,p_file); fread(name,1,20,p_file); fread(&sum,4,1,p_file); fwrite(&deptid,4,1,p_file1); fwrite(name,1,20,p_file1); fwrite(&sum,4,1,p_file1); / fseek(p_file, 24, SEEK_CUR); / if(!flog) cout 无效部门ID! endl; cin.clear (); /清除错误状态 cin.ignore (1024, n); /清除输入缓冲中字符 /fseek(p_file, 0, SEEK_END);fclose(p_file); fclose(p_file1); p_file1=NULL; p_file = NULL; system(rm d.bin);/* 列出部门信息 */void listDept () /要修改Department dept;int size=0;cout endl left setw (11) 部门ID setw (22) 部门名称 员工人数 endl;cout - endl;FILE *p_file = fopen(a.bin, a+b); if (p_file) rewind(p_file); while (size = fread(&dept.DeptId, sizeof(int), 1, p_file) fseek(p_file,-4,1); fread(&dept.DeptId, sizeof(int), 1, p_file); /读取部门ID fread(dept.m_strName, sizeof(char), 20, p_file); /读取部门名称 fread(&dept.size, sizeof(int), 1, p_file); /读取部门人数 cout setw (11) dept.DeptId setw (22) dept.m_strName dept.size endl;fclose(p_file); p_file = NULL;/* 增加员工 */void addEmp1 () Employee emp;Department dept; dept.size = 0; int flog=0;int oldid = 0,size = 0,size1 = 0;FILE *p_file = fopen(a.bin, ab+);FILE *p_four = fopen(f.bin, ab+); if (p_file) coutendl请输入部门ID:dept.DeptId; scanf(%*c); rewind(p_file); while (size = fread(&oldid, sizeof(int), 1, p_file) /*printf(id:%dn,oldid); printf(size=%dn,size); printf(id:%dn,dept.DeptId);*/ if (dept.DeptId = oldid) flog=1; FILE *p_dest = fopen(b.bin, ab+); if (p_dest) cout endl请输入员工ID: emp.EmpId;/ scanf(%*c); rewind(p_dest); while (size1 = fread(&oldid, sizeof(int), 1, p_dest) if (emp.EmpId = oldid) cout这个员工ID已存在!endl; cout endl请输入员工ID: emp.EmpId; / scanf(%*c); rewind(p_dest); continue; fseek(p_dest, 44, SEEK_CUR); /* if (size1) cout这个员工ID已存在!endl; */ fseek(p_dest,0,2); cout 请输入员工姓名: emp.Name; cout 请输入员工性别: emp.Gender; cout 请输入员工年龄: emp.Age; fwrite(&emp.EmpId, sizeof(int), 1, p_dest); /记录员工ID fwrite(emp.Name, sizeof(char), 20, p_dest); /记录员工姓名 fwrite(emp.Gender, sizeof(char), 20, p_dest); /记录员工性别 fwrite(&emp.Age, sizeof(int), 1, p_dest); /记录年龄 /dept.size+; /部门增加一个员工 cout 增加员工成功! endl; FILE *p_scr=fopen(c.bin,ab+); /printf(2.写到f文件的deptid:%dn,dept.DeptId); /打开C文件 if(p_scr) fseek(p_file,-4,SEEK_CUR); fread(&dept.DeptId,sizeof(int),1,p_file); fseek(p_dest,-48,SEEK_CUR); fread(&emp.EmpId, sizeof(int), 1, p_dest); fread(emp.Name, sizeof(char), 20, p_dest); fread(emp.Gender, sizeof(char), 20, p_dest); fread(&emp.Age, sizeof(int), 1, p_dest); fwrite(&dept.DeptId,sizeof(int),1,p_scr); fwrite(&emp.EmpId, sizeof(int), 1, p_scr); /记录员工ID fwrite(emp.Name, sizeof(char), 20, p_scr); /记录员工姓名 fwrite(emp.Gender, sizeof(char), 20, p_scr); /记录员工性别 fwrite(&emp.Age, sizeof(int), 1, p_scr); /记录年龄 fclose(p_scr); p_scr=NULL; / printf(3.写到f文件的deptid:%dn,dept.DeptId); fclose(p_dest); p_dest = NULL; fseek(p_file,20,1); fread(&dept.size,4,1,p_file); dept.size+; /部门人数加一 要修改! /printf(4.写到f文件的deptid:%dn,dept.DeptId); fseek(p_file,-28,SEEK_CUR); fread(&dept.DeptId,4,1,p_file); fread(dept.m_strName,1,20,p_file); int sizedept; fread(&sizedept,4,1,p_file); /rintf(if:写到f文件的deptid:%dn,dept.DeptId); /fseek(p_four,0,0); fwrite(&dept.DeptId,4,1,p_four); /将当前部门信息写入f文件 fwrite(dept.m_strName,1,20,p_four); fwrite(&dept.size,sizeof(int),1,p_four); fseek(p_four,-28,1); int temp2; fread(&temp2,4,1,p_four); /printf(1.f1.temp=%dn,temp2); else fseek(p_file,-4,1); int tempid; fread(&tempid,4,1,p_file); fread(dept.m_strName,1,20,p_file); fread(&dept.size,sizeof(int),1,p_file); /printf(else :写到f文件的deptid:%dn,dept.DeptId); fwrite(&tempid,4,1,p_four); fwrite(dept.m_strName,1,20,p_four); fwrite(&dept.size,sizeof(int),1,p_four); /printf(flog:%dn,flog); if(!flog) cout 无效部门ID! endl; cin.clear (); cin.ignore (1024, n); / printf(f guanbi zhiqiann); /* fseek(p_four,-4,1); int temp; fread(&temp,4,1,p_four); printf(3.f1.temp=%dn,temp);*/ fclose(p_file); p_file = NULL; fclose(p_four); p_four = NULL; system(mv f.bin a.bin);/* 删除员工 */void deleteEmp () Employee emp;int oldid = 0,size = 0; int flog=0; system(cp b.bin d.bin);FILE *p_dest = fopen(d.bin, rb);FILE *p_dest1 = fopen(b.bin, wb); if (p_dest) cout endl 请输入员工ID: emp.EmpId; scanf(%*c); rewind(p_dest); while (size = fread(&oldid, sizeof(int), 1, p_dest) if (emp.EmpId = oldid) fseek(p_dest, 44, SEEK_CUR); flog=1; cout 删除员工成功! endl; continue; else fseek(p_dest,-4,1); fread(&emp.EmpId, sizeof(int), 1, p_dest); fread(emp.Name, sizeof(char), 20, p_dest); fread(emp.Gender, sizeof(char), 20, p_dest); fread(&emp.Age, sizeof(int), 1, p_dest); fwrite(&emp.EmpId, sizeof(int), 1, p_dest1); fwrite(emp.Name, sizeof(char), 20, p_dest1); fwrite(emp.Gender, sizeof(char), 20, p_dest1); fwrite(&emp.Age, sizeof(int), 1, p_dest1); if(!flog) cout 无效员工ID! endl; cin.clear (); /清除错误状态 cin.ignore (1024, n); /清除输入缓冲中字符 fclose(p_dest); p_dest = NULL;fclose(p_dest1); p_dest1 = NULL; system(rm d.bin);/* 修改员工信息 */void modifyEmp () Employee emp;int oldid = 0,size = 0; int flog=0; /system(cp b.bin d.bin);FILE *p_dest1 = fopen(d.bin, ab+);FILE *p_dest = fopen(b.bin, rb); if (p_dest) cout endl 请输入员工ID: emp.EmpId; scanf(%*c); rewind(p_dest); while (size = fread(&oldid, sizeof(int), 1, p_dest) if (emp.EmpId = oldid) cout 请输入员工姓名: emp.Name; cout 请输入员工性别: emp.Gender; cout 请输入员工年龄: emp.Age; fwrite(&emp.EmpId,sizeof(int),1,p_dest1); /记录员工ID fwrite(emp.Name,sizeof(char),20,p_dest1); fwrite(emp.Gender,sizeof(char),20,p_dest1); fwrite(&emp.Age,sizeof(int),1,p_dest1); cout 修改员工信息成功! endl; flog=1; fseek(p_dest,44,1); else int EmpId; /很重要! fseek(p_dest,-4,1); fread(&EmpId,siz

温馨提示

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

评论

0/150

提交评论