你也不说计算公式,不知道怎么计算,我去网上找了一个月支付款的计算公式,不知道和你题目的要求是否一样,如果不一样你就改下公式就行。
创新互联是一家集网站建设,临朐企业网站建设,临朐品牌网站建设,网站定制,临朐网站建设报价,网络营销,网络优化,临朐网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
java代码如下:
public class Loan {
public static void main(String[] args){
double rate ;//利率
int year ; //年数
double money ; //贷款总额
double monthpay ;//月付款
Scanner sc = new Scanner(System.in);
System.out.println("输入月利率:");
rate = sc.nextDouble();
System.out.println("输入年数:");
year = sc.nextInt();
System.out.println("输入贷款总额:");
money = sc.nextDouble();
//计算月付款
monthpay = (money * rate)/Math.abs(1 - (1 / (1 + rate ) * year * 12 ));
System.out.println("每月应该还贷款:" + monthpay);
}
}
首先得这个Java程序得常年在后台运行。每天都进行如下操作:
检测到当天日期,如果不是1月1日,则将标志变量置0.
如果是1月1日,检测标志变量,
如果是0:进行一次扣费,然后标志变量置1;
如果是1,不进行任何操作。
我这个是我以前课程设计时做的,也是工资管理系统,功能貌似比你多,你自己删减下,我这里还有当时交的课程设计报告书,上面有详细说明,要的话给我邮箱发给你,记得采纳啊~~
#include "stdio.h"
#include "bios.h"
#include "dos.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
#include "mem.h"
#include "ctype.h"
#include "alloc.h"
typedef struct z1
{
char no[11];
char name[15];
float jbgz;
float koukuan;
float yfgz;
float shuijin;
float sfgz;
struct z1 *prior;
struct z1 *next;
}SALARY;
struct z1 *First;
struct z1 *Last;
void init();
void create();
void calc();
void delete();
void search();
void change();
void save();
void load();
void insert();
void list();
void print(SALARY *p);
float fax(float x);
int menu_select();
main()
{
int i;
clrscr();
for()
{
switch(menu_select())
{
case 1:create();clrscr();break;
case 2:calc();clrscr();break;
case 3:search();clrscr();break;
case 4:change();clrscr();break;
case 5:insert();clrscr();break;
case 6:delete();clrscr();break;
case 7:list();clrscr();break;
case 8:save();clrscr();break;
case 9:load();clrscr();break;
case 0:exit(0);
}
}
}
menu_select()
{
char *f[]= {
"********SalaryMangementSystem*********",
" 1. Enter list",
" 2. Calc the salary",
" 3. Search record by no",
" 4. Change record by no",
" 5. Insert record to list",
" 6. Delete a record",
" 7. List all ",
" 8. Save data to the file",
" 9. Load dta from the file",
" 0. Quit",
"**************************************",
"Please enter your choice:" };
int i;
int c=0;
for(i=0;i13;i++)
{
gotoxy(1,3+i);
cprintf("%s",f[i]);
}
scanf("%d",c);
return c;
}
void init()
{
First=NULL;
Last=NULL;
}
/*输入数据,创建双链表*/
void create()
{
int x; /*记录行坐标*/
int i; /*记录输入记录数*/
int flag=0; /*做结束标记*/
float temp; /*定义临时变量*/
SALARY *info,*p; /*定义临时变量*/
if(First!=NULL)
init();/*如果头指针不为空,调用初始化函数*/
p=First; /*从头指针开始*/
for()
{
if(flag==1)
break; /*如果flag=1,结束输入*/
i=0;
x=0; /*确定移动的行坐标*/
clrscr(); /*清屏*/
gotoxy(1,3);
printf("*************gongziguanli*************");/*输出标题*/
gotoxy(1,4);
printf(" --Enter S end--");/*提示输入@结束*/
gotoxy(1,5);
printf("|------------------------------------|");/*输出表格的起始线*/
gotoxy(1,6);
printf("| no | name | jbgz |");/*输出字段标题,注意空格数*/
for()
{
gotoxy(1,7+x);
printf("|----------|----------------|--------|");/*输出表格的水平线*/
info=(SALARY *)malloc(sizeof(SALARY));/*申请一个记录空间*/
if(!info)
{
printf("\nout of memory");/*如没有得到空间,输出内存溢出信息*/
exit(0);/*退出程序*/
}
info-next=NULL;/*新结点的后继为空*/
info-prior=NULL;/*新结点的前驱为空*/
gotoxy(1,8+x);printf("|"); /*输出数据间的分割线*/
gotoxy(12,8+x);printf("|");
gotoxy(29,8+x);printf("|");
gotoxy(38,8+x);printf("|");
gotoxy(2,8+x);/*光标到输入编号位置*/
inputs(info-no,10);/*输入编号,并验证长度不超过10*/
if(info-no[0]=='S'||info-no[0]=='s')
{
flag=1;
break;
} /*编号首字母为S结束输入*/
gotoxy(13,8+x); /*光标到输入姓名位置*/
inputs(info-name,14); /*输入姓名,并验证长度不超过14*/
gotoxy(30,8+x); /*光标到输入基本工资位置*/
scanf("%f",temp); /*输入基本工资到临时变量*/
info-jbgz=temp; /*基本工资赋值*/
info-koukuan=0; /*初始扣款为0,待计算工资时输入*/
info-sfgz=0; /*初始实发工资为0,待计算工资时计算*/
info-shuijin=0; /*初始税金为0,待计算工资时计算*/
info-yfgz=0; /*初始应发工资为0,待计算工资时计算*/
if(p==NULL)/*如果p为空,说明输入的是第一个结点*/
{
First=Last=info;/*头指针和尾指针*/
First-prior=NULL; /*头指针的前驱是空*/
Last-next=NULL; /*尾指针的后继是空*/
}
else /*插入的结点不是第一结点,则插入在头结点之前*/
{
info-next=p;/*新结点的后继指向原来的头结点*/
info-prior=p-prior;/*新结点的前驱指向原来的头结点的前驱*/
p-prior=info;/*原来结点的前驱指向新结点*/
}
p=info; /*新结点变为p结点,暂时的头结点*/
First=info; /*新结点变为头结点*/
x+=2; /*因为水平线,将光标下移两行*/
gotoxy(1,8+x);
i++; /*输入记录数加1*/
if(i%9==0)
break; /*输入9个记录,换一页输入*/
}
gotoxy(1,8+x);
}
printf("*****************end*****************");/*输出结尾水平线*/
}
/*字符串输入和验证函数*/
inputs(char *s, int count)
{
char p[255];
do{
scanf("%s",p);/*输入字符串*/
if(strlen(p)count)printf("\n too long! \n");/*进行长度校验,超过count值重输入*/
}while(strlen(p)count);
strcpy(s,p); /*将输入的字符串拷贝到字符串s中*/
}
/*显示链表*/
void list()
{
int i=0,n; /*记录输出行数*/
SALARY *p; /*定义移动指针*/
clrscr(); /*清屏*/
p=First; /*从头指针开始*/
while(i%10==0p!=NULL) /*外循环控制换页*/
{
i=0; /*记录一页的输出行数*/
clrscr(); /*清屏*/
printf("\n\n\n"); /*换行三次*/
printf("*************************************SALARY***********************************\n"); /*输出大标题*/
printf("|nO | name | jbgz | koukuan | yfgz | shuijin | sfgz |\n"); /*输出字段标题*/
printf("|----------|---------------|---------|---------|---------|---------|---------|\n"); /*输出水平线*/
while(p!=NULL) /*当p不为空时*/
{
printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n",
p-no,p-name,p-jbgz,p-koukuan,p-yfgz,p-shuijin,p-sfgz);
p=p-next; /*指针后移*/
i++; /*输出行数加1 */
if(i%10==0)
break; /*如果满10行,跳出内循环*/
}
printf("****************************************end***********************************\n"); /*输出本页的结束行*/
printf("Press any key congtinue...\n");
getch(); /*输出一页暂停一下,压任意键继续*/
} /*返回到外循环,准备下一页的输出*/
}
/*输出指针所指结点信息*/
void print(SALARY *p)
{
if(p) /*如果指针不为空,则显示信息*/
{
clrscr(); /*清屏*/
printf("\n\n\n"); /*换行*/
printf("************************************SALARY************************************\n"); /*输出标题信息*/
printf("|no | name | jbgz | koukuan| yfgz | shuijin | sfgz |\n"); /*输出字段标题*/
printf("|----------|---------------|---------|---------|---------|---------|---------|\n"); /*输出分割线*/
printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n", p-no,p-name,
p-jbgz,p-koukuan,p-yfgz,p-shuijin,p-sfgz);/*输出结点信息*/
printf("***************************************end************************************\n"); /*输出结束标记*/
}
}
/*计算实发工资*/
void calc()
{
int x; /*行坐标*/
int i=0; /*记录数*/
float temp; /*临时变量扣款*/
SALARY *p; /*移动指针*/
clrscr(); /*清屏*/
p=First; /*从头指针开始*/
while(p!=NULL) /*当p不为空时,也就是有记录时,外循环控制换页*/
{
x=0;
clrscr();
gotoxy(1,3);
printf("***************************gongziguanli************************************"); /*输出标题*/
gotoxy(1,5);
printf("|--------------------------------------------------------------------------|");
gotoxy(1,6);/*下面输出字段标题*/
printf("| no | name | jbgz | koukuan | yfgz |shuijin | sfgz |");
while(p!=NULL) /*当p不为空时,也就是有记录时,内循环控制处理9条*/
{
gotoxy(1,7+x);
printf("|----------|----------------|--------|----------|--------|--------|--------|");
gotoxy(1,8+x);printf("|");
gotoxy(12,8+x);printf("|");
gotoxy(29,8+x);printf("|");
gotoxy(38,8+x);printf("|");
gotoxy(49,8+x);printf("|");
gotoxy(58,8+x);printf("|");
gotoxy(67,8+x);printf("|");
gotoxy(76,8+x);printf("|");
gotoxy(2,8+x);
printf("%-10s",p-no); /*输出编号*/
gotoxy(13,8+x);
printf("%-15s",p-name); /*输出姓名*/
gotoxy(30,8+x);
printf("%.2f",p-jbgz); /*输出基本工资*/
gotoxy(39,8+x);
scanf("%f",temp); /*输入扣款*/
p-koukuan=temp; /*扣款字段赋值*/
p-yfgz=p-jbgz-p-koukuan; /*计算应发工资=基本工资-扣款*/
gotoxy(50,8+x);
printf("%.2f",p-yfgz); /*输出应发工资*/
gotoxy(59,8+x);
p-shuijin=(p-yfgz-1000)*fax(p-yfgz); /*否则按税率计算税金*/
printf("%.2f",p-shuijin); /*输出税金*/
gotoxy(68,8+x);
p-sfgz=p-yfgz-p-shuijin; /*计算实发工资*/
printf("%-8.2f",p-sfgz); /*输出实发工资*/
x+=2; /*行坐标下移两行*/
i++; /*记录数加1*/
if(i%9==0)break; /*记录数超过9条,跳出内循环*/
p=p-next; /*指针后移,处理下一条*/
}
gotoxy(1,7+x);
printf("***************************************end***********************************\n"); /*输出结束行*/
printf("Press any key congtinue...\n");
getch();
}
}
/*根据应发工资,计算税率*/
float fax(float x)
{
float f1;
if(x1000)
return 0; /*小于1000,返回0*/
switch((int)(x/1000))
{
case 1:f1=0.05;break; /*1000~1999,返回0.05*/
case 2:f1=0.1;break; /*2000~2999,返回0.1*/
case 3:f1=0.15;break; /*3000~3999,返回0.15*/
case 4:f1=0.2;break; /*4000~4999,返回0.2*/
default:f1=0.3;break; /*5000以上,返回0.3*/
}
return f1;
}
因为有些存心不良的软件公司和制作者在软件中内置扣费代码,只要软件使用者一安装就会自动发送一条或多条短信,并扣去我们的话费!为了避免这种恶意扣费我们在下载完软件后,可以通过相关软件检测一下好有无问题之后再安装!