急求一份C语言工资管理系统,求C语言高手帮助,有重谢!

设计题目三 工资管理系统

设计目标:进一步加深、巩固学生所学专业课程(《C语言》)的基本理论知识,理论联系实际,进一步培养学生综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能,充分发挥广大同学的潜力,使他们通过本次课程设计而得到全面的锻炼。
设计内容:
1.设计系统的功能框图、流程图
2.编写工资管理的源程序代码
3.上机调试
4.书写实习报告
课程设计所用设备:每人一台计算机。
课程设计系统组成及模块功能:工资管理程序主要完成对职工的工资信息录入,然后进行排序,统计,查询,计算税金等功能操作。
具体要求如下:
1. 职工录入工资信息包括:编号,姓名,基本工资,扣款,应发工资,税金,实发工资
2.程序主菜单如下:
"**************MENU*************", /*菜单的标题行*/
0. init list /*初始化单链表*/
1. Enter list /*输入数据,创建单链表*/
2. List all /*显示所有记录*/
3. Calc the salary /*计算实发工资*/
4. Search record on name /*查找职工信息数据*/
5. Delete a record /*删除记录*/
6. Sort on sfgz /*按实发工资升序排序*/
7. Computer ticket number /*计算所需票面数*/
8. Total on number /*分类合计*/
9. Quit /*退出*/
3. 要求定义如下函数,对应菜单功能
/******函数原型*********/
void init(); /*单链表初始化*/
void create(); /*创建单链表, 输入数据*/
void calc(); /*计算实发工资*/
void delete(); /*删除*/
void search(); /*查找*/
void computer(); /*计算所需各种票面张数*/
void sort(); /*排序*/
void list(); /*显示所有数据*/
void print(SALARY *p); /*输出单条记录*/
float fax(float x); /*计算税金*/
void total(); /*分类合计*/
int menu_select(); /*主菜单*/
4. 要求设计流程图
功能框图
代码编写
软件环境:
VC++6.0。
课程设计要求:
应提交的材料:
设计报告:
实际操作过程中遇到的问题及解决方法;
设计总结及心得体会。
七、时间:两周
课时:20学时

说明书模板:
说明书撰写提纲
课程设计要求
主要按照任务书要求撰写
一、程序的功能设计
这部分主要对程序进行系统设计,给出总体的设计框图。
二、程序的数据结构
这部分主要写本设计所使用的数据结构,比如结构体的定义,单向链表,以及数据输入输出形式(如采用文件的方式读入或保存数据)
三、程序的函数设计
函数的功能描述
函数的调用关系
四、源程序代码
五、调试及总结

该程序输入职工工号和应发工资,由系统对其完成的实发工资实现计算。
其中职工信息包括职工号、姓名、性别、应发工资、税金、实发工资等(职工号不重复)。
功能要求及说明:
系统以菜单方式工作
职工基本信息和应发工资的录入功能(用文件保存)
从键盘输入数据,建立磁盘数据文件salary.txt
职工工资信息浏览功能:
从磁盘数据文件读取所有职工工资信息并显示输出到屏幕上;
计算应发工资和查询的功能:
计算公式为: 税金=应发工资*税率;
实发工资=应发工资-税金;
应发工资 税率
<1000 0
1000~4999 5%
5000以上 10%
源代码:

#include <iostream>
//#include <string>
#include <iomanip>
#include <cstdlib>
#include <fstream>
#include <vector>

using namespace std ;

const int fr = 10 ;
int a[fr] ;
//vector<int> a ; //单独记录职工号
int Count=0 ; //计数器 计算一共有多少个员工

class Person
{
public:
bool check( int , int ) ; //检查职工号是否重复和查询职工号
void get() ; //得到数据
void put( ) ; //向显示屏输出
void put_txt(ofstream&); //向文本输出
void change_pay () ; //换算税金和应发工资
void come( ifstream& ) ; //从文本中 读取
private:
int number ; //职工号
char name[10] ; //姓名
char sex ; //性别
int pay ; //应发工资
double pay_out ; //税金
double pay_true ; //实发工资
};

void opening ( ifstream& , ofstream& );
void closing ( ifstream& , ofstream& );
int show_menu();

