数据库工资管理系统课程设计
Ⅰ 数据库课程设计 c语言源代码 工资管理系统 5.1目标: ⑴实现月工资计
你这个这么复杂,如果不给钱很难有人给你做的,望采纳!
Ⅱ 数据库课程设计—员工薪资管理系统
我给你讲个思路
表设计:
人事档案表
工资登记表(用做每月的工资登记)
考勤内表容(记录员工考勤数据,工资计算要参照这张表)
工资汇总表(每月对工资的结转数据流入此表)
系统用户表
系统权限分配表
表大体是这几张表
其它你说的这一套套大都过时了,现在做软件的需求分析都不是这个了,但学习下也是必须的,出来后就又学新东西了
Ⅲ 求数据库课程设计报告(职工工资管理系统)。要求如下。需要用SQL Server建立数据库,以及结合web界面
毕业都好多年了 ,大学这教育也太老化了吧 ,每年都是出这么个题来考学生,创新一下会si人的我估计.....
还是劳驾自己开发吧,别对不起你妈交给你的学费!学点对自己没坏处的!
答案:已删除!
对于这些话。这位师兄或师姐,允许我这么称呼你。虽然你的出发点是好的,但是我实在忍不住要说一下。你知道些什么。既然你说这些教育太老化,每年都是这些题。那么自己开发,然后就对得起老妈的学费,话说对不对得起我自己知道。我求这份报告并不代表我就是要全抄,我也没说我一点都不去做。而且。你知道我们课程设计这两周怎么过的。web作业要交,弄一个大系统。然后软件工程五份文档(每份文档基本上都要花一星期的实际来弄),然后17周考软件工程。刚考完。18周考Java.这两周是课程设计设计,完了。19周还要考计算机组成原理。交这个报告。我们弄web作业几乎都要熬好几个通宵来弄。加上还有数据库的实验报告以及java的实验报告。我不认为要一份课程设计报告有什么错?你有的话就想发就发。而且你似乎是没有的。那么劳驾你不要对我说对不起老妈的学费。对不对得起我自己知道,我妈也知道。OK?虽然你的出发点不知道是不是好的。但是对我来说不需要。。。不然还要网络知道来干嘛。。。。嗯~没有,看到你的评论我有点火大。所以一不小心就打了那么长。况且怎么都好。就算最后没得交也好。我也觉得没关系。。。好了~睡觉了。呼呼~
Ⅳ 工资管理信息系统课程设计开发背景怎么写
我认为中心应该是:
(在市场经济的大环境下,越来越多的人士逐渐认识专到用计算机技术进行属各类管理,交流的便捷,其中最突出的要算企事业单位的人事工资管理了,为了提高人事工资管理效率,减轻劳动强度,提高信息处理速度和准确性,在对其组成结构和系统功能进行了全面地分析,提出了人事工资管理系统的实现和解决方案,该方案利用计算机支持高效率地完成人事工资管理的日常事务,是适应现代企事业单位制度要求、推动企事业单位人事工资管理走向科学化、规范化的必要条件。)
设计的思路:
应该以Visual Basic6.0为开发语言和ACCESS2000为数据库以及其他第三方控件等软件作为设计工具,以工资为对象,开发的一个能够满足企事业单位的工资管理的要求的“人事工资管理系统”。
要求本系统具有完成单位人员工资管理的全过程,包括用户管理,员工管理,维护不同职务,职称,其他工资的工资标准以及浏览与结算和查询等。
关键词:工资管理系统; VB; ACCESS
Ⅳ 数据库原理与应用课程设计报告 xx管理系统。 例如工资管理系统,这个是例题就不要了。
可以使用Bai Hi联系抄我你的任务
有机会可解决你遇到的任务
如果你有类似的要求也可联系我
ES:\\
交易提醒:预付定金是诈骗
交易提醒:勿轻信网络名中的联系方式
Ⅵ 课程设计,工资管理系统完整源代码
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#define MONTH_NUM 5 /* 最多的月份 */
struct worker
{
int number; /* 每个工人的工号 */
char name[15]; /* 每个工人的姓名 */
int salary[MONTH_NUM]; /* 每个工人M月的工资 */
int sum; /* 每个工人的总工资 */
float average; /* 每个工人的平均工资 */
struct worker *next;
};
typedef struct worker STU;
char Menu(void);
int Ascending(int a, int b);
int Descending(int a, int b);
void IntSwap(int *pt1, int *pt2);
void CharSwap(char *pt1, char *pt2);
void FloatSwap(float *pt1, float *pt2);
STU *AppendNode(STU *head, const int m);
STU *DeleteNode(STU *head, int nodeNum);
STU *ModifyNode(STU *head, int nodeNum, const int m);
STU *SearchNode(STU *head, int nodeNum);
STU *Appendsalary(STU *head, const int m);
void Totalsalary(STU *head, const int m);
void Printsalary(STU *head, const int m);
STU *Deletesalary(STU *head, const int m);
void Modifysalary(STU *head, const int m);
void Sortsalary(STU *head, const int m, int (*compare)(int a, int b));
void Searchsalary(STU *head, const int m);
void DeleteMemory(STU *head);
main()
{
char ch;
int m;
STU *head = NULL;
printf("输入要记录的月份(m<10):");
scanf("%d", &m);
while (1)
{
ch = Menu();
switch (ch)
{
case'1':head = Appendsalary(head, m);
Totalsalary(head, m);
break;
case'2':Printsalary(head, m);
break;
case'3':head = Deletesalary(head, m);
printf("\nAfter deleted\n");
Printsalary(head, m);
break;
case'4':Modifysalary(head, m);
Totalsalary(head, m);
printf("\nAfter modified\n");
Printsalary(head, m);
break;
case'5':Searchsalary(head, m);
break;
case'6':Sortsalary(head, m, Descending);
printf("\nsorted in descending order by sum\n");
Printsalary(head, m);
break;
case'7':Sortsalary(head, m, Ascending);
printf("\nsorted in ascending order by sum\n");
Printsalary(head, m);
break;
case'0':exit(0);
DeleteMemory(head);
printf("End of program!");
break;
default:printf("Input error!");
break;
}
}
}
char Menu(void)
{
char ch;
printf("\n管理工人的工资\n");
printf(" 1.添加记录\n");
printf(" 2.列出记录\n");
printf(" 3.删除记录\n");
printf(" 4.修改记录\n");
printf(" 5.查找记录\n");
printf(" 6.降序排列\n");
printf(" 7.升序排列\n");
printf(" 0.退出\n");
printf("请输入你的选择:");
scanf(" %c", &ch); /*在%c前面加一个空格,将存于缓冲区中的回车符读入*/
return ch;
}
STU *Appendsalary(STU *head, const int m)
{
int i = 0;
char c;
do{
head = AppendNode(head, m); /*向链表末尾添加一个节点*/
printf("你想添加一个新的记录吗(Y/N)?");
scanf(" %c",&c); /*%c前面有一个空格*/
i++;
}while (c=='Y' || c=='y');
printf("%d new nodes have been apended!\n", i);
return head;
}
STU *Deletesalary(STU *head, const int m)
{
int i = 0, nodeNum;
char c;
do{
printf("请输入你想删除的记录编号:");
scanf("%d", &nodeNum);
head = DeleteNode(head, nodeNum); /*删除工号为nodeNum的工人信息*/
Printsalary(head, m); /*显示当前链表中的各节点信息*/
printf("Do you want to delete a node(Y/N)?");
scanf(" %c",&c); /*%c前面有一个空格*/
i++;
}while (c=='Y' || c=='y');
printf("%d nodes have been deleted!\n", i);
return head;
}
void Modifysalary(STU *head, const int m)
{
int i = 0, nodeNum;
char c;
do{
printf("请输入你想修改的记录编号:");
scanf("%d", &nodeNum);
head = ModifyNode(head, nodeNum, m); /*修改工号为nodeNum的节点*/
printf("Do you want to modify a node(Y/N)?");
scanf(" %c",&c); /*%c前面有一个空格*/
i++;
}while (c=='Y' || c=='y');
printf("%d nodes have been modified!\n", i);
}
void Totalsalary(STU *head, const int m)
{
STU *p = head;
int i;
while (p != NULL) /*若不是表尾,则循环*/
{
p->sum = 0;
for (i=0; i<m; i++)
{
p->sum += p->salary[i];
}
p->average = (float)p->sum / m;
p = p->next; /*让p指向下一个节点*/
}
}
void Sortsalary(STU *head, const int m, int (*compare)(int a, int b))
{
STU *pt;
int flag = 0, i;
do{
flag = 0 ;
pt = head;
/*若后一个节点的总工资比前一个节点的总工资高,则交换两个节点中的数据
注意只交换节点数据,而节点顺序不变,即节点next指针内容不进行交换*/
while (pt->next != NULL)
{
if ((*compare)(pt->next->sum, pt->sum))
{
IntSwap(&pt->number, &pt->next->number);
CharSwap(pt->name, pt->next->name);
for (i=0; i<m; i++)
{
IntSwap(&pt->salary[i], &pt->next->salary[i]);
}
IntSwap(&pt->sum, &pt->next->sum);
FloatSwap(&pt->average, &pt->next->average);
flag = 1;
}
pt = pt->next;
}
}while(flag);
}
/*交换两个整型数*/
void IntSwap(int *pt1, int *pt2)
{
int temp;
temp = *pt1;
*pt1 = *pt2;
*pt2 = temp;
}
/*交换两个实型数*/
void FloatSwap(float *pt1, float *pt2)
{
float temp;
temp = *pt1;
*pt1 = *pt2;
*pt2 = temp;
}
/*交换两个字符串*/
void CharSwap(char *pt1, char *pt2)
{
char temp[15];
strcpy(temp, pt1);
strcpy(pt1, pt2);
strcpy(pt2, temp);
}
/*决定数据是否按升序排序,a<b为真,则按升序排序*/
int Ascending(int a, int b)
{
return a < b;
}
/* 决定数据是否按降序排序,a>b为真,则按降序排序 */
int Descending(int a, int b)
{
return a > b;
}
void Searchsalary(STU *head, const int m)
{
int number, i;
STU *findNode;
printf("请输入你想查找的记录编号:");
scanf("%d", &number);
findNode = SearchNode(head, number);
if (findNode == NULL)
{
printf("Not found!\n");
}
else
{
printf("\nNo.%3d%8s", findNode->number, findNode->name);
for (i=0; i<m; i++)
{
printf("%7d", findNode->salary[i]);
}
printf("%9d%9.2f\n", findNode->sum, findNode->average);
}
}
void Printsalary(STU *head, const int m)
{
STU *p = head;
char str[100] = {'\0'}, temp[3];
int i, j = 1;
strcat(str, "Number Name ");
for (i=1; i<=m; i++)
{
strcat(str, "salary");
itoa(i,temp, 10);
strcat(str, temp);
strcat(str, " ");
}
strcat(str," sum average");
printf("%s", str); /* 打印表头 */
while (p != NULL) /*若不是表尾,则循环打印*/
{
printf("\nNo.%3d%15s", p->number, p->name);
for (i=0; i<m; i++)
{
printf("%7d", p->salary[i]);
}
printf("%9d%9.2f", p->sum, p->average);
p = p->next; /*让p指向下一个节点*/
j++;
}
printf("\n");
}
STU *AppendNode(STU *head, const int m)
{
STU *p = NULL;
STU *pr = head;
int j;
p = (STU *)malloc(sizeof(STU)); /*为新添加的节点申请内存*/
if (p == NULL) /*若申请内存失败,则打印错误信息,退出程序*/
{
printf("No enough memory to alloc");
exit(0);
}
if (head == NULL) /*若原链表为空表,则将新建节点置为首节点*/
{
head = p;
}
else /*若原链表为非空,则将新建节点添加到表尾*/
{
/*若未到表尾,则继续移动指针pr,直到pr指向表尾*/
while (pr->next != NULL)
{
pr = pr->next;
}
pr->next = p; /*将新建节点添加到链表的末尾*/
}
pr = p; /*让pr指向新建节点*/
printf("Input node data......");
printf("\nInput number:");
scanf("%d", &p->number);
printf("Input name:");
scanf("%s", p->name);
for (j=0; j<m; j++)
{
printf("Input salary%d:", j+1);
scanf("%d", p->salary+j);
}
pr->next = NULL; /*将新建节点置为表尾*/
return head; /*返回添加节点后的链表的头节点指针*/
}
STU *ModifyNode(STU *head, int nodeNum, const int m)
{
int j;
STU *newNode;
newNode = SearchNode(head, nodeNum);
if (newNode == NULL)
{
printf("Not found!\n");
}
else
{
printf("Input the new node data:\n");
printf("Input name:");
scanf("%s", newNode->name);
for (j=0; j<m; j++)
{
printf("Input salary%d:", j+1);
scanf("%d", newNode->salary+j);
}
}
return head;
}
STU *DeleteNode(STU *head, int nodeNum)
{
STU *p = head, *pr = head;
if (head == NULL) /*链表为空,没有节点,无法删除节点*/
{
printf("No Linked Table!\n");
return(head);
}
/*若没找到节点nodeNum且未到表尾,则继续找*/
while (nodeNum != p->number && p->next != NULL)
{
pr = p;
p = p->next;
}
if (nodeNum == p->number) /*若找到节点nodeNum,则删除该节点*/
{
if (p == head) /*若待删节点为首节点,则让head指向第2个节点*/
{
head = p->next;
}
else /*若待删节点非首节点,则将前一节点指针指向当前节点的下一节点*/
{
pr->next = p->next;
}
free(p); /*释放为已删除节点分配的内存*/
}
else /*没有找到待删除节点*/
{
printf("This Node has not been found!\n");
}
return head; /*返回删除节点后的链表的头节点指针*/
}
STU *SearchNode(STU *head, int nodeNum)
{
STU *p = head;
int j = 1;
while (p != NULL) /*若不是表尾,则循环*/
{
if (p->number == nodeNum) return p;
p = p->next; /*让p指向下一个节点*/
j++;
}
return NULL;
}
void DeleteMemory(STU *head)
{
STU *p = head, *pr = NULL;
while (p != NULL) /*若不是表尾,则释放节点占用的内存*/
{
pr = p; /*在pr中保存当前节点的指针*/
p = p->next; /*让p指向下一个节点*/
free(pr); /*释放pr指向的当前节点占用的内存*/
}
}
凑合着用吧,一些缺少的功能自己加上去就行了。。。
Ⅶ 《数据库系统》课程设计实例(2
新华社北京12月12日电按照中央国家机关房改方案,住房补贴是补给1998年12月31日前参加工作且住房未达标或无房的老职工,以及1999年1月1日后参加工作的新职工。这部分补贴并不直接发到职工手里,而是参照住房公积金的管理方式计入职工个人账户,专项用于住房消费。
住房补贴包括两部分,即一次性发放的住房补贴和月住房补贴。其中月住房补贴只补给无房老职工和新职工。住房补贴数额与职工工龄、职务和建立住房公积金时间密切相关。
按照方案,无房老职工住房补贴采取一次性发放和按月发放相结合。一次性发放的住房补贴额=月均标准工资×月住房补贴系数×1998年底前的工作月之和+年度工龄补贴额×建立住房公积金制度前的工龄×购房补贴建筑面积标准;按月发放的住房补贴=当月标准工资×月住房补贴系数。
新职工按月住房补贴与无房老职工按月住房补贴计算公式一致。
住房未达标的老职工,差额面积由所在单位一次性计发差额补贴。差额补贴=(年度基准补贴额+年度工龄补贴额×建立住房公积金前的工龄)×差额面积。
已有住房的公务员职务晋升、工勤人员晋升技术等级,将获得一次性发放的级差补贴。级差补贴=(届时基准补贴额+届时工龄补贴额×建立住房公积金前的工龄)×级差面积。
据了解,2000年度工龄补贴额为13元,年度基准补贴额为1265元,月住房补贴系数为0.66,与去年一致。以一位到1998年已工作10年的副处级无房职工为例,副处级购房补贴建筑面积标准为80平方米,如果单位在1997年设立住房公积金,而他每月的标准工资为600元。按公式计算:他应获得的一次性住房补贴额为(600×0.66×120)+(13×9×80)=56880元;每月的住房补贴为600×0.66=396元。还以这位职工为例,如果他现有住房建筑面积只有60平方米,而其他参数不变,按照公式计算,他应获得的差额补贴=(1265+13×9)×20=27640元。
据了解,国家公务员购房补贴建筑面积标准为科级以下60平方米,正、副科级70平方米,副处级80平方米,正处级90平方米,副司(局)级105平方米,正司(局)级120平方米。
机关工勤人员补贴建筑面积标准为初、中级技术工人和25年以下工龄的普遍工人60平方米,高级技术工人、技师和25年以上工龄的普遍工人70平方米,高级技师80平方米。