- 题目概述
- 设计教师工资调整程序
- 数据流图
- 需求分析
- 1、任务概述
- 2、数据描述
- 3、功能需求
- 算法设计
- 针对算法设计作出HIPO图
- 程序源码分析及运行结果展示
- python程序源码分析
- 运行结果展示
- 总结
美国某大学共有200名教师,校方与教师工会刚刚签订一项协议。按照协议,所有年工资超过$26000含$26000的教师工资将保持不变,年工资少于$26000的教师将增加工资,所增加的工资数按下述方法计算:给每个由此教师所赡养的人(包括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助$50,但是,增加后的年工资总额不能多于$26000。
教师的工资档案储存在行政办公室的光盘上,档案中有目前的年工资、赡养人数、雇用日期等信息。需要写一个程序计算并印出每名教师的原有工资和调整后的新工资。
对于年工资未超过$26000的教师涨工资,即每赡养一人补助$100,每有一年工龄补助$50,涨工资的上限为$26000。
2、数据描述数据库采用教师工资表。
3、功能需求(1)获取教师当前工资、获取赡养人数、获取工龄、更新教师信息。
(2)计算工资、根据限额确定工资。
(3)排序、查询
(4)打印报表打印工资对照单。
搜索工资档案数据,找出年工资少于$26000的人,计算新工资,校核是否超过$26000,储存新工资,印出新旧工资对照表。
针对算法设计作出HIPO图 程序源码分析及运行结果展示 python程序源码分析import pandas as pd#引入pandas库
from datetime import datetime#引入datetime库
def sal():
#使用pd.read_excel来读取教师工资表
#使用index_col = 0来指定第一列为行索引
df = pd.read_excel('C:/Users/admin/Desktop/teacherSal.xlsx', index_col = 0)
print(df)
#通过pandas库中的Dataframe()来创建一个空的excel表,这个表的字段有两个(分别是‘原教师工资’和‘现教师工资’)
df1 = pd.Dataframe(columns = ['原教师年工资'] + ['现教师年工资'])
for i in range(1,201):
#df.loc[]获取某行某列的值
#loc只支持使用表格行列索引,不能用内置数字索引
if df.loc[i, '教师年工资'] >= 26000:
sal = df.loc[i, '教师年工资']
else:
#datetime.now()表示系统本地时间
working_age = int((datetime.now() - df.loc[i, '雇佣日期']).days / 365.0)
sal = df.loc[i, '教师年工资'] + df.loc[i, '赡养人数'] * 100 + working_age * 50
if sal > 26000:
sal = 26000
df1.loc[i, '原教师年工资'] = df.loc[i, '教师年工资']
df1.loc[i, '现教师年工资'] = sal
#将df1内的数据写入调整后的工资表中
df1.to_excel('C:/Users/admin/Desktop/adjustSal.xlsx')
#读取调整后工资表内的数据,指定第一列为行索引
df1 = pd.read_excel('C:/Users/admin/Desktop/adjustSal.xlsx', index_col = 0)
print(df1)
if __name__ == '__main__':
sal()
运行结果展示
总结
1、学会了使用python内的pandas库来读取excel表格内的数据
2、我们可以使用pd.read_excel(‘excel-path’)来读取教师工资表(PS:excel-path指的是excel表存放的路径),另外还能在pd.read_excel()内添加参数index_col = 0来指定第一列为行索引,也即为pd.read_excel(‘file-path’, index-col = 0)
3、学会了使用pd.Dataframe()来创建一个表,如:df = pd.Dataframe(data=None, index=None, columns=None, dtype=None, copy=None)
参数data:表示要传入的数据,包括ndarray,series,map,lists,dict,constant和另一个Dataframe。
参数index:行索引,若不手动赋值,将默认从0开始分配。格式为[’ x1’, ‘x2 ‘]
参数columns:列索引,若不手动赋值,将默认从0开始分配。格式为[’ x1’, 'x2 ']
参数dtype:每列的类型。
参数copy:可以写false或者true。从input输入中拷贝数据,默认是false,不拷贝。
如果想要创建一个空表,可以只写行索引和列索引,或者只写列索引。
4、获取表格中某行某列的元素值:
df.iloc[i, j]:i表示行序,j表示列序。按序值返回元素。
df.loc[行索引,列索引]:按索引返回元素。
5、python中的datetime库中的datetime.now()表示系统本地时间
6、把数据写入到表格中:使用data.to_excel(‘excel-path’)。