int main()
{
ifstream in ;
ofstream out ;

opening ( in , out ) ;

int choose1 ; //选择主菜单
char choose2 ; //选择是否退出
// vector<Person> person ;
Person person[100] ;

while(!in.eof())
{
char b ;

in.get(b) ;
if(b==':')
{
in.putback(b) ;
person[Count].come(in) ;
Count++ ;
}
}

do
{
system ("cls") ;
choose1=show_menu() ;
system ("cls") ;
switch(choose1)
{
case 1:
{
for(int i=0;i<80;i++)
cout << "#" ;
cout << setw(20) << "职工基本信息和应发工资的录入\n" ;
for(int j=0;j<80;j++)
cout << "#" ;
do
{
//a.push_back(0) ;
person[Count].get() ;
//person.push_back(0) ;
Count++ ;
cout << "\n是否继续录入?(y or n):" ;
cin >> choose2 ;
}while(choose2=='y');
}
break ;
case 2:
{
for(int i=0;i<80;i++)
cout << "#" ;
cout << setw(20) << "职工工资信息浏览\n" ;
for(int j=0;j<80;j++)
cout << "#" ;
cout << endl ;

for (int m=0;m<Count;m++)
person[m].put() ;
cout << endl ;
}
break ;
case 3:
{
int p=0 ;
for(int i=0;i<80;i++)
cout << "#" ;
cout << setw(20) << "查询应发工资\n" ;
for(int j=0;j<80;j++)
cout << "#" ;

int number ;
cout << "\n输入你要查询的职工号:" ;
cin >> number ;
for (int m=0;m<Count;m++)
if( person[m].check(number,2) )
{
cout << "\n找到了!\n" ;
person[m].put () ;
p=1 ;
break;
}
if(p==0)
cout << "\n没有 这个工号!\n" ;
}
break ;
default:
cout << "\n输入错误!" ;
}
cout << "\n是否继续察看主菜单?(y or n):" ;
cin >> choose2 ;
}while(choose2=='y') ;
for (int i=0;i<=Count;i++)
person[i].put_txt ( out ) ;

closing ( in , out ) ;

return 0 ;
}

