第一篇:人事管理系统源代码
#include
char xm[7];char xb[3];char sr[15];char whcd[13];char zc[17];char sfzh[19];char lxdh[12];int gl;int nl;};struct member_info member[N+1];int CurrentCount=0;void input(){ char sfjx=1;
while(sfjx!=0)
{
if(CurrentCount==N)
{
printf(“n人数已达上限,不能添加!!n”);
sfjx=0;
}
else
{
CurrentCount++;
printf(“n请输入员工信息(姓名 性别 生日 年龄 文化程度 联系电话 身份证号码 工龄 职称):n”);
scanf(“%s%s%s%d%s%s%s%d%s”,member[CurrentCount].xm,member[CurrentCount].xb,member[CurrentCount].sr,&member[CurrentCount].nl,member[CurrentCount].whcd,member[CurrentCount].lxdh,member[CurrentCount].sfzh,&member[CurrentCount].gl,member[CurrentCount].zc);
printf(“n是否继续(0--结束,其它--继续):”);
scanf(“%d”,&sfjx);
}
} printf(“人员已排序”);int i,j;
for(i=1;i for(j=CurrentCount;j>i;j--) if(strcmp(member[j].sfzh,member[j-1].sfzh)<0) { member[0]=member[j]; member[j]=member[j-1]; member[j-1]=member[0]; } printf(“n 人事基本信息表n”); printf(“ 序号 姓名 性别 生日 年龄 文化程度 联系电话 身份证号码 工龄 职称n”); for(i=1;i<=CurrentCount;i++) printf(“%4d %6s%3s%11s%3d%8s%12s%20s%3d%5sn”,i,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); system(“pause”);} void save(){ FILE *fp; fp=fopen(“ygjbxx.txt”,“w”); if(fp==NULL) printf(“n文件打开不成功,信息无法保存!!n”); else { fprintf(fp,“%d”,CurrentCount); for(int i=1;i<=CurrentCount;i++) fprintf(fp,“n%8s%4s%16s%4d%14s%13s%20s%4d%18s”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); fclose(fp); printf(“n信息已成功保存!!n”); } system(“pause”);} void read(){ FILE *fp; fp=fopen(“ygjbxx.txt”,“r”); if(fp==NULL) printf(“n文件打开不成功,信息无法读取!!n”); else { fscanf(fp,“%d”,&CurrentCount); for(int i=1;i<=CurrentCount;i++) { fscanf(fp,“%s%s%s%d%s%s%s%d%s”,member[i].xm,member[i].xb,member[i].sr,&member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,&member[i].gl,member[i].zc); printf(“姓名:%s 性别:%s 生日:%s 年龄:%d 文化程度: %s 联系电话: %s 身份证号码: %s 工龄: %d 职称: %sn”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); } fclose(fp); printf(“n信息已成功读取!!n”); } system(“pause”);} void search(){ char dcsfzh[19]; int sfjx=1,i; while(sfjx!=0) { printf(“n请输入一个待查员工的身份证号码:”); scanf(“%s”,dcsfzh); strcpy(member[0].sfzh,dcsfzh); i=CurrentCount; while(strcmp(member[i].sfzh,dcsfzh)!=0) i--; if(i==0) printf(“查无此人!!n”); else { printf(“n此人详细信息如下:n”); printf(“姓名:%s 性别:%s 生日:%s 年龄:%d 文化程度: %s 联系电话: %s 身份证号码: %s 工龄: %d 职称: %sn”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void del(){ char dcsfzh[19]; int sfjx=1,i,j; while(sfjx!=0) { printf(“n请输入一个待删员工的身份证号码:”); scanf(“%s”,dcsfzh); strcpy(member[0].sfzh,dcsfzh); i=CurrentCount; while(strcmp(member[i].sfzh,dcsfzh)!=0) i--; if(i==0) printf(“查无此人!!n”); else { printf(“n此人详细信息如下:n”); printf(“姓名:%s 性别:%s 生日:%s 年龄:%d 文化程度: %s 联系电话: %s 身份证号码: %s 工龄: %d 职称: %sn”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); printf(“n按任意键开始删除......n”); system(“pause”); for(j=i+1;j<=CurrentCount;j++) member[j-1]=member[j]; CurrentCount--; printf(“n已成功删除......n”); system(“pause”); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void modify(){ char dcsfzh[19]; int sfjx=1,i; while(sfjx!=0) { printf(“n请输入一个待修改员工的身份证号码:”); scanf(“%s”,dcsfzh); strcpy(member[0].sfzh,dcsfzh); i=CurrentCount; while(strcmp(member[i].sfzh,dcsfzh)!=0) i--; if(i==0) printf(“查无此人!!n”); else { printf(“n此人详细信息如下:n”); printf(“姓名:%s 性别:%s 生日:%s 年龄:%d 文化程度: %s 联系电话: %s 身份证号码: %s 工龄: %d 职称: %sn”,member[i].xm,member[i].xb,member[i].sr,member[i].nl,member[i].whcd,member[i].lxdh,member[i].sfzh,member[i].gl,member[i].zc); printf(“n请输入新内容......n”); printf(“n请输入人员相关信息(姓名 性别 生日 年龄 文化程度 联系电话 身份证号码 工龄 职称):”); scanf(“%s%s%s%d%s%s%s%d%s”,member[CurrentCount].xm,member[CurrentCount].xb,member[CurrentCount].sr,&member[CurrentCount].nl,member[CurrentCount].whcd,member[CurrentCount].lxdh,member[CurrentCount].sfzh,&member[CurrentCount].gl,member[CurrentCount].zc); printf(“n已成功修改......n”); system(“pause”); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} int check(){ int count=0,name,pass; while(count<=2) { printf(“n请输入用户名及密码:”); scanf(“%d%d”,&name,&pass); count++; if((name==1)&&(pass==1)) count=10; else if(count>2) count=5; } if(count==10) return 0; else return 1;} struct mem_gz { float jbgz;float cql;float jj;float kk;float grsd;float sf;};struct mem_gz mem[N+1];void inputgz(){ char sfjx=1;CurrentCount=0; while(sfjx!=0) { if(CurrentCount==N) { printf(“n工资已添加完毕,无法添加!!n”); sfjx=0; } else { CurrentCount++; printf(“请输入身份证号码为:%s的员工工资资料n”,member[CurrentCount].sfzh); printf(“n请输入员工工资信息(基本工资 考勤 奖金 扣款 个人所得税):n”); scanf(“%f%f%f%f%f”,&mem[CurrentCount].jbgz,&mem[CurrentCount].cql,&mem[CurrentCount].jj,&mem[CurrentCount].kk,&mem[CurrentCount].grsd); mem[CurrentCount].sf=mem[CurrentCount].jbgz*mem[CurrentCount].cql+mem[CurrentCount].jj-mem[CurrentCount].kk-mem[CurrentCount].grsd; } printf(“n是否继续(0--结束,其它--继续):n”); scanf(“%d”,&sfjx); } system(“pause”);} void savegz(){ FILE *fq; fq=fopen(“yggzxx.txt”,“w”); if(fq==NULL) printf(“n文件打开不成功,信息无法保存!!n”); else { fprintf(fq,“%d”,CurrentCount); for(int i=1;i<=CurrentCount;i++) fprintf(fq,“n%f %f %f %f %f %f”,mem[i].jbgz,mem[i].cql,mem[i].jj,mem[i].kk,mem[i].grsd,mem[i].sf); fclose(fq); printf(“n信息已成功保存!!n”); } system(“pause”);} void readgz(){ FILE *fq; fq=fopen(“yggzxx.txt”,“r”); if(fq==NULL) printf(“n文件打开不成功,信息无法读取!!n”); else { fscanf(fq,“%d”,&CurrentCount); for(int i=1;i<=CurrentCount;i++) { fscanf(fq,“%f%f%f%f%f%f”,&mem[i].jbgz,&mem[i].cql,&mem[i].jj,&mem[i].kk,&mem[i].grsd,&mem[i].sf); printf(“基本工资: %f 考勤: %f 奖金: %f 扣款: %f 个人所得税: %f 实发工资:%fn”,mem[i].jbgz,mem[i].cql,mem[i].jj,mem[i].kk,mem[i].grsd,mem[i].sf); } fclose(fq); printf(“n信息已成功读取!!n”); } system(“pause”);} void searchgz(){ int dcbh; int sfjx=1; while(sfjx!=0) { printf(“n请输入一个待查员工编号(身份证号从小到大的顺序):”); scanf(“%d”,&dcbh); if(dcbh<1||dcbh>CurrentCount) printf(“查无此人!!n”); else { printf(“n此人工资信息如下:n”); printf(“基本工资: %f 考勤: %f 奖金: %f 扣款: %f 个人所得税: %f 实发工资:%fn”,mem[dcbh].jbgz,mem[dcbh].cql,mem[dcbh].jj,mem[dcbh].kk,mem[dcbh].grsd,mem[dcbh].sf); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void delgz(){ int dcbh; int sfjx=1,j; while(sfjx!=0) { printf(“n请输入一个待删工资的编号:”); scanf(“%d”,&dcbh); if(dcbh<1||dcbh>CurrentCount) printf(“查无此人!!n”); else { printf(“n此人工资信息如下:n”); printf(“基本工资: %f 考勤: %f 奖金: %f 扣款: %f 个人所得税: %f 实发工资:%fn”,mem[dcbh].jbgz,mem[dcbh].cql,mem[dcbh].jj,mem[dcbh].kk,mem[dcbh].grsd,mem[dcbh].sf); printf(“n按任意键开始删除......n”); system(“pause”); for(j=dcbh+1;j<=CurrentCount;j++) mem[j-1]=mem[j]; CurrentCount--; printf(“n已成功删除......n”); system(“pause”); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void modifygz(){ int dcbh; int sfjx=1; while(sfjx!=0) { printf(“n请输入一个待修改工资员工的编号:”); scanf(“%d”,&dcbh); if(dcbh<1||dcbh>CurrentCount) printf(“查无此人!!n”); else { printf(“n此人工资信息如下:n”); printf(“基本工资: %f 考勤: %f 奖金: %f 扣款: %f 个人所得税: %f 实发工资:%fn”,mem[dcbh].jbgz,mem[dcbh].cql,mem[dcbh].jj,mem[dcbh].kk,mem[dcbh].grsd,mem[dcbh].sf); printf(“n请输入新内容......n”); printf(“n请输入人员工资信息(基本工资 考勤 奖金 扣款 个人所得税 实发工资):”); scanf(“%f%f%f%f”,&mem[CurrentCount].jbgz,&mem[dcbh].cql,&mem[dcbh].jj,&mem[dcbh].kk,&mem[dcbh].grsd,&mem[dcbh].sf); printf(“n已成功修改......n”); system(“pause”); } printf(“n是否继续(0--结束,其它--继续):”); scanf(“%d”,&sfjx); } system(“pause”);} void listgz(){ int i; printf(“n 员工工资信息表n”); printf(“ 序号 基本工资 考勤 奖金 扣款 个人所得税 实发工资n”); for(i=1;i<=CurrentCount;i++) printf(“%4d %8f%8f%8f%8f”,i,mem[i].jbgz,mem[i].cql,mem[i].jj,mem[i].kk,mem[i].grsd,mem[i].sf); system(“pause”);} void main(){ int xz=1; printf(“ *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*n”);printf(“ * 欢迎使用人事工资管理系统 *n”);printf(“ ***************************************nnn”); if(check()!=0) { printf(“n你无权使用本系统......nn”); system(“pause”); } else { while(xz!=0) { printf(“n请选择相应功能:n”); printf(“1-录入n2-查询n3-修改n4-删除n5-保存n6-读取n7-输入员工工资n8-保存工资信息n9-读取工资信息n10-修改工资信息n11-删除工资信息n12-工资列表n0-结束n请输入选择:”); scanf(“%d”,&xz); switch(xz) { case 1: input();break; case 2: search();break; case 3: modify();break; case 4: del();break; case 5: save();break; case 6: read();break; case 7: inputgz();break; case 8: savegz();break; case 9: readgz();break; case 10: modifygz();break; case 11: delgz();break; case 12: listgz();break; case 0: printf(“nn谢谢使用本系统!nn”);system(“pause”);break; default: printf(“n无此功能,请重新选择......n”); system(“pause”); } } } } using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq; namespace WebApplication1 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e){ } protected void Button1_Click(object sender, EventArgs e){ Response.Redirect(“~/登录.aspx”); } protected void Button2_Click(object sender, EventArgs e){ Response.Redirect(“~/人员信息查询.aspx”);} protected void Button3_Click(object sender, EventArgs e){ Response.Redirect(“~/人员修改.aspx”);} protected void Button4_Click(object sender, EventArgs e){ Response.Redirect(“~/部门信息.aspx”);} protected void Button5_Click(object sender, EventArgs e){ Response.Redirect(“~/工资信息.aspx”);} } } using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.SqlClient;namespace WebApplication1 { public partial class 部门信息 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e){ } protected void Button1_Click(object sender, EventArgs e){ bool find =false;SqlConnection con=new SqlConnection(“server=localhost;Integrated Security=SSPI;database=人事管理系统”);con.Open();string cmdstr=“select * from 部门表”;SqlDataAdapter da=new SqlDataAdapter(cmdstr,con);DataSet ds=new DataSet();da.Fill(ds);for(int i=0;i TextBox2.Text=ds.Tables[0].Rows[i][“部门代码”].ToString();TextBox3.Text=ds.Tables[0].Rows[i][“部门名称”].ToString(); find=true;} } } if(find == false){ Response.Write(“”);con.Close();} } protected void Button2_Click(object sender, EventArgs e){ Response.Redirect(“~/Default.aspx”);} } } using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.SqlClient;using System.Data.SqlTypes;namespace WebApplication1 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e){ } protected void TextBox1_TextChanged(object sender, EventArgs e){ } protected void Button1_Click(object sender, EventArgs e){ SqlConnection con = new SqlConnection(“server=localhost;Integrated Security=SSPI;database=人事管理系统”); string strCount;strCount = “select * from 人事表”;con.Open();SqlCommand com = new SqlCommand(strCount, con);SqlDataReader dr = com.ExecuteReader();string strUsername = “", strPassword = ”“; while(dr.Read()){ if(TextBox1.Text == dr[”编号“].ToString()||TextBox2.Text == dr[”用户密码“].ToString()){ strUsername = dr[”编号“].ToString();strPassword = dr[”用户密码“].ToString();break;} } dr.Close();con.Close();if(strUsername == ”“){ Response.Write(”“);return;} } protected void Button2_Click(object sender, EventArgs e){ Response.Redirect(”~/Default.aspx“); } } } using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.SqlClient; namespace WebApplication1 { public partial class 工资信息 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e){ } protected void TextBox2_TextChanged(object sender, EventArgs e){ } protected void TextBox5_TextChanged(object sender, EventArgs e){ } protected void Button1_Click(object sender, EventArgs e){ bool find = false;SqlConnection con = new SqlConnection(”server=localhost;Integrated Security=SSPI;database=人事管理系统“);con.Open();string cmdstr = ”select * from 工资表“;SqlDataAdapter da = new SqlDataAdapter(cmdstr, con);DataSet ds = new DataSet();da.Fill(ds);for(int i = 0;i < ds.Tables[0].Rows.Count;i++){ for(int j = 0;j < ds.Tables[0].Columns.Count;j++){ String data =(ds.Tables[0].Rows[i][j].ToString()).Trim();if(data == TextBox1.Text.Trim()){ TextBox2.Text = ds.Tables[0].Rows[i][”应发工资“].ToString();TextBox3.Text = ds.Tables[0].Rows[i][”岗位津贴“].ToString();TextBox4.Text = ds.Tables[0].Rows[i][”奖励“].ToString();TextBox5.Text = ds.Tables[0].Rows[i][”保险“].ToString(); find = true;} } } if(find == false){ Response.Write(”“);con.Close();} } protected void Button2_Click(object sender, EventArgs e){ Response.Redirect(”~/Default.aspx“);} } } using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.SqlClient;namespace WebApplication1 { public partial class 人员信息 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e){ } protected void Button1_Click(object sender, EventArgs e){ Response.Redirect(”~/Default.aspx“);} protected void Button2_Click(object sender, EventArgs e){ bool find =false;SqlConnection con = new SqlConnection(”server=localhost;Integrated Security=SSPI;database=人事管理系统“);con.Open();string cmdstr=”select * from 工资表“;SqlDataAdapter da=new SqlDataAdapter(cmdstr,con);DataSet ds=new DataSet();da.Fill(ds);for(int i=0;i TextBox2.Text=ds.Tables[0].Rows[i][”应发工资“].ToString();TextBox3.Text=ds.Tables[0].Rows[i][”岗位津贴“].ToString();TextBox4.Text=ds.Tables[0].Rows[i][”奖励“].ToString();TextBox5.Text = ds.Tables[0].Rows[i][”保险“].ToString(); find=true;} } } if(find == false){ Response.Write(”“);con.Close();} } } } using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.SqlClient;namespace WebApplication1 { public partial class 人员修改 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e){ } protected void TextBox5_TextChanged(object sender, EventArgs e){ } protected void Button2_Click(object sender, EventArgs e){ SqlConnection con=new SqlConnection(”server=localhost;Integrated Security=SSPI;database=人事管理系统“);con.Open();string insert=”insert into 人事表(员工号,姓名,性别,职称,学历)values(“+”“+ TextBox1.Text.Trim()+”“+”,“+”“ + TextBox2.Text.Trim()+”“+”,“+ TextBox3.Text.Trim()+ ”,“ +”“+ TextBox4.Text.Trim()+”“+”,“+”“ +TextBox5.Text.Trim()+ ”“+”)“;Response.Write(insert);SqlCommand cmd1=new SqlCommand(insert,con); con.Close();} protected void Button1_Click(object sender, EventArgs e){ Response.Redirect(”~/Default.aspx");} protected void GridView1_SelectedIndexChanged(object sender, EventArgs e){ } } } 企业人事财务管理系统的开发与设计 内容摘要 随着Internet的不断发展,传统的管理方式,消耗大量的人力物力,传统的方式已经赶不上时代的脚步,所以开发一个高效的企业人事财务管理系统,是非常必要的。 本系统作为一个MySQL数据库开发运用程序,主要是分为前台部分和后台部分,前台部分是面向用户,主要包括对自身工资的查询,对考勤的查询等功能的实现。后台部分是面向管理员,主要包括对职员管理,考勤管理,工资发放管理,公司结算预算等功能。 该系统的开发环境主要是MysqL+php的结合,同时加入了Html的语言来完成的界面设计。 关键词:人事财务管理,MysqL,php 目 录 一、引 言...............................................................1 (一)设计目的.......................................................1 (二)设计要求.......................................................1 (三)设计环境.......................................................1 二、需求分析............................................................2 (一)系统总体需求...................................................2 1.系统简介......................................................2 2.系统分析......................................................2 (三)数据字典.......................................................3 三、概念结构设计........................................................5 (一)E-R图.........................................................5 (二)系统的功能结构设计.............................................7 1.总架构设计.....................................................7 2.功能模块的划分.................................................7 四、逻辑结构设计........................................................9 (一)关系模式.......................................................9 (二)表的设计与创建.................................................9 五、数据库系统开发与实现...............................................11 (一)管理员主要功能模块设计........................................11 1.部门及职位管理模块...........................................11 2.工资修改模块.................................................12 3.员工管理模块.................................................12 4.查询工资模块.................................................13 5.修改考勤表模块...............................................13 (二)后台主要功能模块设计.........................................14 结 论..................................................................16 参考文献...............................................................17 一、引 言 (一)设计目的 随着公司规模的扩大,经济体制的快速发展,公司组织管理会变得越来越庞大和困难,而信息的处理与使用也变得越来越重要。人事管理信息系统是企业管理中不可缺少的一部分,无论对企业决策者和管理者来说都至关重要,所以建立一套人事管理系统,能够加快物资的周转速度,提高生产效率,加强管理的信息化手段,更好的为企业的发展和后勤服务,提高本单位的经济效益。该系统的实现,可以使企业更方便的对工作人员信息进行查询和录入,配合市场管理的步伐。从宏观上讲,顺应了社会的信息化、社会化潮流,缩短了整个社会化大生产的周期。因此,开发这样一套管理软件成为很有必要的事情。 (二)设计要求 在信息高度发达的今天,人事管理的对象是一个单位或若干单位种的员工的基本信息,这些信息是在变化的。人事部门要为本单位、上级部门提供准确的统计数据。由于人员众多、数据复杂、统计管理工作困难,以往每做一项工作,都需要花费很多的时间和精力。传统的人工管理方式有诸如效率低,保密性差,查找、更新、维护困难等各种各样的缺点。因此,人事管理系统能够为用户例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。能够极大地提高人事管理的效率。同时,使企业实现科学化、正规化管理以及与世界先进管理技术接轨。 (三)设计环境 该系统的开发环境主要是PHP+MysqL.二、需求分析 (一)系统总体需求 1.系统简介 该系统是一个企业人事财务管理系统,主要是分为前台部分和后台部分,前台部分是面向员工,主要包括注册及登陆,工资信息的查询,考勤查询,查询自己的某月或者全年考勤加班情况等功能的实现。后台部分是面向管理员,主要包括对职员信息管理,对部门或者职位的变更,对员工考勤信息的管理和维护,对员工的工资进行结算等功能。 以企业的人事工资管理为设计和开发对象,系统应具有的设计要求包括: 1、全体员工的岗位、级别设定、员工的基本信息设定; 2、企业部门的划分与设定;; 3、员工不同工种的基本工资设定; 4、加班津贴应根据加班时间和类型给予不同的补助; 5、按照不同工种的基本工资、考勤、应产生员工的月工资; 6、设计年终奖的计算方法; 7、工资报表,能够查询每个员工的工资情况、每个部门的工资情况、按月的工资统计,按年的工资统计; 8、进一步基于工资的财务预算与决算; 系统由php+mysql设计实现,具有数据操作方便、高效、迅速等优点。该系统采用功能强大的数据库软件开发工具进行开发,具有很好的可移植性。2.系统分析 (1)系统管理 对使用系统的用户进行管理,为他们分配一定的权限,使他们规范的使用系统。本系统的用户及其操作权限都是由管理员添加的,管理员添加完毕之后,再将登录名(即职工编号)和密码分配给员工。 (2)职工信息管理 管理员可以对职工信息进行管理,包括对职工基本信息和职工调动情况的记录进行查询、添加、删除和修改。 (3)职工考勤管理 用于对职工的考勤情况进行记录,同时管理和查询企业职工出勤情况。其中包括日考勤记录、请假、加班、出差等情况的查询、添加、删除和修改。 (4)职工工资管理 可以根据职工的考勤情况,对员工的工资进行结算,负责打印工资条。年底结算后,可以根据公司的业绩情况,对职工发放不同的奖金。 (5)对企业开销进行管理 可以在年初对企业进行今年一年开销的预算,制定财务计划;年终可以进行结算,计算工资一年的成果。作为来年公司预算的参考。 (6)对部门和职位的管理 根据公司的具体情况,增设、删除和改变职位和部门,同时设置不同部门不同职位的基本工资。 (三)数据字典 1.职员表:职员编号(主键)、职员所属部门、职位、职员登录密码 表2.1 职员表的建立 2.考勤表:职员编号(主键)、年份、月份、缺勤次数、普通加班、特殊加班 表2.2 考勤表的建立 3.职员薪水表:部门编号(主键)、职位号(主键)、基本工资 表2.3 职员薪水表的建立 4.职位表:职位编号(主键)、职位名称 表2.4 职位表的建立 5.部门表:部门编号(主键)、部门名称 表2.5 部门表的建立 6.管理员表:管理员登录账号(主键)、密码 表2.6 管理员表的建立 三、概念结构设计 (一)E-R图 图3.1 职员 E-R 图 图3.2 考勤 E-R 图 图3.3 部门 E-R 图 图3.4 职位 E-R 图 图3.5 薪水设计 E-R 图 图3.6 管理员 E-R 图 部门编号姓名职位编号登录密码职员编号查询年份查询月份缺勤天数普通加班特殊加班职员编号部门编号部门名称职位编号部门职员考勤am管理nnmpl考勤q管理管理员密码o查询b职位编号管理员薪水部门编号管理账户管理员编号职位名称职位基本工资 图3.7 总设计 E-R 图 (二)系统的功能结构设计 1.总架构设计 图3.8 系统总体功能图 2.功能模块的划分 1:系统管理 系统启动的时候有一个管理员用户,使用这个用户登陆以后,可以添加其他用户,而且每个用户都可以更改自己的密码。 1)登陆系统 2)用户设置:设置用户密码,只有管理员才能创建修改删除其他用户。3)退出系统 2:人事管理 1)添加员工信息:系统自动生成员工的编号。管理员可以添加员工的基本信息。包括姓名,性别,年龄,联系电话,学历,专业,分配部门和职位,进入本公司的时间等; 2)修改员工信息:选择一个员工,可以修改这个员工的基本信息。包括员工调动时的信息修 改,以及工资修改; 3)查询员工的基本信息:可以根据员工的编号,姓名进行查询员工的基本信息,并且可以针对查询结果进行修改和册除等工作; 4)册除员工信息:直接从列表中选中要册除的员工信息,然后进行册除操作,或者首先查询要册除的员工信息,然后在册除。 3:基础信息管理 1)职务类别设置:设置职务分类,增加或者删除职位; 2)工资类别设置:设置工资分类,根据考勤表发放工资和奖金等; 3)部门类别设置:设置部门分类。4:考勤管理 1)考勤记录:记录员工的出勤情况; 2)考勤查询:调用数据库来查询员工的出勤情况。5:公司财务管理 1)年初总体预算; 2)年底结算。 四、逻辑结构设计 该企业人事财务管理系统主要分为两个部分,分别对应管理员管理和职员。 (一)关系模式 职员可以登录系统,查询自己的工资情况,也可以查询自己的考勤情况。 管理员登录,可以管理员工信息,管理考勤信息,可以查询基本工资,根据公司每年的开支,进行年底结算,根据公司收支,对员工进行不同的奖励。 (二)表的设计与创建 考虑系统的实际需要,本系统数据库至少要包含职员信息表(staff)、薪水信息表(salary)、考勤表(check1)、部门表(department)、职位表(post)、管理员表(admin)。 职员信息表(staff) 管理员表(admin) 薪水信息表(salary) 部门表(department) 职位表(post) 考勤表(check1) 五、数据库系统开发与实现 基于的旅店管理系统主要分为两个部分,分别对应管理员管理和职员查询。 (一)管理员主要功能模块设计 管理员可以登录,系统主界面如图5-1所示。 图5-1 系统主界面 1.部门及职位管理模块 管理员登录后可以进行部门和职位的管理,如图5-2所示: 图5-2 部门管理主界面 点击添加部门可以完成新部门新职位的添加功能,代码如下,操作界面如图5-3 所示 mysql_query(“insert into department values('”.$DepartNo.“','”.$DepartmentName.“')”);mysql_query(“insert into salary values('”.$DepartNo.“','”.$PostNo.“','”.$Basic_Salary.“')”);点击编辑按钮可以修改各部门不同职位的底薪,代码如下: $sql=“update department set DepartmentName='”.$DepartmentName.“' where DepartNo='”.$DepartNo.“'”; 图5-3 部门职位编辑界面 对按删除按钮,根据主键可以直接删除整条记录,实现对部门和职位的删除,关键代码如下: mysql_query(“delete from salary where DepartNo = ”.$DepartNo.“ and PostNo =”.$PostNo);mysql_query(“delete from department where DepartNo = ”.$DepartNo);2.工资修改模块 管理员登录成功后,可以从数据库中查询员工的基本工资信息,主代码如下: $result=mysql_query(“select * from staff,department,post,check1,salary where staff.DepartNo like '”.$c2.“' and staff.StaNo=check1.StaNo and staff.PostNo=salary.PostNo and salary.PostNo=post.PostNo and staff.DepartNo=salary.DepartNo and salary.DepartNo=department.DepartNo ”)3.员工管理模块 管理员登录成功后,可以从数据库中查询员工的基本信息,主界面如图5-4 所示: 图5-4 员工基本界面 可增加新的员工,给他分配部门和职位,主要代码: mysql_query(“insert into staff(StaNo,StaName,PostNo,DepartNo)values ('”.$StaNo.“' , '”.$StaName.“' , '”.$PostNo.“ ', '”.$DepartNo.“')”); 对已存在的员工,可以根据职员编号进行修改信息,主要代码,界面如图5-5所示 : mysql_query(“update staff set PostNo='”.$PostNo.“' where StaNo='”.$StaNo.“'”);mysql_query(“update staff set DepartNo='”.$DepartNo.“' where StaNo='”.$StaNo.“'”);header(“Location: querry.php”); 图5-5 修改员工信息界面 按删除按钮,可以删除员工,代码如下: mysql_query(“delete from staff where StaNo='”.$StaNo.“'”);4.查询工资模块 管理员登录成功后,可以从数据库中查询员工的基本信息,可以按照年份,月份,不同的部门进行查询,主界面如图5-6 所示: 图5-6 查询工资界面 主要代码: mysql_query(“select * from staff,department,post,check1,salary where staff.StaNo=check1.StaNo and staff.PostNo=salary.PostNo and salary.PostNo=post.PostNo and staff.DepartNo=salary.DepartNo and salary.DepartNo=department.DepartNo”)5.修改考勤表模块 管理员登录成功后,可以从数据库中查询员工的考勤基本信息,可以按照年份,月份,不同的部门进行查询,主界面如图5-7 所示: 图5-7 查询考勤表界面 可以对员工的考勤进行添加,代码: mysql_query(“insert into check1 values('”.$StaNo.“','”.$Year.“','”.$Month.“','”.$Less.“','”.$Normal.“','”.$Specifieness.“')”);还可以进行编辑,界面如下: 图5-8 考勤表编辑界面 主要代码: “update check1 set Normal='”.$Normal.“' where StaNo='”.$StaNo.“' and Month ='”.$Month.“'and Year='”.$Year.“'”; (二)后台主要功能模块设计 管理员登录成功后,可以从数据库中查询自己的工资信息,如图5-9: 图5-9 员工查询工资界面 结 论 本文描述了基于PHP+mySql环境设计的网上书店系统的设计与实现,具有一定的理论和实践意义。该系统是Windows 7,web服务器Apache,数据库服务器MySQL,服务器端脚本编程环境PHP,共同完成的。 设计要求提的很完善,该系统实现了工资的查询,不同用户的登录,管理员可以对公司的业绩进行年初的预算,年终的结算,根据不同部门的不同职位,分配不一同的工资,年末根据公司的业绩以及个人表现情况,对不同的人员发放不同的奖金福利。员工可以查询自己不同月份,不同年份的工资详情等。但是最后设计的时候我们遇到很多问题,工资结算的时候,我们还是没有详细划分,只做出了最终的工资总额,可能对员工查询详细工资不方便,还有就是公司的结算预算,没有做进去,系统显得不是很完善,以后还是应该多多研究。所以通过老师的指点,我们还应该努力,最终解决这些问题,以更好的完成了整个系统的开发工作。 参考文献 [1]刘金岭,冯万利.数据库原理及应用实验与课程设计指导[M].北京:清华大学出版,2010.[2]王珊,萨师道.数据库系统概论[M].北京:高等教育出版社,2006 [3] Verhoef C.P,Donkers B.Predicting customer potential value an application in the insurance industry.Decision Support Systems[J].2001,32(1): 189-199. [4] 吴毅杰,张志明.B/S与C/S的比较及其数据库访问技术[J].舰船电子工程.2003:56-58. [5] Philip lew,孙伟.Software Engineering English[M].清华大学出版社.2004:225-260. [6](德)斯皮勒▪林茨,(挪)谢弗.软件测试基础教程[M].北京:人民邮电出版社.2009:96-120. 题目:用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 (一)功能要求 (1)查看功能:选择此功能时,列出下列三类选择。 A 办公类 B 个人类 C 商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。例如 杨春 *** 商务类 Chuny@126.C++om 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能:能显示通信录中所有人姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示此人电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 (二)其它要求: (1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)建议使用结构和链表等数据结构 (4)学生可自动增加新功能模块(视情况可另外加分) 以下是源代码,相应的文档为《通讯录管理系统-数据结构课程设计报告》,搜索即可 #include #define MAXSIZE 15 //联系人信息 typedef struct { string name;//姓名 string teleNum;//电话号码 int classes;//分类 string email;//电子邮件 }contacts; //链表存储结构 typedef struct LNode { contacts data;//数据域 struct LNode* next;//指针域 }LNode,*LinkList; //初始化链表 int InitList(LinkList &L){ L = new LNode;L->next = NULL;return 0;} //前插法创建链表 void CreateList_H(LinkList &L,int n){ LinkList p; for(int i = 0;i < n;i++)//根据联系人个数创建链表 { p = new LNode; cout <<“请输入联系人的姓名:”; cin >> p->data.name; cout <<“请输入联系人的电话号码:”; cin >> p->data.teleNum; cout <<“请输入联系人的分类(分类如下,输入相应序号即可)”<< endl; cout <<“1 办公类 个人类 商务类”<< endl; cin >> p->data.classes; cout <<“请输入联系人的电子邮件:”; cin >> p->data.email; p->next = L->next; L->next=p; } } //根据类别查看联系人信息 void CheckAll(LinkList L,int c)//c是联系人类别 { LinkList p;p = L->next; } cout <<“姓名tt”<<“电话号码”<< endl;//表头 while(p)//当链表没到尾部时 { } if(p->data.classes==c)//若符合类别则输出联系人姓名和电话号码 { cout << p->data.name <<“tt”<< p->data.teleNum << endl;} p=p->next;//重载函数,查看所有联系人 void CheckAll(LinkList L){ LinkList p; p=L->next; while(p) { cout << p->data.name << endl; p=p->next; } } //根据姓名查找联系人 LinkList Search(LinkList L,string name){ LinkList p; p=L->next; while(p&&p->data.name!=name)//当链表没到尾部且没找到联系人时 { p=p->next; } return p;} //判断链表中是否存在联系人c char IfExist(LinkList L,contacts c) { LinkList p; p=L->next; while(p&&p->data.name!=c.name)//根据姓名查找是否存在该联系人 { p=p->next; } if(!p)//若到达链表尾部,则不存在return 'n'; if(p->data.teleNum==c.teleNum)//若找到联系人姓名 if(p->data.classes==c.classes)//依次判断电话号码、类别、电子邮件是否相同 if(p->data.email==c.email) return 'y'; return 'n';} //获取链表的长度 int Length(LinkList L){ int i=0; LinkList p=L->next; while(p) { ++i; p=p->next; } return i;} //增加联系人 int Add(LinkList &L,contacts c){ LinkList p,s; if(Length(L)>=MAXSIZE)//判断链表长度是否达到最大值 { cout <<“存储空间已满,无法新增联系人!”<< endl; return 0;} if(IfExist(L,c)=='y')//判断输入的联系人是否已经存在{ cout <<“对不起,您输入的联系人已存在!”<< endl; return 0; } //若通讯录中不存在该联系人,则增加到通信录 p=L;s=new LNode;s->data=c;s->next=p->next;p->next=s;return 0;} //拨号功能 void Dail(LinkList L,string name){ LinkList p,s; p=L->next; s=Search(L,name);//根据姓名查找联系人所在//模拟打字机效果,输出联系人电话号码 string tele=s->data.teleNum; for(int i=0;i { char c=tele[i];Sleep(500);cout << c;} cout << endl;//播放声音 //PlaySound(“E:670.wav”,NULL,SND_FILENAME|SND_ASYNC);} //修改联系人信息 void ChangeInfo(LinkList &L,string name){ LinkList p; p=Search(L,name);//找到联系人的位置所在 cout <<“ 请输入要修改的信息(输入对应序号即可):”<< endl; cout <<“1 姓名”<< endl; cout <<“2 电话号码”<< endl; cout <<“3 分类”<< endl; cout <<“4 电子邮件”<< endl; //根据选择修改联系人信息 int elec; cin >> elec; switch(elec) { case 1: { cout <<“姓名改为:”<< endl; string newName; cin >> newName; p->data.name=newName; break;} case 2: { cout <<“电话号码改为:”< string newTele; cin >> newTele; p->data.teleNum=newTele; break;} case 3: { cout <<“分类改为(分类如下,输入相应序号即可)”; cout <<“1 办公类 个人类 商务类”<< endl; int newCalsses; cin >> newCalsses; p->data.classes=newCalsses; break;} case 4: { cout <<“电子邮件改为:”<< endl; string newEmail; cin >> newEmail; p->data.email=newEmail; break;} } } //删除联系人 void Delete(LinkList &L,string name){ LinkList p=L,s; //找到需删除联系人的前一个位置 while(p->next&&p->next->data.name!=name) { p=p->next; } s=p->next; p->next=s->next; delete s;//删除联系人 } //导入通信录 void Read(LinkList L){ LinkList p; //打开文件导入通信录 ifstream fin;fin.open(“通信录.txt”,ios::in);string s1,s2,s3,s4;fin >> s1 >> s2 >> s3 >> s4;while(!fin.eof())//当没有到文件尾时 { string s5;contacts c;fin >> c.name >> c.teleNum >> s5 >> c.email;if(s5.compare(“办公类”)==0)c.classes=1; if(s5.compare(“个人类”)==0) c.classes=2; if(s5.compare(“商务类”)==0) c.classes=3; Add(L,c);//将联系人c增加到链表中 } fin.close(); } //导出通信录 void Write(LinkList L){ } LinkList p=L->next;int l=Length(L);//打开文件写入通信录 ofstream fout(“通信录.txt”,ios::out|ios::trunc);fout <<“姓名t”<<“电话号码t”<<“分类t”<<“电子邮件 ”<< endl;for(int i=0;i case 1: { fout <<“办公类”; break; } case 2: { fout <<“个人类”; break; } case 3: { fout <<“商务类”; break; } } fout <<“t”<< p->data.email;if(i<(l-1)) fout << endl;p=p->next;} fout.close();int Menu()//主菜单 { system(“cls”);//清屏 int choice;cout< cout<<“ ***************主菜单***************n”;cout<<“ * 新增联系人 *n”;cout<<“ * 查看通信录 *n”; } cout<<“ * 拨号 *n”;cout<<“ * 修改信息 *n”;cout<<“ * 删除联系人 *n”;cout<<“ * 导入通信录 *n”;cout<<“ * 导出通信录 *n”;cout<<“ * 0 退出系统 *n”;cout<<“ ************************************n”;cout<<“ 请根据您的需求,输入相应的数字:”;cin>>choice;//输入选择 return choice;int main()//主函数 { LinkList L;InitList(L);for(;;){ switch(Menu())//根据不同选择,执行不同的功能 { case 1: { cout <<“请选择批量增加或单个增加(输入相应序号即可):”<< endl;cout <<“1 批量增加 单个增加”<< endl;int c1;cin >> c1;if(c1==1){ cout <<“请输入新增联系人的个数:”<< endl;int number;cin >> number;CreateList_H(L,number);//用前插法批量增加联系人 } else //单个增加联系人 { contacts c;cout <<“请输入联系人的姓名:”;cin >> c.name;cout <<“请输入联系人的电话号码:”;cin >> c.teleNum;cout <<“请输入联系人的分类(分类如下,输入相应序号即可)”<< endl;cout <<“1 办公类 个人类 商务类”<< endl;cin >> c.classes;cout <<“请输入联系人的电子邮件:”; cin >> c.email; Add(L,c); } system(“pause”);break; } case 2://查看通信录 { cout <<“请输入查看联系人的类别(输入相应序号即可):”<< endl;cout <<“1 办公类 个人类 商务类 ”<< endl;int c2;cin >> c2; cout <<“已有联系人如下:”<< endl; CheckAll(L,c2);//根据分类查看联系人信息 system(“pause”);break; } case 3: { cout <<“已有联系人如下:”<< endl; CheckAll(L); string name;cout <<“请输入拨号人的姓名:”<< endl;cin >> name; Dail(L,name);//根据 system(“pause”);break; } case 4: { cout <<“已有联系人如下:”<< endl;CheckAll(L);string changeName;cout <<“请输入要修改信息的联系人姓名:”<< endl;cin >> changeName;ChangeInfo(L,changeName); system(“pause”);break; } case 5: { cout <<“已有联系人如下:”<< endl; CheckAll(L); string deleteName;cout <<“请输入要删除的联系人姓名:”<< endl;cin >> deleteName; Delete(L,deleteName); cout <<“联系人”<< deleteName <<“已删除!”<< endl; system(“pause”);break; } case 6: { Read(L);//导入通信录 cout <<“成功导入通信录!”<< endl; cout <<“已导入联系人姓名如下:”<< endl; CheckAll(L); system(“pause”); break; } case 7: { Write(L);//导出通信录 cout <<“成功导出通信录!”<< endl; system(“pause”); break; } case 0: { //退出系统 cout<<“ 感谢您对本通信录管理系统的使用!”< return 0;} default: 给予提示 } } } cout<<“ 您输入的指令有误,请重新输入!”< 学生信息管理系统源代码 import java.io.*; class StuInfo { public String name; public int number; public String sex; public String age; public String bir; public String email; public String addr; public String tel; public String getName(){ return name; } public void setName(String name){ this.name = name; } public int getNumber(){ return number; } public void setNumber(int number){ this.number = number; } public String getSex(){ return sex; } public void setSex(String sex){ this.sex = sex; } public String getAge(){ return age; } public void setAge(String age){ this.age = age; } public String getBir(){ return bir; } public void setBir(String bir){ this.bir = bir; } public String getEmail(){ return email; } public void setEmail(String email){ this.email = email;} public String getAddr(){ return addr;} public void setAddr(String addr){ this.addr = addr;} public String getTel(){ return tel;} public void setTel(String tel){ this.tel = tel;} } public class Student { private static PrintStream out = System.out;private static String filename = “Stu.txt”;private static int total = 0;private static int rt = 0;//recyle length private StuInfo[] stuInfos;private StuInfo[] recycle;BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));//创建缓冲流 public Student(){ stuInfos = new StuInfo[11]; } public void 信息录入(){ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.print(“n请输入学生信息(以0结束)n”); System.out.print(“学号:n”); StuInfo stu = new StuInfo(); stu.setNumber(Integer.parseInt(buf.readLine())); while(stu.getNumber()!=0){ System.out.print(“姓名:nn”); stu.setName(buf.readLine()); System.out.print(“性别:nn”); stu.setSex(buf.readLine()); System.out.print(“年龄:nn”); stu.setAge(buf.readLine()); System.out.print(“生日:nn”); stu.setBir(buf.readLine()); System.out.print(“邮箱:nn”); stu.setEmail(buf.readLine()); System.out.print(“地址:nn”); stu.setAddr(buf.readLine()); System.out.print(“电话:nn”); stu.setTel(buf.readLine()); //添加其他输入信息 stuInfos[total]=stu; total++; stu = new StuInfo(); System.out.print(“n请输入下一个学生信息(以0结束)n”); System.out.print(“姓名:n”); stu.setName(buf.readLine()); } }catch(Exception e){ out.print(e); } } public void 保存数据(){ try{ FileWriter fwr=new FileWriter(filename); BufferedWriter fw = new BufferedWriter(fwr); fw.write(total+“rn”); for(int k=0;k fw.write(stuInfos[k].getNumber()+“rn”); fw.write(stuInfos[k].getName()+“rn”); fw.write(stuInfos[k].getSex()+“rn”); fw.write(stuInfos[k].getAge()+“rn”); fw.write(stuInfos[k].getBir()+“rn”); fw.write(stuInfos[k].getEmail()+“rn”); fw.write(stuInfos[k].getAddr()+“rn”); fw.write(stuInfos[k].getTel()+“rn”); } fw.write(rt+“rn”); for(int k=0;k第二篇:人事管理系统数据库源代码
第三篇:人事管理系统
第四篇:通讯管理系统源代码
第五篇:学生信息管理系统源代码