‘壹’ c语言程序设计,职工管理系统,有些小的要求,好答案加分,谢谢
菜单建议用VC++.Net,里面logo画面都不要自己写,VS.Net在应用程序参数里有这些功能,界面完全不用担心,VS功能实在太强大了,从设计到发布都有相关工具。建议去装个Visual Studio 2010
首先整个文件读入
名称排序可以转ASCII码,人不多就用选择排序,人多就用快速排序
每个学历对应一个编号,只要对编号排序,然后替换成中文字就行了。
其实VC++里的ListView控件很强大
文件可以直接写,别忘了加分隔符
数据用单向链表放内存里
职工信息用结构体变量
删除信息只要链表节点操作
这些在C语言书上介绍指针的章节里都都有
操作权限用VC++.Net里文件操作功能详见MSDN Library
完成后保存
操作时经常保存临时文件以便意外情况时恢复
如果循环次数过多(比如保存)可以采用backgroundworker(多线程)控件
‘贰’ 用c语言编写设计,职工信息管理系统。
我给你个大概提示吧,
首先你要做的是个大体的框架
分三个权限一是管理员权限,人事部门权限以及员工权限。
1.管理员权限实现包括员工基本信息增删改查功能。
2.人事权限包括员工拓展信息,比如工资,奖金等等数据的维护和更新。
3.员工权限包括个人信息查询以及问题反馈。
三个双向链表,节点数据存入以上所有信息。
链表操作不多说了吧。。。
文件读写问题,这里考虑到如果是一般情况的话直接调用readwrite函数就行了
如果内容过多还是连接数据库吧。
系统开始的初始化和更新也很重要。
‘叁’ c语言程序设计、工资管理系统
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <string.h>
#define N 100
struct employee
{
int num;
char name[10];
char cheng;
int jiben;
int jiangjin;
int baoxian;
int zafei;
int shiji;
}em[100]; /*定义一个结构体*/
void menu();
void input();
void save(int);
void display();
void del();
void search();
void search_cheng();
void search_name();
void modify(); /*定义各函数*/
void menu() /*菜单函数*/
{
printf("\n");
printf(" 网计091 第7小组\n");
printf("\n");
printf(" ******************职工信息管理****************\n");
printf(" 1.录入职工信息");
printf(" 2.浏览职工信息\n");
printf(" 3.查询职工信息");
printf(" 4.删除职工信息\n");
printf(" 5.修改职工信息\n");
printf(" 6.退出\n");
printf(" ********************谢谢使用******************\n");
printf("\n");
printf("\n");
}
void main()
{
int n,flag;
char a;
while(1)
{
do
{
menu(); /*调用菜单函数*/
printf("请选择你需要操作的步骤(1--6):\n");
scanf("%d",&n);
if(n>=1&&n<=6)
{
flag=1;
break;
}
else
{
flag=0;
printf("您输入有误,请重新选择!");
}
}while(flag==0);
switch(n)
{
case 1:printf(" 输入职工信息\n");printf("\n");input();break;
case 2:printf(" 浏览职工信息\n");printf("\n");system("cls");display();break;
case 3:printf(" 按职工号查询职工信息\n");printf("\n");system("cls");search();break;
case 4:printf(" 删除职工信息\n");printf("\n");system("cls");del();break;
case 5:printf(" 修改职工信息\n");printf("\n");system("cls");modify();break;
case 6:goto la;
default :break;
}
}
la:
system("cls");
printf("\n\n\n\n\n 谢谢使用!\n");
}
void input() /*录入函数*/
{
int i,m;
printf("请输入需要创建信息的职工人数(1--100):\n");
scanf("%d",&m);
for (i=0;i<m;i++)
{
printf("请输入职工号: ");
scanf("%d",&em[i].num); //这里的代码错,要用数组下标
printf("\n");
printf("请输入姓名: ");
scanf("%s",em[i].name);//这里的代码错,要用数组下标
getchar();
printf("请输入职称: ");
scanf("%c",&em[i].cheng);//这里的代码错,要用数组下标
printf("请输入基本工资: ");
scanf("%d",&em[i].jiben);//这里的代码错,要用数组下标
printf("请输入奖金: ");
scanf("%d",&em[i].jiangjin);//这里的代码错,要用数组下标
printf("请输入保险: ");
scanf("%d",&em[i].baoxian);//这里的代码错,要用数组下标
printf("请输入杂费: ");
scanf("%d",&em[i].zafei);//这里的代码错,要用数组下标
em[i].shiji=em[i].jiben + em[i].jiangjin - em[i].baoxian - em[i].zafei;//这里的代码错,要用数组下标
printf("\n");
}
printf("\n创建完毕!\n");system("cls");
save(m);
}
void save(int m) /*保存文件函数*/
{
int i;
FILE*fp;
if ((fp=fopen("employee_list","wb"))==NULL) /*创建文件并判断是否能打开*/
{
printf ("cannot open file\n");
exit(0);
}
for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/
if (fwrite(&em,sizeof(struct employee),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
int load() /*导入函数*/
{
FILE*fp;
int i=0;
if((fp=fopen("employee_list","rb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
else
{
do
{
fread(&em,sizeof(struct employee),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}
void display() /*浏览函数*/
{
int i;
int m=load();
printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t保险\t杂费\t实际工资 \n");
for(i=0;i<m;i++) /*m为输入部分的职工人数*/
printf("\n %d\t %s\t %c\t %d\t %d\t %d\t %d\t %d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji); //这里的代码错,要用数组下标
printf("按任意键继续\n");
getchar();getchar();system("cls");
}
void del() /*删除函数*/
{
int m=load();
int i,j,n,t,flag;
char name1[10];
printf("\n 原来的职工信息:\n");
display(); /* 调用浏览函数*/
printf("\n");
printf("请输入要删除的职工的姓名:\n");
scanf("%s",name1);
for(flag=1,i=0;flag&&i<m;i++)
{
if(strcmp(em[i].name,name1)==0)
{
printf("\n已找到此人,原始记录为:\n");
printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t保险\t杂费\t实际工资 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
printf("\n确实要删除此人信息请按1,不删除请按0\n");
scanf("%d",&n);
if(n==1) /*如果删除,则其他的信息都往上移一行*/
{
for(j=i;j<m-1;j++)
{
em[j]=em[j+1];
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\n对不起,查无此人!\n");
printf("\n 浏览删除后的所有职工信息:\n");
save(m); /*调用保存函数*/
display(); /*调用浏览函数*/
printf("\n继续删除请按1,不再删除请按0\n");
scanf("%d",&t);
switch(t)
{
case 1:del();break;
case 0:break;
default :break;
}system("cls");
}
void search()/*查询函数*/
{
int t,flag;
do
{
printf("\n按姓名查询请按1 ; 按职称查询请按2 ; 进入主函数按3\n");
scanf("%d",&t);
if(t>=1&&t<=3)
{
flag=1;
break;
}
else
{
flag=0;
printf("您输入有误,请重新选择!");
}
}while(flag==0);system("cls");
while(flag==1)
{
switch(t)
{
case 1:printf("按姓名查询\n");search_name();break;
case 2:printf("按职称查询\n");search_cheng();break;
case 3:main();break;
default:break;
}
system("cls");
}
}
void search_name()
{
char name1[10];
int i,t;
int m=load();
printf("请输入要查找的姓名:\n");
scanf("%s",name1);
for(i=0;i<m;i++)
if(strcmp(name1,em[i].name)==0)
{
printf("\n已找到此人,其记录为:\n");
printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t保险\t杂费\t实际工资 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询职工号请按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();break;
case 2: break;
default:break;
}
}
void search_cheng()
{
char cheng;
int i,t=0;
int m=load();
system("cls");
printf("请输入要查找的职称:\n");
scanf("%c",&cheng); //这里要用地址
for(i=0;i<m;i++)
if(em[i].cheng==cheng)
{
printf("\n已找到,其记录为:\n");
printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t保险\t杂费\t实际工资 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询学历请按2\n");
scanf("%d",&t);
switch(t)
{
case 1:system("cls");search();break;
case 2:break;
default :break;
}
}
void modify() /*修改函数*/
{
int num;
char name[10];
char cheng;
int jiben;
int jiangjin;
int baoxian;
int zafei;
int shiji;
int b,c,i,n,t,flag;
int m=load(); /*导入文件内的信息*/
printf("\n 原来的职工信息:\n");
display(); /* 调用浏览函数*/
printf("\n");
printf("请输入要修改的职工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i<m;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到此人,原始记录为:\n");
printf("\n职工号\t姓名\t职称\t基本\t奖金\t保险\t杂费\t实际工资 \n");
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].cheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji);
printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");
scanf("%d",&n);
if(n==1)
{
printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.职称 4.基本工资 5.奖金 6.保险 7.杂费 8.实际工资\n");
printf("请输入你想修改的那一项序号:\n");
scanf("%d",&c);
if(c>8||c<1)
printf("\n选择错误,请重新选择!\n");
}
flag=0;
}
}
if(flag==1)
printf("\n对不起,查无此人!\n");
do
{
switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的
信息赋值给第i-1个人*/
{
case 1:printf("职工号改为: ");
scanf("%d",&num);
em[i-1].num=num;
break;
case 2:printf("姓名改为: ");
scanf("%s",name);
strcpy(em[i-1].name,name);
break;
case 3:printf("职称改为: ");
getchar();
scanf("%c",&cheng);
em[i-1].cheng=cheng;
break;
case 4:printf("基本工资改为: ");
scanf("%d",&jiben);
em[i-1].jiben=jiben;
break;
case 5:printf("奖金改为: ");
scanf("%d",&jiangjin); //这里要用地址
em[i-1].jiangjin=jiangjin;
break;
case 6:printf("保险改为: ");
scanf("%d",&baoxian);//这里要用地址
break;
case 7:printf("杂费改为: ");
scanf("%d",&zafei);//这里要用地址
em[i-1].zafei=zafei;
break;
case 8:printf("实际工资改为: ");
scanf("%d",&shiji);
em[i-1].shiji=shiji;
break;
}
printf("\n");
printf("\n是否确定所修改的信息?\n 是 请按1 ; 不,重新修改 请按2: \n");
scanf("%d",&b);
}
while(b==2);
printf("\n浏览修改后的所有职工信息:\n");
printf("\n");
save(m);
display();
printf("\n继续修改请按1,不再修改请按0\n");
scanf("%d",&t);
switch(t)
{
case 1:modify();break;
case 0:break;
default :break;
}system("cls");
}
‘肆’ C语言程序设计题:职工工资管理系统
你要的是命令行还是图形界面?如果是命令行可以考虑下如果是图形界面的话200分少了点,看看吧.--------------------------------------------既然不是图形界面,代码就简单.不过也有近300行.可能有些地方不怎么简洁..你用的时候,把注释“deletenbsp;thisnbsp;line“那行所在的代码删除或修改就OK了.如果看不懂请给我留言,我发一份带详细注释的代码给你.--------------------------------------------/*Microsoftnbsp;Visualnbsp;C++nbsp;.NET编译通过bynbsp;做他@07.12.29*/#includenbsp;“stdafx.h“#includenbsp;“iostream“#includenbsp;“string“#includenbsp;“list“#includenbsp;“cassert“usingnbsp;namespacenbsp;std;/*编号、姓名、部门、应付工资、保险、税金、实付工资。其中实付工资由公式计算得到:实付工资=应付工资nbsp;-nbsp;保险-nbsp;税金nbsp;*/structnbsp;employee{nbsp;stringnbsp;m_num;//编号nbsp;stringnbsp;m_name;//姓名nbsp;stringnbsp;m_dep;//部门nbsp;doublenbsp;m_salary;//应付工资nbsp;doublenbsp;m_insurance;//保险nbsp;doublenbsp;m_tax;//税金};/*(1)录入:输入职工数据,其中“实付工资”通过计算得到;nbsp;(2)删除:删除指定的职工信息(输入姓名,若找到则删除该信息)nbsp;(3)nbsp;修改:允许对已经录入的数据重新进行编辑、修改;nbsp;(4)nbsp;显示:显示全体职工数据;nbsp;(5)查询:nbsp;a.nbsp;输入职工姓名,显示该职工的全部数据;nbsp;b.nbsp;输入某部门值,显示该部门职工的数据、工资总额、平均工资。nbsp;(6)nbsp;退出程序。*/listamp;lt;employeeamp;gt;nbsp;emps;intnbsp;_tmain(intnbsp;argc,nbsp;_TCHAR*nbsp;argv[]){nbsp;voidnbsp;print(constnbsp;employeenbsp;amp;e);nbsp;voidnbsp;input();nbsp;voidnbsp;del();nbsp;voidnbsp;mod();nbsp;voidnbsp;show_all();nbsp;voidnbsp;show_name();nbsp;voidnbsp;show_dep();nbsp;coutamp;lt;amp;lt;“简易职工薪水管理程序nbsp;bynbsp;做他<br/>“;//nbsp;deletenbsp;thisnbsp;linenbsp;coutamp;lt;amp;lt;“版权没有nbsp;请随意复制或修改任何代码<br/>“;//deletenbsp;thisnbsp;linenbsp;coutamp;lt;amp;lt;“请选择操作:1.录入nbsp;2.删除nbsp;3.修改nbsp;4.查询nbsp;5.显示所有员工nbsp;6.退出nbsp;:“;nbsp;intnbsp;choose=0;nbsp;cinamp;gt;amp;gt;choose;nbsp;assert(!cin.fail());nbsp;whilenbsp;(choose!=6)nbsp;{nbsp;nbsp;ifnbsp;(choose==1)nbsp;input();nbsp;nbsp;ifnbsp;(choose==2)nbsp;del();nbsp;nbsp;ifnbsp;(choose==3)nbsp;mod();nbsp;nbsp;ifnbsp;(choose==4)nbsp;nbsp;nbsp;{nbsp;nbsp;nbsp;intnbsp;choice=0;nbsp;nbsp;nbsp;coutamp;lt;amp;lt;“请选择操作nbsp;1.按姓名查询nbsp;2.按部门查询nbsp;3.退出:“;nbsp;nbsp;nbsp;cinamp;gt;amp;gt;choice;nbsp;nbsp;nbsp;ifnbsp;(choice==1)nbsp;show_name();nbsp;nbsp;nbsp;ifnbsp;(choice==2)nbsp;show_dep();nbsp;nbsp;nbsp;ifnbsp;(choice==3)nbsp;nbsp;nbsp;nbsp;{nbsp;nbsp;nbsp;nbsp;coutamp;lt;amp;lt;“请选择操作:1.录入nbsp;2.删除nbsp;3.修改nbsp;4.查询nbsp;5.显示所有员工nbsp;6.退出nbsp;:“;nbsp;nbsp;nbsp;nbsp;cinamp;gt;amp;gt;choose;nbsp;nbsp;nbsp;nbsp;assert(!cin.fail());nbsp;nbsp;nbsp;nbsp;continue;nbsp;nbsp;nbsp;}nbsp;nbsp;}nbsp;nbsp;ifnbsp;(choose==5)nbsp;show_all();nbsp;nbsp;coutamp;lt;amp;lt;“请选择操作:1.录入nbsp;2.删除nbsp;3.修改nbsp;4.查询nbsp;5.显示所有员工nbsp;6.退出nbsp;:“;nbsp;nbsp;cinamp;gt;amp;gt;choose;nbsp;nbsp;assert(!cin.fail());nbsp;}nbsp;re
‘伍’ 急求:职工信息管理系统设置(c语言的程序代码)
#include<iostream>
#include<fstream>
using namespace std;
struct wkrs
{
char num[10];
char name[10];
char sex[3];
int age;
}wk[10];
struct wkr
{
char name[10];
int age;
}wkshort[10];
void Display();
void Readin();
void Disp();
void SelectWk();
void Delwk();
int MenuSelect();
int num=0,number=10;
void main()
{
for(;;)
{
switch(MenuSelect())
{
case 1:Readin();break;
case 2:Display();break;
case 3:SelectWk();break;
case 4:Delwk();break;
case 5:Disp();break;
case 6:cout<<"退出运行,再见!"<<endl;exit(0);
}
}
}
int MenuSelect()
{
char s[2];int cn;
cout<<"1.输入数据"<<endl;
cout<<"2.显示原始数据"<<endl;
cout<<"3.制作简明数据"<<endl;
cout<<"4.删除简明数据"<<endl;
cout<<"5.显示简明文件"<<endl;
cout<<"退出运行"<<endl;
cout<<endl<<"左边数字对应功能选择,请选1-6:";
for(;;)
{
gets(s);
cn=atoi(s);
if(cn<1||cn>6)
cout<<endl<<"输入错误,重选1-6:";
else
break;
}
return(cn);
}
void Display()
{
int i;
ifstream disp("workers.txt");
//disp>>number;
if(!disp)
{
cout<<"文件打不开"<<endl;
return;
}
cout<<endl<<"序号"<<"\t姓名"<<"\t性别"<<"\t年龄"<<endl;
for(i=0;i<number;i++)
{
disp>>wk[i].num>>wk[i].name>>wk[i].sex>>wk[i].age;
cout<<endl<<wk[i].num<<"\t"<<wk[i].name<<"\t"<<wk[i].sex<<"\t"<<wk[i].age;
}
disp.close();
cout<<endl<<"一共有"<<number<<"个职工的信息"<<endl;
}
void Disp()
{
ifstream disp("wk_saw.txt",ios::binary);
if(!disp)
{
cout<<"文件打不开"<<endl;
return;
}
cout<<endl<<"职工简明文件内容:"<<endl;
cout<<endl<<"姓名"<<"\t年龄:"<<endl;
disp>>num;
for(int i=0;i<num;i++)
{
disp>>wkshort[i].name>>wkshort[i].age;
cout<<endl<<wkshort[i].name<<"\t"<<wkshort[i].age;
}
disp.close();
cout<<endl<<"一共有"<<num<<"个职工的信息"<<endl;
}
void Readin()
{
char ch[10];int i=0;
cout<<"准备输入职工信息"<<endl;
for(i=0;i<number;i++)
{
cout<<"序号:";
cin>>wk[i].num;
if(strcmp("0",wk[i].num)==0)
{
number=i;break;
}
cout<<"姓名:";
getchar();
gets(ch);
strcpy(wk[i].name,ch);
cout<<"性别:";
cin>>wk[i].sex;
cout<<"年龄:";
cin>>wk[i].age;
}
if(number==0)
{
cout<<"没有输入数据,不改写文件!"<<endl;
return;
}
cout<<"输入结束!"<<endl;
ofstream wr("workers.txt");
for(i=0;i<number;i++)
{
wr<<wk[i].num<<" "<<wk[i].name<<" "<<wk[i].sex<<" "<<wk[i].age<<endl;
}
wr.close();
cout<<endl<<"一共写入"<<number<<"个职工的信息"<<endl;
}
void SelectWk()
{
int i;
ifstream disp("workers.txt");
if(!disp)
{
cout<<"文件打不开"<<endl;
return;
}
//disp>>number;
for(i=0;i<number;i++)
{
cout<<endl<<wk[i].num<<"\t"<<wk[i].name<<"\t"<<wk[i].sex<<"\t"<<wk[i].age;
strcpy(wkshort[i].name,wk[i].name);
wkshort[i].age=wk[i].age;
}
cout<<endl;
disp.close();
ofstream wr("wk_saw.txt");
wr<<number<<endl;
for(i=0;i<number;i++)
{
wr<<wkshort[i].name<<" "<<wkshort[i].age<<endl;
}
wr.close();
Disp();
cout<<endl;
}
void Delwk()
{
int i=0,j,flag=0;char na[10];
Disp();
if(num==0)
{
cout<<endl<<"文件内容为空,退出删除操作."<<endl;
return;
}
cout<<endl<<"输入待删除的职工的姓名(输入0退出删除):";
while(strcmp(na,"0")!=0)
{
cout<<endl<<"姓名:";
gets(na);
if(strcmp(na,"0")==0)
{
cout<<endl<<"退出删除操作."<<endl;
return;
}
for(flag=1,i=0;i<num;i++)
{
if(strcmp(na,wkshort[i].name)==0)
{
for(j=i;j<num;j++)
{
strcpy(wkshort[j].name,wkshort[j+1].name);
wkshort[j].age=wkshort[j+1].age;
}
flag=0;
ofstream wr("wk_saw.txt");
num--;
wr<<num<<endl;
for(i=0;i<num;i++)
{
wr<<wkshort[i].name<<" "<<wkshort[i].age<<endl;
}
wr.close();
}
}
if(!flag)
if(num==0)
{
cout<<"现在已经删空文件内容,退出删除操作."<<endl;
return;
}
else
{
cout<<endl<<"删除后的文件内容:"<<endl;
Disp();
}
else
cout<<endl<<"没有发现这个职工,重新输入:"<<endl;
}
}
‘陆’ 用C语言课程设计—职工工资管理系统(分别用结构体数组和链表编写程序)
#include<stdio.h>
#define NUM 100
void input()
;void search()
;void search_num();
void dele()
;void dele_name();
void dele_num()
;void modi()
;void modi_num();
void output()
;void stat()
;void fun()
;void run();
struct emploee /*职工数据结构*/
{
char no[5];
char name[8];
char sex[3];
int age;
int salar;
}emp[NUM],newemp;
main()
{int x;
printf(" 1. 输入职工记录\n");
printf(" 2. 查询职工记录\n");
printf(" 3. 修改职工记录\n");
printf(" 4. 删除职工记录\n");
printf(" 5. 打印职工记录\n");
printf(" 6. 调查工资情况\n");
printf(" 7. 追加职工记录\n");
printf(" 8. 结束使用\n");
printf(" 0. 退出系统\n");
printf("\n");
printf("*** 欢迎使用职工工资管理系统 ***\n");
printf("请选择(0-8):\n");
scanf("%d",&x);
switch(x)
{
case 1: input();break;
case 2: search();break;
case 3: modi();break;
case 4: dele();break;
case 5: output();break;
case 6: stat();break;
case 7: run();break;
case 8: fun();break;
default:printf("\n Wrong!");
}
if(x==0)break;
}
}
void input()
{
FILE *fp;
int n,i;
if ((fp=fopen("emp","wb"))==NULL)
{
printf("不能建立emp文件\n");
exit(1);
}
printf("输入职工人数:");
scanf("%d",&n);
printf("输入格式:职工号 姓名 性别 年龄 工资<Enter>\n");
for(i=0;i<n;i++) /* 循环获取n个职工记录 */
{
printf("第%d个职工:",i+1);
scanf("%s%s%s%d%d",emp[i].no,emp[i].name,emp[i].sex,
&emp[i].age,&emp[i].salar);
}
for(i=0;i<n;i++) /*将n个职工记录写入文件*/
fwrite(&emp[i],sizeof(struct emploee),1,fp);
fclose(fp);
}
/*************************统计模块**********************/
void stat( )
{
FILE *fp;
int n,num;
if((fp=fopen("emp","rb"))==NULL)
{
printf("不能打开emp文件\n");
exit(1);
}
printf("工资数:");
scanf("%d",&num);
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(n=0;fread(&emp,sizeof(struct emploee),1,fp);n++)
if(emp[n].salar>=num)
printf("%6d%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,
emp[n].age,emp[n].salar);
fclose(fp);
}
/********************删除模块*******************/
void dele()
{
int x;
while(1)
{
printf("\n\n\t\t删除子菜单\n");
printf("\t\t*********\n");
printf("\t\t 1.按职工号删除记录\n");
printf("\t\t 0.返回主菜单\n");
printf("\t\t*********\n");
printf("\t 请选择(0-1):");
scanf("%d",&x);
switch(x)
{case 1:dele_num();break;
default:printf("\nWrong!");
}
if(x==0)break;
}
}
void dele_num()
{
FILE *fp;
int i,j,n;
char num[5];
if((fp=fopen("emp","rb"))==NULL)
{
printf("不能打开emp文件\n");
exit(1);
}
printf("删除前:\n");
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(n=0;fread(&emp[n],sizeof(struct emploee),1,fp);n++)
printf("%6s%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,
emp[n].age,emp[n].salar); /*n为emp文件中记录数*/
printf("要删除的职工号:");
scanf("%s",num);
for(i=0;(strcmp(emp[i].no,num)!=0&&i<n);i++)
if(i>=n)
{
printf("\t没有%s职工号的职工\n",num);
exit(2);
}
fclose(fp);
fp=fopen("emp","w+");
if(n==1) /*一个记录已经删除了*/
{
fclose(fp);
exit(3);
}
for(j=0;j<i;j++)
fwrite(&emp[j],sizeof(struct emploee),1,fp);
for(j=i+1;j<n;j++)
fwrite(&emp[j],sizeof(struct emploee),1,fp);
printf("删除后:\n");
fseek(fp,0,SEEK_SET);
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp);i++)
printf("%6s%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
fclose(fp);
}
/********************修改模块*******************/
void modi()
{
int x;
while(1)
{
printf("\n\n\t\t修改子菜单\n");
printf("\t\t*********************\n");
printf("\t\t1. 按职工号修改\n");
printf("\t\t0. 返回主菜单\n");
printf("\t\t*********************\n");
printf("\t请选择(0-1):");
scanf("%d",&x);
switch(x)
{
case 1:modi_num();break;
default:printf("\n输错误!");
}
if(x==0)break;
}
}
void modi_num()
{
FILE *fp;
int i,j;
char num[5];
if((fp=fopen("emp","rb+"))==NULL)
{
printf("不能 打开emp文件\n");
exit(1);
}
printf("要修改的职工号:");
scanf("%s",num);
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp);i++)
if(!strcmp(emp[i].no,num))break;
if(feof(fp))
{
printf("\t没有%s职工号的职工\n",num);
exit(2);
}
printf("记录号 职工号 姓名 性别 年龄 工资\n");
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
printf("输入格式:职工号 姓名 性别 年龄 工资<Enter>\n");
printf("第%d个记录:",i+1);
scanf("%s%s%s%d%d",newemp.no,newemp.name,newemp.sex,&newemp.age,
&newemp.salar);/*获取新的职工记录*/
fseek(fp,-(long)sizeof(struct emploee),SEEK_CUR);
/*文件指针指向该修改的记录开头*/
fwrite(&newemp,sizeof(struct emploee),1,fp);/*用newemp覆盖当前记录*/
printf(" 修改后:\n");
fseek(fp,0,SEEK_SET);/*显示修改后的文件数据*/
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp)!=0;i++)
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
fclose(fp);
}
/*************************查询模块***********************/
void search( )
{
int x;
while(1)
{
printf("\n\n\t\t查子菜单\n");
printf("\t\t********************\n");
printf("\t\t 1.按职工号查询\n");
printf("\t\t 0.返回主菜单\n");
printf("\t\t********************\n");
printf("\t请选择(0-1):");
scanf("%d",&x);
switch(x)
{
case 1:search_num();break;
default :printf("\n Wrong!");
}
if(x==0) break;
}
}
void search_num()
{
FILE *fp;
int i;
char num;
if((fp=fopen("emp","rb"))==NULL)
{
printf("不能打开emp文件\n");
exit(1);
}
printf("要查询的职工号:");
scanf("%s",num);
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp);i++)
if(!strcmp(emp[i].no,num)) break;
if(feof(fp))
{
printf("\t查无此人\n");
exit(2);
}
printf("记录号 职工号 姓名 性别 年龄 工资\n");
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
fclose(fp);
}
/*******************输出模块********************/
void output()
{int i;
FILE *fp;
if((fp=fopen("emp","r"))==NULL)
{printf("不能打开emp文件\n");
exit(0);
}
printf("记录号 职工号 姓名 性别 年龄 工资\n");
for(i=0;fread(&emp[i],sizeof(struct emploee),1,fp)!=0;i++)
{
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar);
}
fclose(fp);
}
/******************追加模块*******************/
void run()
{
FILE *fp;
int n,i,j;
if((fp=fopen("emp","ab+"))==NULL)
{printf("不能打开emp文件\n");
exit(0);
}
printf("要追加的职工人数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{ printf("输入格式:职工号 姓名 性别 年龄 工资<enter>\n");
printf("职工记录:");
scanf("%s%s%s%d%d",newemp.no,newemp.name,newemp.sex,&newemp.age,
&newemp.salar);
/*获取一个职工记录*/
fwrite(&newemp,sizeof(struct emploee),1,fp);
/*将该职工记录写入文件*/
}
fclose(fp);
}
/*******************显示模块****************/
void fun()
{printf("\t\t******************************************\n");
printf("\t\t* *\n");
printf("\t\t* *\n");
printf("\t\t* 谢 谢 使 用 ! *\n");
printf("\t\t* *\n");
printf("\t\t* *\n");
printf("\t\t******************************************\n");
}
‘柒’ 用C语言设计职工信息管理系统
#include<iostream>
#include<string>
#include<fstream>
usingnamespacestd;
constn=50;//定义系统可录入的员工最大数值
stringename[n];
longenum[n];
charesex[n];
inteage[n];
charemarriage[n];
intedepart[n];
inteposition[n];
intedegree[50];
inteworktime[n];
floatepay[n];
classemployee
{
public:
stringemployeename;
longemployeenum;
charemployeesex;
intemployeeage;
charemployeemarriage;
intemployeedepart;
intemployeeposition;
intemployeedegree;
intemployeeworktime;
floatemployeepay;
staticlongemployeemaxnum;
staticfloatemployeebasepay;
voidnewinfo();
voidshowinfo();
voidshowall();
voidshowdepart(intdepart);
voidshowdegree(intdegree);
voidshowage(intmin,intmax);
voidshownum(longnumber);
voidrefreshinfo();
voiddeleteinfo();
floatpay(intemployeegrade);
staticintmaxnum();
};
classdboperate
{
public:
stringemployeename;
longemployeenum;
charemployeesex;
intemployeeage;
charemployeemarriage;
intemployeedepart;
intemployeeposition;
intemployeedegree;
intemployeeworktime;
floatemployeepay;
staticlongemployeemaxnum;
staticfloatemployeebasepay;
voidwritein(intiflag);
voidreadout();
voidrefreshmaxnum(intiflag);//i=1or-1or0
};
longemployee::employeemaxnum=1000;
floatemployee::employeebasepay=1500;
intemployee::maxnum()//返回系统已经存储的人数
{
intmn=0;
ifstreammyf;
myf.open("employeemaxnum.txt");
myf>>mn;
cout<<mn<<endl;
myf.close();
returnmn;
}
voidemployee::newinfo()//添加新成员函数
{
cout<<"新员工姓名:";
cin>>employee::employeename;
employee::employeenum=employeemaxnum+employee::maxnum()+1;
cout<<"新员工性别(f为女性,m为男性):";
cin>>employee::employeesex;
cout<<"新员工年龄:";
cin>>employee::employeeage;
cout<<"新员工婚姻状况(y为已婚,n为未婚):";
cin>>employee::employeemarriage;
cout<<"新员工学历,请输入相应学历的序号:"<<endl;
cout<<"[1:初中2:高中3:本科4:硕士5:博士]";
cin>>employee::employeedegree;
while(employee::employeedegree!=1&&employee::employeedegree!=2&&employee::employeedegree!=3&&employee::employeedegree!=4&&employee::employeedegree!=5)
{
cout<<"输入有误,请重新输入:"<<endl;
cout<<"[1:初中2:高中3:本科4:硕士5:博士]";
cin>>employee::employeedegree;
}
cout<<"新员工所在部门,请输入相应部门的序号:"<<endl;
cout<<"[1:董事会2:市场部3:公关部4:客服中心5:信息中心]";
cin>>employee::employeedepart;
while(employee::employeedepart!=1&&employee::employeedepart!=2&&employee::employeedepart!=3&&employee::employeedepart!=4&&employee::employeedepart!=5)
{
cout<<"输入有误,请重新输入:"<<endl;
cout<<"[1:董事会2:市场部3:公关部4:客服中心5:信息中心]";
cin>>employee::employeedepart;
}
cout<<"新员工职位,请输入相应职位的序号:"<<endl;
cout<<"[1:临时职员2:正式职员3:主任4:部门经理5:董事长]";
cin>>employee::employeeposition;
while(employee::employeeposition!=1&&employee::employeeposition!=2&&employee::employeeposition!=3&&employee::employeeposition!=4&&employee::employeeposition!=5)
{
cout<<"输入有误,请重新输入:"<<endl;
cout<<"[1:临时职员2:正式职员3:主任4:部门经理5:董事长]";
cin>>employee::employeeposition;
}
cout<<"新员工的工作时(不需要输入单位):";
cin>>employee::employeeworktime;
employee::employeepay=employee::pay(employee::employeeposition);
dboperatedbo;
dbo.readout();
intmaxnum=employee::maxnum();
enum[maxnum]=employee::employeenum;
ename[maxnum]=employee::employeename;
esex[maxnum]=employee::employeesex;
eage[maxnum]=employee::employeeage;
emarriage[maxnum]=employee::employeemarriage;
edegree[maxnum]=employee::employeedegree;
edepart[maxnum]=employee::employeedepart;
eposition[maxnum]=employee::employeeposition;
eworktime[maxnum]=employee::employeeworktime;
epay[maxnum]=employee::employeepay;
dbo.writein(1);
cout<<"添加新成员成功!"<<endl;
return;
}
voidemployee::showinfo()//程序主体数据输出函数
{
intchoice1,choice2,min,max;
longsearchnum;
employeee;
cout<<"请选择查询方式:"<<endl;
cout<<"******************************************"<<endl;
cout<<"*输出全体职工信息---------------------1"<<endl;
cout<<"*按职工部门输出-----------------------2"<<endl;
cout<<"*按职工学历输出-----------------------3"<<endl;
cout<<"*按职工年龄输出-----------------------4"<<endl;
cout<<"*按职工编号输出-----------------------5"<<endl;
cout<<"******************************************"<<endl;
cin>>choice1;
switch(choice1)
{
case1:showall();break;
case2:cout<<"请输入要查询职工的部门编号:[1:董事会2:市场部3:公关部4:客服中心5:信息中心]";
cin>>choice2;
e.showdepart(choice2);break;
case3:cout<<"请输入要查询职工的学历编号:[1:初中2:高中3:本科4:硕士5:博士]";
cin>>choice2;
e.showdegree(choice2);break;
case4:cout<<"请输入要查询的年龄范围:";
cout<<"最小值:";
cin>>min;
cout<<"最大值:";
cin>>max;
e.showage(min,max);break;
case5:cout<<"请输入要查询的员工号:";
cin>>searchnum;
e.shownum(searchnum);break;
default:cout<<"出错啦!"<<endl;break;
}
}
voidemployee::showall()//全体员工输出函数
{inti;<br>longnumber;<br>for(i=0;i<employee::maxnum();i++)<br>{<br>number=enum[i];<br>shownum(number);<br>}
}
voidemployee::showdepart(intdepart)//按员工所在部门输出函数
{
inti;
switch(depart)
{
case1:cout<<"董事会的成员有:>"<<endl;break;
case2:cout<<"市场部的成员有:>"<<endl;break;
case3:cout<<"公关部的成员有:>"<<endl;break;
case4:cout<<"客服中心成员有:>"<<endl;break;
case5:cout<<"信息中心成员有:>"<<endl;break;
default:cout<<"输入错误!>"<<endl;break;
}
for(i=0;i<employee::maxnum();i++)
{
if(edepart[i]==depart)
{
longnumber=enum[i];
shownum(number);
}elsecontinue;
}
}
voidemployee::showdegree(intdegree)//按员工学历输出函数
{
inti;
switch(degree)
{
case1:cout<<"初中学历的员工有:"<<endl;break;
case2:cout<<"高中学历的员工有:"<<endl;break;
case3:cout<<"本科学历的员工有:"<<endl;break;
case4:cout<<"硕士学位的员工有:"<<endl;break;
case5:cout<<"博士学位的员工有:"<<endl;break;
}
for(i=0;i<employee::maxnum();i++)
{
if(edegree[i]==degree)
{
longnumber=enum[i];
shownum(number);
}elsecontinue;
}
}
voidemployee::showage(intmin,intmax)//按员工年龄段输出函数
{
inti;
for(i=0;i<employee::maxnum();i++)
{
if(eage[i]>=min&&eage[i]<=max)
{
longnumber=enum[i];
shownum(number);
}
elsecontinue;
}
}
voidemployee::shownum(longnumber)//按员工编号输出函数
{
inti;
for(i=0;i<employee::maxnum();i++)
{
if(enum[i]==number)
{
cout<<"**********************************"<<endl;
cout<<"员工编号>"<<enum[i]<<endl;
cout<<"姓名>"<<ename[i]<<endl;
cout<<"性别>";
if(esex[i]=='f')cout<<"女"<<endl;
elseif(esex[i]=='m')cout<<"男"<<endl;
cout<<"年龄>"<<eage[i]<<"岁"<<endl;
cout<<"婚姻情况>";
if(emarriage[i]=='y')cout<<"已婚"<<endl;
elseif(emarriage[i]=='n')cout<<"未婚"<<endl;
cout<<"学历>";
switch(edegree[i])
{
case1:cout<<"初中"<<endl;break;
case2:cout<<"高中"<<endl;break;
case3:cout<<"本科"<<endl;break;
case4:cout<<"硕士"<<endl;break;
case5:cout<<"博士"<<endl;break;
}
cout<<"所在部门>";
switch(edepart[i])
{
case1:cout<<"董事会"<<endl;break;
case2:cout<<"市场部"<<endl;break;
case3:cout<<"公关部"<<endl;break;
case4:cout<<"客服中心"<<endl;break;
case5:cout<<"信息中心"<<endl;break;
}
cout<<"所任职务>";
switch(eposition[i])
{
case1:cout<<"临时成员"<<endl;break;
case2:cout<<"正式员工"<<endl;break;
case3:cout<<"主任"<<endl;break;
case4:cout<<"部门经理"<<endl;break;
case5:cout<<"董事长"<<endl;break;
}
cout<<"工作时长>"<<eworktime[i]<<"小时"<<endl;
cout<<"额定工资>"<<epay[i]<<"元"<<endl;
cout<<"**********************************"<<endl;
}
elsecontinue;
}
}
voidemployee::refreshinfo()//修改员工信息的函数
{
intcnum=1000;
dboperatedbo;
dbo.readout();
voidemployee::shownum(longnumber);
cout<<"请输入您要修改的员工编号:>";
cin>>cnum;
intmn;
mn=employee::maxnum();
for(inti=0;i<mn;i++)//遍历数据文件,查找要修改的员工数据
{
if(enum[i]==cnum)
{
employee::shownum(cnum);
cout<<"请输入该员工的新信息:"<<endl;
cout<<"新员工姓名:";//录入员工的新的数据,员工号保持不变
cin>>employee::employeename;
ename[i]=employee::employeename;
cout<<"新员工性别:[f为女性,m为男性]:";
cin>>employee::employeesex;
esex[i]=employee::employeesex;
cout<<"新员工年龄:";
cin>>employee::employeeage;
eage[i]=employee::employeeage;
cout<<"新员工婚姻状况(y为已婚,n为未婚):";
cin>>employee::employeemarriage;
emarriage[i]=employee::employeemarriage;
cout<<"新员工学历,请输入相应学历的序号:"<<endl;
cout<<"[1:初中2:高中3:本科4:硕士5:博士]";
cin>>employee::employeedegree;
while(employee::employeedegree!=1&&employee::employeedegree!=2&&employee::employeedegree!=3&&employee::employeedegree!=4&&employee::employeedegree!=5)
{
cout<<"输入有误,请重新输入:"<<endl;
cout<<"[1:初中2:高中3:本科4:硕士5:博士]";
cin>>employee::employeedegree;
}
edegree[i]=employee::employeedegree;
cout<<"新员工所在部门,请输入相应部门的序号:"<<endl;
cout<<"[1:董事会2:市场部3:公关部4:客服中心5:信息中心]";
cin>>employee::employeedepart;
while(employee::employeedepart!=1&&employee::employeedepart!=2&&employee::employeedepart!=3&&employee::employeedepart!=4&&employee::employeedepart!=5)
{
cout<<"输入有误,请重新输入:"<<endl;
cout<<"[1:董事会2:市场部3:公关部4:客服中心5:信息中心]";
cin>>employee::employeedepart;
}
edepart[i]=employee::employeedepart;
cout<<"新员工职位,请输入相应职位的序号:"<<endl;
cout<<"[1:临时职员2:正式职员3:主任4:部门经理5:董事长]";
cin>>employee::employeeposition;
while(employee::employeeposition!=1&&employee::employeeposition!=2&&employee::employeeposition!=3&&employee::employeeposition!=4&&employee::employeeposition!=5)
{
cout<<"输入有误,请重新输
‘捌’ C语言程序——职工信息管理系统
貌似这么大的系统很难有人帮你做,这儿有个学生管理系统,稍加修改就成了~
/*学生成绩管理系统*/
/*系统版本号:2006build 400.0201b*/
/*内核:adobo*/
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define N 32
int total=N; //定义全局变量,学生的总个数total
struct student
{
int xh;
char xm[6];
int yw;
int sx;
int yy;
int jsj;
int zf;
};
struct student stu[N],temp;
char get_key() //得到用户按键值
{
char key;
while (1)
{
if (kbhit())
{
key=getch();
break;
}
}
return key;
}
void wait() //按键等待,相当于PAUSE的功能
{
char key;
while (1)
{
if (kbhit())
{
key=getche();
break;
}
}
}
int id_search(int num) //查询该学号学生的数组编号
{
int i;
for (i=0;i<total;i++)
if (stu[i].xh==num) break;
return i;
}
void show_one(int id) //显示某学号学生的信息
{
cout<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<"⑴学号:"<<stu[id].xh<<endl;
cout<<"⑵姓名:"<<stu[id].xm<<endl;
cout<<"⑶语文:"<<stu[id].yw<<endl;
cout<<"⑷数学:"<<stu[id].sx<<endl;
cout<<"⑸英语:"<<stu[id].yy<<endl;
cout<<"⑹计算机:"<<stu[id].jsj<<endl;
cout<<"⑺总分:"<<stu[id].zf<<endl;
cout<<"--------------------------------------------------------------"<<endl;
}
void show_all() //显示所有学生的信息
{
int i;
cout<<"--------------------------------------------------------------"<<endl;
cout<<"学号\t"<<"姓名\t"<<"语文\t"<<"数学\t"<<"英语\t"<<"计算机\t"<<"总分"<<endl;
for (i=0;i<total;i++)
cout<<stu[i].xh<<'\t'<<stu[i].xm<<'\t'<<stu[i].yw<<'\t'<<stu[i].sx<<'\t'<<stu[i].yy<<'\t'<<stu[i].jsj<<'\t'<<stu[i].zf<<endl;
cout<<"--------------------------------------------------------------"<<endl;
}
void cj_input() //输入学生的成绩
{
int i;
cout<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<"※学生成绩信息录入菜单※"<<endl;
cout<<"◎请完整输入学生个人信息"<<endl;
cout<<"◎学号项键入0可结束编辑"<<endl;
cout<<"--------------------------------------------------------------"<<endl;
for (i=0;i<N;i++)
{
cout<<"请输入第"<<i+1<<"个学生的学号:";
cin>>stu[i].xh;
if (stu[i].xh==0) return; //用户输入0时,结束编辑
cout<<"请输入第"<<i+1<<"个学生的姓名:";
cin>>stu[i].xm;
cout<<"请输入第"<<i+1<<"个学生的语文成绩:";
cin>>stu[i].yw;
cout<<"请输入第"<<i+1<<"个学生的数学成绩:";
cin>>stu[i].sx;
cout<<"请输入第"<<i+1<<"个学生的英语成绩:";
cin>>stu[i].yy;
cout<<"请输入第"<<i+1<<"个学生的计算机成绩:";
cin>>stu[i].jsj;
stu[i].zf=stu[i].yw+stu[i].sx+stu[i].yy+stu[i].jsj;
cout<<"---------------提示:学号项键入 0可结束编辑----------------"<<endl;
}
}
void auto_input() //自动输入学生的成绩,为测试方便而设
{
int i;
for (i=0;i<N;i++)
{
stu[i].xh=(i+1);
strcpy(stu[i].xm,"ayc");
stu[i].yw=rand()%100;
stu[i].sx=rand()%100;
stu[i].yy=rand()%100;
stu[i].jsj=rand()%100;
stu[i].zf=stu[i].yw+stu[i].sx+stu[i].yy+stu[i].jsj;
}
}
void cj_modify() //学生成绩的修改
{
int num,id;
char choice;
cout<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<"※学生成绩信息修改菜单※"<<endl;
cout<<"◎请确认已经录入学生信息"<<endl;
cout<<"◎学号不存在即会返回菜单"<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<"请输入待修改的学生的学号:";
cin>>num;
id=id_search(num);
if (id==total)
{
cout<<endl;
cout<<"-〖系统提示〗------------------------"<<endl;
cout<<" 错误!无该学号学生信息!"<<endl;
cout<<"-------------------------------------"<<endl;
wait();
return;
}
cout<<"选择要修改的项目的编号,其它值返回:";
show_one(id);
choice=get_key();
if (choice=='1')
{cout<<"输入新的学号:";
cin>>stu[id].xh;
}
else if (choice=='2')
{cout<<"输入新的姓名:";
cin>>stu[id].xm;
}
else if (choice=='3')
{cout<<"输入新的语文成绩:";
cin>>stu[id].yw;
}
else if (choice=='4')
{cout<<"输入新的数学成绩:";
cin>>stu[id].sx;
}
else if (choice=='5')
{cout<<"输入新的英语成绩:";
cin>>stu[id].yy;
}
else if (choice=='6')
{
cout<<"输入新的计算机成绩:";
cin>>stu[id].jsj;
}
stu[id].zf=stu[id].yw+stu[id].sx+stu[id].yy+stu[id].jsj;
if (choice=='1'||choice=='2'||choice=='3'||choice=='4'||choice=='5'||choice=='6')
{
cout<<"-〖系统提示〗------------------------"<<endl;
cout<<" 已成功修改该学生信息!";
cout<<"-------------------------------------"<<endl;
show_one(id);
wait();
}
}
void cj_delete() //学生信息的删除
{
int num,id,i;
cout<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<"※学生成绩信息删除菜单※"<<endl;
cout<<"◎请确认已经录入学生信息"<<endl;
cout<<"◎学号不存在即会返回菜单"<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<"请输入要删除的学生学号:";
cin>>num;
id=id_search(num);
if (id==total)
{
cout<<endl;
cout<<"-〖系统提示〗------------------------"<<endl;
cout<<" 错误!无该学号学生信息!"<<endl;
cout<<"-------------------------------------"<<endl;
wait();
return;
}
show_one(id);
for (i=id;i<total;i++)
stu[i]=stu[i+1];
total=total-1;
cout<<endl;
cout<<" 学 生 成 绩 显 示 菜 单 "<<endl;
show_all();
cout<<endl;
cout<<"-〖系统提示〗------------------------"<<endl;
cout<<" 已成功删除该学生的信息!"<<endl;
cout<<"-------------------------------------"<<endl;
wait();
}
void func_1() //录入编辑菜单
{
char choice;
while(1)
{
system("cls");
cout<<" 学 生 成 绩 管 理 系 统 "<<endl;
cout<<"=============================================================="<<endl;
cout<<" ⑴录入成绩 "<<endl;
cout<<" ⑵修改成绩 "<<endl;
cout<<" ⑶删除成绩 "<<endl;
cout<<" ⑷返回上级 "<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<" 键入相应数字项进行功能选择(1-4) "<<endl;
choice=get_key();
if (choice=='1') cj_input(); //这里为测试方便,自动输入了成绩,注意改回
else if (choice=='2') cj_modify();
else if (choice=='3') cj_delete();
else if (choice=='4') break;
}
}
void show_person() //个人成绩查询
{
int num,id;
cout<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<"※学生成绩信息修改菜单※"<<endl;
cout<<"◎请确认已经录入学生信息"<<endl;
cout<<"◎学号不存在即会返回菜单"<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<"请输入要查询的学生学号:";
cin>>num;
id=id_search(num);
if (id==total)
{
cout<<endl;
cout<<"-〖系统提示〗------------------------"<<endl;
cout<<" 错误!无该学号学生信息!"<<endl;
cout<<"-------------------------------------"<<endl;
wait();
return;
}
show_one(id);
wait();
}
void cj_pm() //生成名次,即按照总分输出
{
int i,j;
for (j=0;j<total;j++)
{
for (i=0;i<total-j;i++)
{
if (stu[i].zf<stu[i+1].zf)
{
temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
}
}
}
cout<<endl;
cout<<" 学 生 成 绩 显 示 (按 总 分) "<<endl;
show_all();
wait();
}
void cj_xh() //按照学号输出
{
int i,j;
for (j=0;j<total;j++)
{
for (i=0;i<total-j;i++)
{
if (stu[i].xh>stu[i+1].xh)
{
temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
}
}
}
cout<<endl;
cout<<" 学 生 成 绩 显 示 (按 学 号) "<<endl;
show_all();
wait();
}
void cj_bk() //生成补考名单
{
int i;
cout<<" 补 考 名 单 "<<endl;
cout<<"=============================================================="<<endl;
cout<<"学号\t"<<"姓名\t"<<"语文\t"<<"数学\t"<<"英语\t"<<"计算机\t"<<endl;
for (i=0;i<total;i++)
{
if ((stu[i].yw<60)||(stu[i].sx<60)||(stu[i].yy<60)||(stu[i].jsj<60))
{
cout<<stu[i].xh<<'\t'<<stu[i].xm<<'\t';
if(stu[i].yw<60) cout<<"补考\t";
else cout<<'\t';
if(stu[i].sx<60) cout<<"补考\t";
else cout<<'\t';
if(stu[i].yy<60) cout<<"补考\t";
else cout<<'\t';
if(stu[i].jsj<60) cout<<"补考\t"<<endl;
else cout<<endl;
}
}
cout<<"--------------------------------------------------------------"<<endl;
wait();
}
void func_2() //成绩查询统计
{
char choice;
while(1)
{
system("cls");
cout<<" 学 生 成 绩 管 理 系 统 "<<endl;
cout<<"=============================================================="<<endl;
cout<<" ⑴个人成绩查询 "<<endl;
cout<<" ⑵班级排名查询 "<<endl;
cout<<" ⑶生成补考名单 "<<endl;
cout<<" ⑷返回上级 "<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<" 键入相应数字项进行功能选择(1-4) "<<endl;
choice=get_key();
if (choice=='1') show_person();
else if (choice=='2') cj_pm();
else if (choice=='3') cj_bk();
else if (choice=='4') break;
}
}
void func_3() //成绩打印与输出
{
char choice;
while(1)
{
system("cls");
cout<<" 学 生 成 绩 管 理 系 统 "<<endl;
cout<<"=============================================================="<<endl;
cout<<" ⑴按学号输出 "<<endl;
cout<<" ⑵按总分输出 "<<endl;
cout<<" ⑶返回上级 "<<endl;
cout<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<" 键入相应数字项进行功能选择(1-3) "<<endl;
choice=get_key();
if (choice=='1') cj_xh();
else if (choice=='2') cj_pm();
else if (choice=='3') break;
}
}
int main() //主函数开始
{
char choice;
while(1)
{
system("cls");
cout<<" 学 生 成 绩 管 理 系 统 "<<endl;
cout<<"=============================================================="<<endl;
cout<<" ⑴成绩录入与编辑 "<<endl;
cout<<" ⑵成绩查询与统计 "<<endl;
cout<<" ⑶成绩打印与输出 "<<endl;
cout<<" ⑷退出本管理系统 "<<endl;
cout<<"--------------------------------------------------------------"<<endl;
cout<<" 键入相应数字项进行功能选择(1-4) "<<endl;
choice=get_key();
if (choice=='1') func_1();
else if (choice=='2') func_2();
else if (choice=='3') func_3();
else if (choice=='4') break;
}
system("cls"); //版权信息
cout<<"***************[关于本系统]***************"<<endl;
}
‘玖’ C语言程序设计:职工工资信息统计管理系统设计
#include "stdafx.h"
#include "iostream"
#include "string"
#include "list"
#include "cassert"
using namespace std;
/*
编号、姓名、部门、应付工资、保险、税金、实付工资。
其中实付工资由公式计算得到:实付工资=应付工资 - 保险- 税金
*/
struct employee{
string m_num;//编号
string m_name;//姓名
string m_dep;//部门
double m_salary;//应付工资
double m_insurance;//保险
double m_tax;//税金
};
/*
(1)录入:输入职工数据,其中“实付工资”通过计算得到;
(2)删除:删除指定的职工信息(输入姓名,若找到则删除该信息)
(3) 修改:允许对已经录入的数据重新进行编辑、修改;
(4) 显示:显示全体职工数据;
(5)查询:
a. 输入职工姓名,显示该职工的全部数据;
b. 输入某部门值,显示该部门职工的数据、工资总额、平均工资。
(6) 退出程序。
*/
list<employee> emps;
int _tmain(int argc, _TCHAR* argv[])
{
void print(const employee &e);
void input();
void del();
void mod();
void show_all();
void show_name();
void show_dep();
cout<<"简易职工薪水管理程序 by 做他\n";// delete this line
cout<<"版权没有 请随意复制或修改任何代码\n";//delete this line
cout<<"请选择操作:1.录入 2.删除 3.修改 4.查询 5.显示所有员工 6.退出 :";
int choose=0;
cin>>choose;
assert(!cin.fail());
while (choose!=6)
{
if (choose==1) input();
if (choose==2) del();
if (choose==3) mod();
if (choose==4)
{
int choice=0;
cout<<"请选择操作 1.按姓名查询 2.按部门查询 3.退出:";
cin>>choice;
if (choice==1) show_name();
if (choice==2) show_dep();
if (choice==3)
{
cout<<"请选择操作:1.录入 2.删除 3.修改 4.查询 5.显示所有员工 6.退出 :";
cin>>choose;
assert(!cin.fail());
continue;
}
}
if (choose==5) show_all();
cout<<"请选择操作:1.录入 2.删除 3.修改 4.查询 5.显示所有员工 6.退出 :";
cin>>choose;
assert(!cin.fail());
}
return 0;
}
void print(const employee &e)
{
cout<<"编号:"<<e.m_num<<endl;
cout<<"姓名:"<<e.m_name<<endl;
cout<<"部门:"<<e.m_dep<<endl;
cout<<"保险:"<<e.m_insurance<<endl;
cout<<"税金:"<<e.m_tax<<endl;
cout<<"应付工资:"<<e.m_salary<<endl;
cout<<"实付工资:"<<e.m_salary-e.m_insurance-e.m_tax<<endl;
}
void input()
{
string num,name,dep;
double salary,ins,tax;
cout<<"请输入员工编号:";
cin>>num;
cout<<"请输入员工姓名:";
cin>>name;
cout<<"请输入员工部门:";
cin>>dep;
cout<<"请输入员工保险:";
cin>>ins;
assert(!cin.fail());
cout<<"请输入员工税金:";
cin>>tax;
assert(!cin.fail());
cout<<"请输入员工应付工资:";
cin>>salary;
assert(!cin.fail());
employee temp;
temp.m_dep=dep;
temp.m_insurance=ins;
temp.m_name=name;
temp.m_num=num;
temp.m_salary=salary;
temp.m_tax=tax;
emps.push_back(temp);
cout<<"员工录入操作完毕.\n";
}
void del()
{
if (emps.size()==0)
{
cout<<"没有员工记录.\n";
return;
}
string name;
bool isfind=false;
cout<<"请输入要删除的员工姓名:";
cin>>name;
list<employee>::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_name==name)
{
isfind=true;
emps.erase(iter);
cout<<"姓名为\""<<name<<"\"的员工记录已删除.\n";
return;
}
}
if (!isfind)
{
cout<<"没有找到姓名为\""<<name<<"\"的员工.\n";
return;
}
}
void mod()
{
if (emps.size()==0)
{
cout<<"员工记录为空.\n";
return;
}
bool isfind=false;
string name;
cout<<"请输入要修改的员工姓名:";
cin>>name;
list<employee>::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_name==name)
{
isfind=true;
cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n";
break;
}
}
if (isfind)
{
string num,name,dep;
double tax,ins,salary;
print(*iter);
cout<<endl;
cout<<"请输入新的员工编号:";
cin>>num;
cout<<"请输入新的员工姓名:";
cin>>name;
cout<<"请输入新的员工部门:";
cin>>dep;
cout<<"请输入新的员工保险:";
cin>>ins;
assert(!cin.fail());
cout<<"请输入新的员工税金:";
cin>>tax;
assert(!cin.fail());
cout<<"请输入新的员工工资:";
cin>>salary;
assert(!cin.fail());
iter->m_dep=dep;
iter->m_insurance=ins;
iter->m_name=name;
iter->m_num=num;
iter->m_salary=salary;
iter->m_tax=tax;
cout<<"1 员工记录被成功修改.\n";
}
else
{
cout<<"没有找到姓名为\""<<name<<"\"的员工记录.\n";
}
}
void show_all()
{
if (emps.size()==0)
{
cout<<"员工记录为空.\n";
return;
}
cout<<"显示全体员工数据:\n";
cout<<"--------------------\n";
list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
cout<<endl;
print(*iter);
cout<<endl;
}
cout<<"--------------------\n";
}
void show_name()
{
if (emps.size()==0)
{
cout<<"员工记录为空.\n";
return;
}
bool isfind=false;
string name;
cout<<"请输入要查询的员工姓名:";
cin>>name;
list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_name==name)
{
isfind=true;
cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n";
print(*iter);
break;
}
}
if (!isfind)
{
cout<<"没有找到姓名为\""<<name<<"\"的员工.\n";
return;
}
}
void show_dep()
{
if (emps.size()==0)
{
cout<<"员工记录为空.\n";
return;
}
double isfind=0.00;
double total_salary=0.00;
string dep;
cout<<"请输入要查询的部门名称:";
cin>>dep;
cout<<"部门["<<dep<<"]的员工信息:\n";
cout<<"--------------------\n\n";
list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
if (iter->m_dep==dep)
{
isfind++;
total_salary+=iter->m_salary;
print(*iter);
cout<<endl;
continue;
}
}
cout<<"--------------------\n";
if (isfind==0)
{
cout<<"没有找到名称为["<<dep<<"]的部门.\n";
}
else
{
cout<<"部门["<<dep<<"]工资统计:\n";
cout<<"工资总额:"<<total_salary<<endl;
cout<<"平均工资:"<<total_salary/isfind<<endl;
}
}
‘拾’ 用C语言编写一个程序,内容为职工工资管理系统的设计与实现
就这样吧,工资排序就是比较数的大小,这个会吧?既然只有3个人,就这么简单。如果要查询,就要先保存,写保存函数,再写读取函数,我就不写了。最后建议这种用链表比较好。
#include<stdio.h>
#include<stdlib.h>
void main()
{
char num[3];
char name[3][9];
char type[3][9];
float money[3];
float sum = 0;
int i;
float average;
printf("请输入职工的信息,\n:");
for(i = 0;i<3;i++)
{
num[i] = i+1;
printf("请输入第%d个信息name:\n",i+1);
scanf("%s",name[i]);
printf("请输入第%d个信息type:\n",i+1);
scanf("%s",type[i]);
printf("请输入第%d个信息money:\n",i+1);
scanf("%f",&money[i]);
}
for(i = 0;i<3;i++)
{
printf("%d %s %s %f",num[i],name[i],type[i],money[i]);
printf("\n");
}
for(i = 0;i<3;i++)
{
sum+=money[i];
}
average = sum/3;
printf("平均工资是:%f\n",average);
getch();
}