《程序设计课程设计》设计职工信息管理系统

上传人:无*** 文档编号:41034041 上传时间:2021-11-18 格式:DOC 页数:19 大小:127KB
返回 下载 相关 举报
《程序设计课程设计》设计职工信息管理系统_第1页
第1页 / 共19页
《程序设计课程设计》设计职工信息管理系统_第2页
第2页 / 共19页
《程序设计课程设计》设计职工信息管理系统_第3页
第3页 / 共19页
点击查看更多>>
资源描述
程序设计课程设计设计说明书 题目: 职工信息管理系统 班级: 1301 专业: 计算机科学与技术 学号: * 姓名: * 上课老师: 张 桂 珠 评定成绩: 日期: 2014.5.31题目: 职工信息管理系统设计要求: 1、要求: 课程设计要求采用面向对象系统分析与设计方法,首先对问题进行需求分析,识别类与对象,设计合理的类结构与程序结构实现程序功能(恰当应用教材所介绍的各种数据结构和算法),用c+语言编写程序;然后设计各种可能的数据(测试对象)对程序进行测试,观察运行结果是否正确,确保在可见范围内的测试对象都能得到正确结果。设计合理的程序完成题目要求的功能,输入输出信息时注意输入输出的格式,应该在输入前提示输入的格式和内容;将程序的各项信息保存到文件并能打开,用c+的输入输出流实现。 2、题目内容: 该系统在磁盘上存储某单位所有职工的基本信息,对于每一个职工存储:职工编号、姓名、性别、出生年月、职称、最后学历、工资和婚否。 系统功能要求如下: (1)创建存储该单位职工信息的存储系统(第一次输入职工基本信息时); (2)增加职工信息,增加新职工时输入新职工的基本信息; (3)删除某职工的基本信息(如,死亡或离职); (4)修改某职工(指定职工编号)的某些信息(如,加工资、获得新学位、晋升职称、结婚或离婚)。 (5)可以输出符合某种特征的职工信息列表: 全体职工信息列表; 某职称的职工信息列表; 某年月以后出生的职工信息列表; 某年月以前出生的职工信息列表;未婚职工信息列表。 3、开发环境: Code:Blocks 10.05设计思路:1、定义结构体birth存储年月日数据,再定义结构体worker存储职工的数据。2、定义类operate,它包含3个私有数据成员 1、职工数据worker aHUMAN_NUMBER, 2、已存数据长度lengh, 3、a的总体长度siae,3、类中包含19公有函数: 1、void set_first();对所有数据的初始化函数, 2、void cin_all();全体数据输入函数, 3、void cout_all();全体数据输出函数, 4、void cout_one(int i);一个职工数据的输出函数, 5、void elete_one();一个职工数据的删除函数, 6、void add_one();一个职工数据的添加函数, 7、void cout_after_time();输出在某个时间后出生的所有职工数据函数, 8、void cout_before_time();输出在某个时间前出生的所有职工数据函数, 9、void cout_position();输出某个职称的所有的职工数据函数, 10、void cout_ifmarry();输出所有未婚的职工数据函数, 11、void change_salary();改变某个职工的工资函数, 12、void change_educate();改变某个职工的最高学历函数, 13、void change_marry();改变某个职工的婚姻状态函数, 14、void change_position();改变某个职工职称函数, 15、void chang_lengh(int i);改变类中的数据长度lengh函数, 16、void amend();修改职工数据的函数,包含了11,12,13,14,这4个函数,通过显示操作类型,选择读取11,12,13,14中某个或多个函数,退出操作室对出该函数, 17、void output();输出职工数据函数,包含了7,8,9,10,这4个函数,通过显示操作类型,选择读取7,8,9,10中某个或多个函数,退出操作室对出该函数, 18、void save();将职工数据存储在已定义文件中函数, 19、int load_data();将已存储在文件中的数据读取进入程序中来函数,4、 在main()函数中,定义类worker的对象man, 1、第一部分操作:显示可以对对象man进行的操作(读取,创建,退出)和对输入的操作进行读取判断,选择调用函数cin_all(),loat_data()或退出(退出创建过程)。 2、第二部分操作:显示可以对对象man进行的操作(添加,删除,修改,输出,退出),对输入的操作的判断进行读取判断,选择调用函数add_one(),delete_one(),amend(),out_put()或退出(退出系统)。程序代码:#include #include #include #include#define true 1#define flase 0#define HUMAN_NUMBER 50#define ADD 10using namespace std;/出生日期储存typedef struct int year; int month; int day;birth;/职工数据储存typedef struct long number;/职工编号 string name;/姓名 string sex;/性别 birth birthday;/出生年月 string position;/职称 string educate;/最后学历 float salary;/工资 int marry;/婚否worker;/储存系统class operateprivate: worker aHUMAN_NUMBER; int lengh; int size;public: void set_first(); void cin_all(); void cout_all(); void cout_one(int i); void delete_one(); void add_one(); void cout_after_time(); void cout_before_time(); void cout_position(); void cout_ifmarry(); void change_salary(); void change_educate(); void change_marry(); void change_position(); void chang_lengh(int i); void amend(); void output(); void save(); int load_data();/第一次建立void operate:set_first() for(int j=0;j!=HUMAN_NUMBER-1;j+) aj.birthday.year=0; aj.birthday.month=0; aj.birthday.day=0; aj.educate=未知; aj.marry=0; aj.name=未知; aj.number=0; aj.position=未知; aj.salary=0; aj.sex=未知; a0.number=0; lengh=0; size=HUMAN_NUMBER;/第一次所有数据输入void operate:cin_all() cout输入(编号为负时结束)endl; int i=lengh; for(;isize;i+) coutai.number; if(ai.number0) cout职工数据输入完成。endl; break; coutai.name; coutai.sex; cout 出生日期: endl;coutai.birthday.year;coutai.birthday.month;coutai.birthday.day; coutai.position; coutai.educate; coutai.salary; coutai.marry; coutendl; system(cls); cout输入(编号为负时结束)endl; lengh=i; ai.number=-1; save();/输出所有数据void operate:cout_all() coutendl输出所有职工数据:endl; for(int i=0;ilengh;i+) if(ai.number=0) break; cout 职工编号:ai.numberendl; cout 姓名:ai.nameendl; cout 性别:ai.sexendl; cout 出生年月:ai.birthday.year.ai.birthday.month.ai.birthday.dayendl; cout 职称:ai.positionendl; cout 最后学历:ai.educateendl; cout 工资:ai.salaryendl; cout=0) cout结婚endlendl; else cout未婚endlendl; coutendlendl;/输出一个职工数据void operate:cout_one(int i) cout 职工编号:ai.numberendl; cout 姓名:ai.nameendl; cout 性别:ai.sexendl; cout 出生年月:ai.birthday.year.ai.birthday.month.ai.birthday.dayendl; cout 职称:ai.positionendl; cout 最后学历:ai.educateendl; cout 工资:ai.salaryendl; cout=0) cout结婚endl; else cout未婚endl; coutendlendl;/输出一个时间出生后的职工数据void operate:cout_after_time() system(cls); birth t; cout输入要求在某个时间出生以后的职工的那个时间:; cout出生日期: endlt.year;coutt.month;coutt.day; int s=0; for(int i=0;it.year) if(s=0) cout输出在时间t.year年t.month月t.day以后出生的职工数据:t.month) if(s=0) cout输出在时间t.year年t.month月t.day以后出生的职工数据:t.day) if(s=0) cout输出在时间t.year年t.month月t.day以后出生的职工数据:endl; cout_one(i); s+; if(ai+1.number=0) break; if(s=0) cout 没有在t.year:t.month:t.day以后出生的职工.endlendl;/输出一个时间出生前的职工数据void operate:cout_before_time() system(cls); birth t; cout输入要求在某个时间出生以前的职工的那个时间:; cout出生日期: endlt.year;coutt.month;coutt.day; int s=0; for(int i=0;ilengh;i+) if(ai.birthday.yeart.year) if(s=0) cout输出在时间t.year年t.month月t.day以前出生的职工数据:endl; cout_one(i); s+; else if(ai.birthday.year=t.year) if(ai.birthday.montht.month) if(s=0) cout输出在时间t.year年t.month月t.day以前出生的职工数据:endl; cout_one(i); s+; else if(ai.birthday.month=t.month) if(ai.birthday.dayt.day) if(s=0) cout输出在时间t.year年t.month月t.day以前出生的职工数据:endl; cout_one(i); s+; if(ai+1.number=0) break; if(s=0) cout 没有在t.year:t.month:t.day以前出生的职工.endlendl;/输出某个职称的职工数据void operate:cout_position() system(cls); int s=0;string p; cout输入要求的职称:p; cout输出职称为p的职工数据0;j+) if(aj.position=p) cout_one(j); s+; if(s=0) cout没有职称为p的职工endlendl; else return;/输出没有结婚的职工数据void operate:cout_ifmarry() system(cls); cout输出所有未婚的职工数据:endl; int s=0; for(int i=0;i=lengh;i+)if(ai.number=0)break; if(ai.marry0) cout_one(i); s+; if(s=0) cout没有未婚的职工endl; /删除某个职工数据void operate:delete_one() int i=0,n; system(cls); coutn; for(;ilengh;i+) if(ai.number=n) break; if(i=lengh) cout没有编号为n的职工.0;i+) ai=ai+1; save(); lengh-; coutendl; system(cls); cout编号为n的职工的数据已删除.endl; /增加一个职工数据void operate:add_one() cout输入要添加的职工数据:endl; int i=0; for(;i50;i+) if(ai.number=0) break; coutai.number; coutai.name; coutai.sex; cout 出生日期: endl; coutai.birthday.year; coutai.birthday.month; coutai.birthday.day; coutai.position; coutai.educate; coutai.salary; coutai.marry; coutendl; save(); system(cls); cout添加的职工数据:endl; cout 职工编号:ai.numberendl; cout 姓名:ai.nameendl; cout 性别:ai.sexendl; cout 出生年月:ai.birthday.year.ai.birthday.month.alengh.birthday.dayendl; cout 最后学历:ai.educateendl; cout 工资:ai.salaryendl; cout=0) cout结婚endl; else cout未婚endl; coutendlendl; lengh+; coutendl;/修改工资void operate:chang_lengh(int i) lengh=i;void operate:change_salary() system(cls); cout输入要修改工资的职工编号:num; int x=0; for(;xlengh;x+) if(ax.number=num) break; system(cls); if(x=lengh) cout没有编号为num的职工endlendl; else cout输入职工num修改后的工资:ax.salary; cout职工num的工资被修改为:ax.salaryendlendl; /修改学位void operate:change_educate() system(cls); cout输入要修改学位的职工编号:num; int x=0; for(;xlengh;x+) if(ax.number=num) break; system(cls); if(x=lengh) cout没有编号为num的职工endl; else cout输入职工num修改后的学位:endlax.educate; cout职工num的学位被修改为:ax.educateendlendl; /修改结婚状态void operate:change_marry() system(cls); cout输入要修改婚姻的职工编号:num; int x=0; for(;xlengh;x+) if(ax.number=num) break; system(cls); if(x=lengh) cout没有编号为num的职工endl0) cout编号为num的职工婚姻状态改为未婚endlendl; ax.marry=-1; else cout编号为num的职工婚姻状态改为已婚endlendl; ax.marry=1;/修改职称void operate:change_position() system(cls); cout输入要修改职称的职工编号:num; int x=0; for(;xlengh;x+) if(ax.number=num) break; system(cls); if(x=lengh) cout没有编号为num的职工endlendl; else cout输入职工num修改后的职称:ax.position; cout职工num的职称被修改为:ax.positionendlendl; /写入文件void operate:save()ofstream file(F:c+实验data.txt,ios_base:out|ios_base:trunc); for(int i=0;ilengh;i+) if(ai.number=0) break; fileai.number ; fileai.name ; fileai.sex ; fileai.birthday.year ai.birthday.month ai.birthday.day ; fileai.position ; fileai.educate ; fileai.salary ; fileai.marry endl; file.close();/读写文件int operate:load_data() int i=0; ifstream file(F:c+实验data.txt);for(;ai-1.number=0|iai.number;fileai.name;fileai.sex;fileai.birthday.yearai.birthday.monthai.birthday.day;fileai.position;fileai.educate;fileai.salary;fileai.marry;lengh=i;file.close();system(cls);cout读取成功。endlendl;return 1;void operate:amend() int in;int key=1; system(cls); while(key) cout输入要修改的职工项目(输入数字):endl 1,退出(退出修改函数)、endl 2,职称, endl 3,最后学历,endl 4,工资,endl 5,婚姻in; switch(in) case 1: key=0;break; case 2: change_position(); save();break; case 3: change_educate(); save();break; case 4: change_salary(); save();break; case 5: change_marry(); save();break; default: cout输入错误,请重新输入.endl;break; system(cls);void operate:output() int in;int key=1; system(cls); while(key) cout输入要输出的对象(输入数字代号):endl 1、全体职工信息表 endl 2、某职称的职工信息表endl 3、某年月以后出生的职工信息表 endl 4、某年月以前出生的职工信息表endl 5、未婚职工信息表,endl 6、退出(退出输出函数)in; switch(in) case 1: system(cls); cout_all();break; case 2: cout_position();break; case 3: cout_after_time();break; case 4: cout_before_time();break; case 5: cout_ifmarry();break; case 6: key=0; system(cls);break; default: cout输入错误,请重新输入.endl;break; int main() operate man;int in;int key=1,i=0; man.set_first(); while(key) cout输入操作(输入数字):endl 1、退出(退出创建系统,进入操作系统)endl 2、创建(第一次输入职工基本信息,创建后不再读取。)endl 3、读取(读取文件中的数据,读取后不再创建。)in; switch(in) case 1: key=0;break; case 2: man.cin_all(); man.save();break; case 3: man.load_data();break; default: cout输入错误,请重新输入.endl;break; system(cls); key=1; while(key)cout请输入想要进行的操作(输入数字):endl 1,退出(退出系统)、 endl 2,添加一个职工数据 endl 3,删除一个职工数据endl 4,修改某个职工的数据 endl 5,输出in;switch(in) case 1: key=0; cout退出系统,谢谢使用该系统。;break;case 2: man.add_one();man.save();break; case 3: man.delete_one();man.save();break; case 4: man.amend();break; case 5: man.output();break; default: cout输入错误,请重新输入.endl;break; return 0;运行结果: 1、读取已储存在文件的数据: 2、对数据进行添加,删除、修改和输出: 3、输出的想要输出的对象: 4、输出所有对象的数据: 5、退出职工系统:安装使用说明:所有的操作都必须输入数字、根据显示屏的显示进行操作。在开发过程中所遇到的问题及其解决办法: 1、数据第一次初始化时,结构体中每个数据的类型未做好。解决办法:重新对结构体worker中的数据的类型进行定义。 2、在功能(4)修改某职工(指定职工编号)的某些信息的程序编写时,对a中的编号理解错误,导致修改数据的不成功。解决办法:再定义一个用来保存a中的数组编号,而用num保存输入的职工编号数据。 3、屏幕上数据太多显示非常繁琐。解决办法:在网上查找刷屏函数system(“cls”)并了解其使用方法 4、对显示界面的刷屏函数使用时出现了显示屏没有操作指令的情况。解决办法:重新对所有的的刷屏函数进行排列和增添对显示屏上输出。小结:在这个职工管理系统中,从最开始的结构体的编写,到最后的程序调试,都是慢慢的进行的,思路很清晰。在编写过程中对程序进行了很多的改变和结构的调节。像程序中的刷屏函数,文件的读取,写入函数等都是通过网络的查找,从而对其有了更好的了解,才能将其写入这个程序中。代码长度越大,写代码的时候的越要有很清晰的思路和所有函数之间的数据类型的兼容。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!