void opening ( ifstream& ins , ofstream& outs )
{
ins.open("c:\\tc\\tc\\s a l a r y.txt" ) ;
if (ins.fail())
{
cout << "wo can not open salary.txt!" ;
exit (1);
}
outs.open("c:\\tc\\tc\\s a l a r y.txt" ) ;
if (outs.fail())
{
cout << "wo con not opening s a l a r y.txt!" ;
exit (1);
}
}
void closing ( ifstream& ins , ofstream& outs )
{
ins.close();
outs.close();
}
int show_menu ()
{
int word ;
for(int i=0;i<80;i++)
cout << "#" ;

cout << "1. 职工基本信息和应发工资的录入; \n" ;
cout << "2.职工工资信息浏览; \n" ;
cout << "3.查询应发工资; \n" ;
for(int j=0;j<80;j++)
cout << "#" ;
cout << "请你输入选择的项目的代码(1,2...) :" ;

cin >> word ;

return word ;
}
void Person::change_pay()
{
if(pay<1000)
{
pay_out = 0 ;
pay_true = pay ;
}
if( (pay<4999) && (pay>=1000) )
{
pay_out = pay*0.05 ;
pay_true = pay - pay_out ;
}
if(pay>=5000)
{
pay_out = pay*0.1 ;
pay_true = pay - pay_out ;
}
}
void Person::come(ifstream& in)
{
char b ;

in.get(b) ;
if(b==':')
in >> number ;
a[Count]=number ;

do
{
in.get(b) ;
}while(b!=':') ;
if(b==':')
in >> name ;
do
{
in.get(b) ;
}while(b!=':') ;
in >> pay ;
do
{
in.get(b) ;
}while(b!=':') ;
in >> pay_out ;
do
{
in.get(b) ;
}while(b!=':') ;
in >> pay_true;

}
void Person::get()
{
do
{
cout << "\n职工号:" ;
cin >> number ;
a[Count]=number ;
if( check(number,1) )
break ;
cout << "\n职工号有重复,请重新输入!" ;
}while(1);
cout << "\n姓名:" ;
cin >> name;
cout << "\n应发工资:" ;
cin >> pay ;
}
void Person::put()
{
change_pay() ;

for(int i=0;i<80;i++)
cout << "#" ;

cout << "\n职工号:" << number
<< "\n姓名:" << name
<< "\n应发工资:" << pay
<< "\n税金:" << pay_out
<< "\n实发工资:" << pay_true ;
cout << endl ;
}
void Person::put_txt( ofstream& out )
{
for(int i=0;i<80;i++)
cout << "#" ;

out << "\n职工号:" << number
<< "\n姓名:" << name
<< "\n应发工资:" << pay
<< "\n税金:" << pay_out
<< "\n实发工资:" << pay_true ;
}
bool Person::check( int b , int choose)
{
switch(choose)
{
case 1:
{
for(int i=0;i<Count;i++)
if(b == a[i])
return (b!=a[i]) ;
return 1 ;
}
case 2:
return (b==number) ;
default:
cout << "\n系统错误!" ;
exit(1) ;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-07
问个问题,你上面菜单里面的初始化单链表是不是指的是将原有信息删除的意思,还有你是否需要用文件保存?应该是不要求可视化的吧?追问

初始化单链表不是删除原有信息,需要保存文件,不要求可视化!

第2个回答  2012-07-07
课程设计?努力吧。网络资料丰富,完成不是难事,百分百让人编写的行为不可取!
第3个回答  2012-07-16
考过3级,抱歉,还给老师了!建议你可以问个在线的理科生。

求一C语言程序设计作业,工资管理系统
int zhwsp[N],zhchsp[N]; \/*职务工资&&职称(基本)工资*\/FILE *fp;typedef struct _paylist { int cardnum; \/*工资卡号*\/ char name[M]; int month; \/*月份,进行选择*\/ int jbsalary; \/*基本工资*\/ int zhwsalary; \/*职务工资*\/ int addition; \/*补助*\/ int ysalary; \/*应发工资*\/ int p...

工资管理系统C语言
TEACHER *nod=head;while(nod->next !=NULL)\/\/!循环到最后一个节点,有问题。。{ if((!strcmp(nod->name,s)) || (!strcmp(nod->unit,s))){ printf("姓名:%s\\n单位:%s\\n基本工资:%f\\n津贴:%f\\n扣税:%f\\n总工资:%f\\n",nod->name,nod->unit,nod->salary,nod->allowance,nod->t...

帮我用C语言设计一个工资管理系统
1、直接从文件中读取字节,每次读取一个sizeof(worker)大小,然后放到worker w1...wn中,然后在将这个n个worker add到链表company中。2、增加新职工就是在company末尾增加节点项,建立一个worker w(n+1),这个输入可以手动在命令行中输入,也可以读文件,然后创建一个节点,把w(n+1)放进去,最...

C语言程序设计:职工工资信息统计管理系统设计
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...

求C语言 工资管理系统 原代码
int parent=(place-1)\/2;while((parent>=0)&&(items[parent].getPri()<items[place].getPri())){ Elem temp=items[parent];items[parent]=items[place];items[place]=temp;place=parent;parent=(place-1\/2);} ++size;} heapRebuild(0);} Elem heapDelete(int ID){ Elem rootItem;if(...

用C语言怎么写一个企业工资管理系统
1.设计一个数据结构,存储员工的属性,名字,薪水,应缴保险和公积金等等。2.设计算法,计算每隔员工应该缴纳的税费。3.文件的读写,用来将你计算的值能够存入文件,并且下次需要的时候,能够读出并用来初始化你的程序中的数据。相当于就是一个数据库了。以上这几个部分差不多就可以了 ...

用C语言课程设计—职工工资管理系统(分别用结构体数组和链表编写程序...
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;ca...

求一份C语言程序设计,价格私聊
编写一个工资信息管理系统,职工有工号、姓名、入职年月、一年12个月每个月的工资,年总工资等信息。(1) 信息生成。从一个文本文件中读入姓名信息,其他信息通过随机生成(注意信息的合理性)或者计算得到(如年总工资)。计算所有职工各月的总工资及年总工资。(2) 信息显示 。能够分别按照工号、职工...

...现在给出三道 希望大家 帮帮忙 编写一个工资管理的程序。
编写一个学生成绩管理的程序。由键盘输入数据(最好要考虑输入数据输入的格式及输入数据的有效性),然后进行以下的功能实现。程序要求主函数是一个功能选择菜单,其它各功能都用各自的函数实现。要求至少有20个学生的原始数据。原始数据如下:学号 姓名 C程序设计 高等数学 英语 线性代数 1 王.. 80 80 80 80 2 张....

用C语言设计并实现一个员工信息管理系统
+ a[i].subsidy - a[i].tax - a[i].expenses;}void PrintTitle(void) {cout << "单 位 姓 名 性别 出生年月 职 称 基本工资 津 贴 个 税 水电费 实发工资\\n";for(int i = 0; i < 79; ++i) cout << "*"; cout << endl;}void RowShow(WAGE a[]...

相似回答