第一篇:【课程设计】职工信息管理系统
题目:职工信息系统
功能包括:
建立职工信息数据(职工编号,姓名,性别,年龄,电话,职务,工资和家庭成员信息)和信息简表(编号,姓名,电话) 根据职工编号查询职工信息(查询时需要身份确认。单位领导和人事秘书可以看到职工所有信息;财务处人员可以看到职工编号,姓名,性别,年龄,电话,工资;一般职工仅能查到信息简表) 增加新职工信息(由人事秘书完成,需要身份确认) 删除职工信息(由人事秘书完成,需要身份确认) 修改职工工资(由财务处人员完成,需要身份确认) 要求所有信息能够存储在文件中,并具有良好的用户界面
#include
//ct用来储存文件中数据组数,Admin用来储存登陆后该用户的权限,//na用来储存登录所输的编号,方便主菜单内使用其显示当前用户
void hline(int);inline void eatline(){while(cin.get()!='n')continue;} class staff {/*职工编号,姓名,性别,年龄,职务,电话,工资和家庭成员信息*/ public:
};void staff::printf()
//输出的选择,判断其职务,选择调用哪个输出 { if(Admin==1||Admin==2)printf1();else int num;char name[LIM],sex[3];int age;char job[10],phone[15];double wages;char home[20];int admin;void printf();void printf1();void printf2();void printf3();
}
if(Admin==3)printf2();else printf3();void staff::printf1()
//领导及人事秘书能见的输出 {
} void staff::printf2()
//财务人员能见的输出 {
} void staff::printf3()
//普通员工能见的输出 { cout<
switch(n){ case 1:{cout< < };break;case 2:{cout< };break;case 3:{cout< } } < };break;void menu() //主菜单 { cout<<“t╔╤╤╤╤╤╤职工编号: ”< //二级菜单 { cout<<“t╔╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤┐”< //登陆的实现部分 { cout<<“t┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┓”< int w=0;while(!(cin>>na)){ cin.clear();while(cin.get()!='n')continue;cout<<“输入有误,编号为一串数字,请重新输入:n”; for(int i=1;i<=ct;i++)} fstream find;find.open(file,ios_base::in|ios_base::out|ios_base::binary);eatline();staff stu; { streampos place =(i-1)* sizeof stu;find.seekp(place);if(find.fail()){ cerr << “■查找出错!程序将退出!■n”;system(“pause”); exit(EXIT_FAILURE); } find.read((char *)&stu, sizeof stu);if(stu.num==na){ } w=1;Admin=stu.admin;} if(w==0){cout<<“t┣╋**登录失败!未找到相应的信息!程序将退出**╋┫”< } int stu_num() //计算数据组数 { } staff stu;ifstream stunum;stunum.open(file,ios_base::in|ios_base::binary);if(stunum.is_open()){ } stunum.close();return ct;stunum.seekg(0);while(stunum.read((char *)&stu,sizeof stu))ct++;system(“pause”);system(“cls”);void setadmin(staff &stu,char jobs[10]) //增加职工时根据职务设置权限 { char job1[10]=“总经理”;char job2[10]=“副总经理”;char job3[10]=“人事秘书”;char job4[10]=“财务人员”; } void add() // 输入数据的函数,增加职工 { if(Admin==2){ staff stu;if((!strcmp(stu.job,job1))||(!strcmp(stu.job,job2)))stu.admin=1;else if(!strcmp(stu.job,job3))stu.admin=2;else if(!strcmp(stu.job,job4))stu.admin=3; ofstream fout(file, ios_base::out | ios_base::app | ios_base::binary); if(!fout.is_open()) { cerr << “不能打开 ” << file << “ 文件:n”; exit(EXIT_FAILURE); } cout << “★增加职员信息★请输入职工姓名:(按Enter键退出输入!):n”;eatline(); cin.get(stu.name, LIM); while(stu.name[0]!= ' ') { cout << “★增加职员信息★请输入职工编号:”; cin>>stu.num;cout << “★增加职员信息★请输入职工性别:”;eatline();cin.get(stu.sex, 3);cout << “★增加职员信息★请输入职工年龄:”;cin>>stu.age; cout << “★增加职员信息★请输入职工职务:”;eatline();cin.get(stu.job, 10); cout << “★增加职员信息★请输入职工电话:”;eatline(); cin.get(stu.phone, 15); cout << “★增加职员信息★请输入职工工资:”;cin>>stu.wages; cout << “★增加职员信息★请输入职工家庭信息:(按Enter键退出输入!):n”; eatline(); cin.get(stu.home, 20);setadmin(stu,stu.job); fout.write((char *)&stu, sizeof stu);cout << “■增加职员信息■请输入职工姓名:(按Enter键退出输入!):n”; eatline();cin.get(stu.name,LIM); } fout.close(); } else cout<<“******************无权限,请与人事部秘书联系*******************************”< void output() //输出全部职工信息的函数 { staff stu; } ifstream find;find.open(file,ios_base::in|ios_base::binary);hline(1);while(find.read((char *)&stu,sizeof stu)){ cout< < //修改数据函数 { if(Admin==3){ fstream change; int w=0;staff stu;streampos place; change.open(file,ios_base::in|ios_base::out|ios_base::binary);if(change.eof())change.clear(); //清除EOF cout<<“请输入你要修改的职员编号:”< place =i* sizeof stu;change.seekg(place);if(change.fail()){ cerr << “■查找出错!程序将退出!■n”;system(“pause”); exit(EXIT_FAILURE); } change.read((char *)&stu, sizeof stu);if(stu.num==rec){ } w=1; cout << “你选择的是:n”;stu.printf2();break; } if(w==1){ cout << “请输入你要修改职员的工资: ”;while(cin >> stu.wages){ if(stu.wages<0||stu.wages>100000) { cout<<“■输入的工资错误!请重新输入:■ cin.clear(); while(cin.get()!='n'); continue; } break;} change.seekp(place); // 回到查找到的地点 change.write((char *)&stu, sizeof stu)<< flush;if(change.fail()){ cerr << ”■--查找失败!程序将退出--■n“;system(”pause“); n”; } exit(EXIT_FAILURE);} change.close();cout<<“★---修改成功!---★”< void del() //删除指定编号的职工信息 { if(Admin==2){ while(1){ eatline();int delnum;cout<<“请输入你要删除的职工的编号:n”; cin>>delnum;fstream in;in.open(“staff.dat”,ios_base::in|ios_base::binary);if(!in){ cout<<“打开失败”;return;} fstream temp;temp.open(“temp.dat”,ios_base::out|ios_base::binary);staff stu;int q;in.read((char*)&stu,sizeof(stu));while(!in.eof())//将文件内容修改后临时寸到另一个文件中 { } in.close();temp.close();//修改完成,将原文件清空,并将临时文件内容q=0;if(stu.num==delnum){ } if(q==0)temp.write((char*)&stu,sizeof(stu));in.read((char*)&stu,sizeof(stu));q=1;复制回原文件 中 } { out.write((char*)&stu,sizeof(stu));temp.read((char*)&stu,sizeof(stu));out.open(“staff.dat”,ios_base::out|ios_base::trunc|ios_base::binary);temp.read((char*)&stu,sizeof(stu));while(!temp.eof())//将文件内容修改后临时寸到另一个文件 temp.open(“temp.dat”,ios_base::in|ios_base::binary);if(!temp){ cout<<“打开失败”;return;} ofstream out;}//完成复制 out.close();temp.close(); cout<<“删除成功!t是否继续删除?y/nn”;char x;cin>>x;if(!(x=='y'||x=='Y'))break;} else cout<<“****************无权限,请与人事部秘书联系*****************************”< void find() //查找职工的实现部分 { while(1){ menu2();//eatline();int a;int w=0;cin>>a;int na;char sna[LIM];fstream find;find.open(file,ios_base::in|ios_base::out|ios_base::binary);eatline();staff stu;switch(a){ case 1:cout<<“请输入职工编号:”< case 2:cout<<“请输入职工姓名:”< if(Admin==1||Admin==2)output();else cout<<“**************无权限,请与单位领导或人事部秘书联系********************”< }break;default:{ } for(int i=1;i<=ct;i++){ streampos place =(i-1)* sizeof stu;find.seekp(place);if(find.fail()){ cout<<“■选择执行的操作错误!■n”;cin.clear();while(cin.get()!='n');continue;} cerr << “■查找出错!程序将退出!■n”;system(“pause”); exit(EXIT_FAILURE);} find.read((char *)&stu, sizeof stu);switch(a){ case 1:if(stu.num==na){ w=1; stu.printf();};break;case 2:if(!strcmp(stu.name,sna)) { w=1; stu.printf(); };break;case 3:break;default:{ cout<<“■选择执行的操作错误!■ cin.clear(); while(cin.get()!='n');continue; } } } n”; } if(w==0)cout<<“■未找到此人!■”< 职工所有信息;财务处人员可以看到职工编号,姓名,性别,年龄,电话,工资;一般职工仅能查到信 息简表) 增加新职工信息(由人事秘书完成,需要身份确认) 删除职工信息(由人事秘书完成,需要身份确认) 修改职工工资(由财务处人员完成,需要身份确认) 要求所有信息能够存储在文件中,并具有良好的用户界面 */ int main(){ system(“color 6F”);ifstream fin;fin.open(file,ios_base::in|ios_base::binary);if(!fin.is_open()){ staff st[5]={ {10001,“张三”,“男”,35,“总经理”,“***”,20000,“父母,弟弟,姐姐”,1},{10002,“李四”,“男”,32,“副总经理”,“***”,12000,“父母,兄长”,1},{10003,“ 王 婷 ”,“ 女 ”,25,“ 人 事 秘 书”,“***”,10000,“---略---”,2},{10004,“陈六”,“女”,25,“财务人员”,“***”,8000,“---略---”,3},{10005,“Obama”,“ 男 ”,23,“ 普 通 职 工”,“***5”,7000,“---略---”,0}};ofstream fout(file,ios_base::out|ios_base::binary); for(int i=0;i<5;i++)fout.write((char *)&st[i],sizeof st[i]);fout.close();} fin.close();stu_num();loading();while(1){ menu();cout<<“请输入你要选择的操作: char n;cin>>n;switch(n){ case '1':eatline();find();break;case '2':add();break;case '3':del();break;case '4':change();break;case '5':exit(EXIT_FAILURE); n ”; default:{ cout<<“■选择执行的操作错误!■n”; cin.clear(); while(cin.get()!='n'); continue;} 清除已经输入的内容,程序选择 } system(“pause”); system(“cls”); cin.clear();} return 0;} //如果选择错误,cin.clear等语句 职工信息管理系统设计报告(VB)编号:22 职工信息管理系统 设计报告 学院 土木工程 班级 测绘C111 学号 117551 姓名 马骁飞 成绩 一、设计思路 1.要达到的目的 培养学生综合利用VB语言进行程序设计的能力,主要是培养学生综合使用基本控件的、文件读写、数组操作等能力。 利用读取数据按钮,打开选中的数据文件职工.txt,并从该文件中读取职工职工号、姓名、职称和工资,保存在数组中,并显示在文本框中。 清除文本框中的职工的信息。 在文本框中显示职工的信息。 按照职工号查询职工信息,并显示。 按照姓名查询职工信息,并显示。 按照职工号修改职工信息,并显示。 按照姓名修改职工信息,并显示。 追加一条记录数据,并显示。2.关键问题的解决 (1)通过“读取数据”按钮应能利用应能利用右侧图示样式窗体形式,打开选中的数据文件职工.txt,并从该文件中读取职工职工号、姓名、职称和工资,保存在数组中,并显示在文本框中。(2)通过“清除数据”按钮应能清除文本框中的内容。(3)从“按职工号查询”按钮左端文本框输入职工号,单击“按职工号查询”,在窗体大的文本框中显示查询结果。从“按姓名查询”按钮左端文本框输入姓名,单击“按姓名查询”按钮,在窗体大的文本框中显示查询结果。(4)从“按职工号修改”(“按姓名修改”)按钮,在输入对话框中输入职工号,对查询到的职工的职工号(姓名)进行修改,在窗体大的文本框中显示修改结果。 从输入一条记录后文本框中输入一条记录信息,单击“追加数据并显示结果”按钮,添加到职工.txt中,并将追加数据后职工.txt的信息显示窗体的大文本框中。 二、部分程序关键源代码及注释 rivate Sub Command1_Click()Form2.Show End Sub Private Sub Command2_Click() 职工信息管理系统设计报告(VB)编号:22 List1.Clear End Sub Private Sub Command3_Click()e = True Unload Me End Sub Private Sub Command4_Click()List1.Clear If Text3.Text = “117001” Then List1.AddItem “张三 117001” ElseIf Text3.Text = “117002” Then List1.AddItem “李四 117002” ElseIf Text3.Text = “117003” Then List1.AddItem “王五 117003” ElseIf Text3.Text = “117004” Then List1.AddItem “王六 117004” ElseIf Text3.Text = “117005” Then List1.AddItem “赵七 117005” ElseIf Text3.Text = “117006” Then List1.AddItem “李八 117006” ElseIf Text3.Text = “117007” Then List1.AddItem “刘九 117007” ElseIf Text3.Text = “117008” Then List1.AddItem “马十 117008” Else: MsgBox “请输入正确的职工号” End If 职工信息管理系统设计报告(VB)编号:22 End Sub Private Sub Command5_Click()Dim a As String Dim b As String b = InputBox(“请输入要修改的职工的职工号”)a = InputBox(“请输入新的职工姓名”) If b = “117001” Then List1.AddItem a & “ ” & b ElseIf b = “117002” Then List1.AddItem a & “ ” & b ElseIf b = “117003” Then List1.AddItem a & “ ” & b ElseIf b = “117004” Then List1.AddItem a & “ ” & b ElseIf b = “117005” Then List1.AddItem a & “ ” & b ElseIf b = “117006” Then List1.AddItem a & “ ” & b ElseIf b = “117007” Then List1.AddItem a & “ ” & b ElseIf b = “117008” Then List1.AddItem a & “ ” & b Else: MsgBox “请输入正确的职工号” End If List1.AddItem a & “ ” & b End Sub 职工信息管理系统设计报告(VB)编号:22 Private Sub Command6_Click()List1.Clear If Text2.Text = “张三” Then List1.AddItem “张三 117001” ElseIf Text2.Text = “李四” Then List1.AddItem “李四 117002” ElseIf Text2.Text = “王五” Then List1.AddItem “王五 117003” ElseIf Text2.Text = “王六” Then List1.AddItem “王六 117004” ElseIf Text2.Text = “赵七” Then List1.AddItem “赵七 117005” ElseIf Text2.Text = “李八” Then List1.AddItem “李八 117006” ElseIf Text2.Text = “刘九” Then List1.AddItem “刘九 117007” ElseIf Text2.Text = “马十” Then List1.AddItem “马十 117008” Else: MsgBox “请输入正确的职工姓名” End If End Sub Private Sub Command7_Click()Dim a As String Dim b As String a = InputBox(“请输入要修改的职工姓名”)b = Str(InputBox(“请输入新职工号”)) If a = “张三” Then List1.AddItem a & “ ” & b 职工信息管理系统设计报告(VB)编号:22 ElseIf a = “李四” Then List1.AddItem a & “ ” & b ElseIf a = “王五” Then List1.AddItem a & “ ” & b ElseIf a = “王六” Then List1.AddItem a & “ ” & b ElseIf a = “赵七” Then List1.AddItem a & “ ” & b ElseIf a = “李八” Then List1.AddItem a & “ ” & b ElseIf a = “刘九” Then List1.AddItem a & “ ” & b ElseIf a = “马十” Then List1.AddItem a & “ ” & b Else: MsgBox “请输入正确的职工姓名” End If End Sub Private Sub Command8_Click()Dim a As String Dim b As String a = InputBox(“请输入新员工姓名”)b = InputBox(“请输入新员工的职工号”) List1.AddItem a & “ ” & b End Sub Private Sub Combo2_Change()Select Case Comb2.Text 职工信息管理系统设计报告(VB)编号:22 Case “*.txt” File1.Pattern = “*.txt” Case “*.ini” File1.Pattern = “*.ini” Case “*.doc” File1.Pattern = “*.doc” Case “*.*” File1.Pattern = “*.*” End Select End Sub Private Sub Command1_Click()Dim fileno As Integer, strl As String fileno = FreeFile Open “职工信息.txt” For Input As #fileno i = 0 Do While Not EOF(fileno)Input #fileno, str1 Form1.List1.AddItem str1 i = i + 1 Loop Close #fileno Form1.Show Me.Hide End Sub Private Sub Command2_Click()Form1.Show End Sub 职工信息管理系统设计报告(VB)编号:22 Private Sub Drive1_Change()Dir1.Path = Drive1.Drive End Sub Private Sub File1_Click()Text3.Text = File1.FileName End Sub Private Sub VScroll1_Change()Form1.Show End Sub 三、设计方案的完善及目前存在的问题 1.设计方案要完善的地方 追加的信息无法加载到“职工信息txt”里 查询只是单一的一对一输入,不智能 文件类型的筛选问题暂未处理办法 2.目前存在的问题 只是简单的查询,不适合大量数据的导入与导出,不方便查看 四、本次设计的收获及心得体会 第一次尝试程序的制作,觉得非常有意思,做成功以后很有成就感,我还发现,程序制作出来的好坏直接影响使用者的工作效率,好的软件可以使用户事半功倍,对程序的运作体系越了解,设计的软件越智能,越能更好的服务于使用者,好好学习VB计算机语言,是磨刀不误砍柴工的体现。 五、对该题目和VB设计的意见和建议 1.对该题目的意见和建议 Form2中的文件类型,有些偏难,在少数文件夹的情况下可以不用通过文件类型的筛选 2.对本次设计的意见和建议 对此次课程设计的时间安排应更具体,应有相应的素材图片,增添软件的美感 面向对象课程设计报告 课程设计题目:职工信息管理系统 姓名: 班级: 学号: 指导老师: 2011年11月8 日 目录 摘 要......................................................................................................................3 第一章 绪论..................................................................................................................4 1.1面向对象C++语言程序设计..........................................................................4 1.2职工信息管理系统...........................................................................................4 1.3程序编译环境...................................................................................................4 第二章 职工信息管理系统需求分析..........................................................................5 2.1编写目的...........................................................................................................5 2.2需求概述...........................................................................................................5 2.3需求说明...........................................................................................................6 第三章:详细设计........................................................................................................7 3.1编写目的...........................................................................................................7 3.2详细设计.........................................................................................................10 第四章:源程序编码及实现......................................................................................11 4.1程序源代码.....................................................................................................16 4.2程序实现结果.................................................................................................17 第五章:系统测试......................................................................................................18 第六章:结束语..........................................................................................................21 参考文献:..................................................................................................................21 摘 要 在当今社会,互联网空间的发展,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。当前大量企业的职工管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎而出现纰漏。随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。 本程序是一个关于职工信息管理的系统,通过这个系统用户可以简捷、方便的对职工信息进行增加、修改、添加、查询、浏览等功能,它不仅可以帮助企业单位达到员工管理办公自动化、节约管理成本、更能达到提高企业单位工作效率的目的。 关键词:职工,信息管理,系统,程序 一.绪论 1.1面向对象C++语言程序设计 C++是种面向对象的程序设计语言,它是在C语言基础上发展起来的。虽然它不是最早的面向对象的程序设计语言,但是它是目前使出比较广泛的面向对象的程序设计语言。 什么是面向对象?简单地说,它和面向过程—样都是软件开发的一种方法。但是它与面向过程不同,面向对象是—种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的软件开发方法。 1.2职工信息管理系统 在当今信息技术高速发展的时代,企业单位迫切需要这样一个系统:它能高效的管理企业或单位内部所有员工的个人信息,并能正确快速的对系统的使用者的操作做出回应,以提高效率,降低成本。该系统能够满足以上的要求,使用户可以快速准确的管理员工的信息。 1.3程序编译环境 使用Visual C++ 6.0集成环境来编辑、编译并运行程序。Visual C++ 不仅仅是一个编译器。它是一个全面的应用程序开发环境,使用它你充分利用具有面向对象特性的 C++ 来开发出专业级的 Windows 应用程序。为了能充分利用这些特性,你必须理解 C++ 程序设计语言。 二.需求分析 2.1 编写目的: 通过对用户需求进行调查分析,写出需求分析文档作为项目设计的基本准则要求,以及作为系统分析员进行系统分析和测试人员进行测试时的手册 2.2需求概述: 设计一个职工信息管理系统,使之能提供以下功能: 录入职工信息并保存 浏览所有职工信息 查询职工信息 修改职工信息并保存 添加职工信息 2.3 需求说明: 本系统所实现的主要功能: (1)添加新成员,实现对新加入职工信息的录入,所有的信息当中主码即职工信息编号必须填写。 (2)删除职工信息,当公司有职工因故离职时,需要删除员工信息时,释放掉它所占据的数据库空间,就可以在列表中选中所要删除的记录,然后点击删除。如果确认删除则在弹出的消息框中点击确定即可删除所选的记录。 (3)修改员工信息,由于某种原因可能导致在记录员工信息时出现错误,需要对员工信息进行修改。在员工信息系统主窗口中选择所要修改的成员信息进行修改,点击修改后将会弹出消息框,如果确认修改则点击确定,则修改数据成功。(4)显示职工信息,在删除职工信息和添加职工信息成功后,点击显示按钮则可对职工信息记录进行更新,显示职工信息的最新 记录。 (5)姓名检索信息,点击此按钮则可以显示出当前那一条或几条员工信息,用名字来查看员工信息。综上本系统可以对员工信息实现科学自动的管理,其中包括显示职工基本信息,并实现信息的添加、删除、显示、及检索。经过调试,程序性能良好。 三.详细设计 3.1编写目的: 根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进行程序编码工作。 3.2详细设计: 对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下: 系统功能模块图: (1)系统的主要模块:增加模块、显示模块、删除模块、计算模块、检索模块 (2)员工管理系统的主界面设置如下图: 图一 员工管理系统的主界面 (3)职工信息记录的显示界面设计如下图: 图二 职工信息增加记录的显示界面 教师的: 工人的: 在页面上用按键1/2来选择是添加教师或者工人,如上两图显示。 显示按钮完成的功能:在对员工进行信息记录完成时,单击此按钮可以对其进行查看。当显示成功时,系统会下图所 四.源程序编码及实现 ·4.1源程序代码: #include class employee { public: virtual void display()=0;protected: int num;string name;string sex;float income;int birthday;int workday;int age;}; class teacher:public employee { public: void getdata(){ cout<<“请输入编号:”< cin>>num; cout<<“请输入姓名:”< cin>>name; cout<<“请输入姓别:”< cin>>sex; cout<<“请输入薪水:”< cin>>income; cout<<“请输入生日:”< cin>>birthday; cout<<“请输入工作年龄:”< cin>>workday age=workday-birthday;} void display() { cout<<“编号:”< cout<<“姓名:”< cout<<“姓别:”< cout<<“薪水:”< cout<<“生日:”< cout<<“参加工作时间:”< cout<<“年龄:”< age=workday-birthday; return age;} int getnum(){ return num;} string getname(){ return name;} }; class worker:public employee { public: void getdata(){ cout<<“请输入编号:”< cin>>num; cout<<“请输入姓名:”< cin>>name; cout<<“请输入姓别:”< cin>>sex; cout<<“请输入薪水:”< cin>>income; cout<<“请输入生日:”< cin>>birthday; cout<<“请输入工作年龄:”< cin>>workday;} void display(){ cout<<“编号:”< cout<<“姓名:”< cout<<“姓别:”< cout<<“薪水:”< cout<<“生日:”< cout<<“参加工作时间:”< cout<<“年龄:”< age=workday-birthday; return age;} int getnum(){ return num;} string getname(){ return name;} }; void menu(int &choice){ cout<<“ttt 职工信息管理系统”< 请输入你的选择:”;cin>>choice;} int main(){ int choice=0;int indx1=0,indx2=0;bool flag=false; teacher t[50];worker w[50];while(1){ int i=0; int average=0; int temp; string tname; menu(choice); switch(choice) { case 1: t[indx1++].getdata(); break; case 2: w[indx2++].getdata(); break; case 3: cout<<“显示所有教师信息:”< for(i=0;i!=indx1;++i) { t[i].display(); } cout<<“显示所有工人信息:”< for(i=0;i!=indx2;++i) { w[i].display(); } break; case 4: cout<<“教师平均年龄:”< for(i=0;i!=indx1;++i) { average+=t[i].getage(); } cout< break; case 5: cout<<“工人平均年龄:”< for(i=0;i!=indx2;++i) { average+=w[i].getage(); } cout< break; case 6: cout<<“请输入要删除教师的编号”< cin>>temp; for(i=0;i!=indx1;++i) { if(temp==t[i].getnum()) { do { t[i]=t[i+1]; ++i; } while(i!=indx1); cout<<“已删除”< --indx1; break; } } break; case 7: cout<<“请输入要删除工人的编号”< cin>>temp; for(i=0;i!=indx2;++i) { if(temp==w[i].getnum()) { do { w[i]=w[i+1]; ++i; } while(i!=indx2); cout<<“已删除”< --indx2; break; } } break; case 8: cout<<“请输入姓名:”< cin>>tname; for(i=0;i!=indx1;++i) { if(tname==t[i].getname()) { cout<<“这位是教师”< t[i].display(); } } for(i=0;i!=indx2;++i) { if(tname==w[i].getname()) { cout<<“这位是工人”< w[i].display(); } } break; case 0: flag=true; break; } if(flag) { break; } } return 0;} ·4.2程序实现结果: 五.系统测试 5.1 测试方法 首先运行程序,进入主界面选定要增加的员工信息,在职工编号中填入所要增加的职工编号,添加职工信息。选择增加,填写职工信息,在按Enter键确定,即可增加员工信息,然后显示按钮查看 增加所选员工信息后的员工信息列表。 5.2测试用例数据的设计 增加职工编号为102,姓名为yeyss,性别为女nan,出生年月为19690309,职称为教师,最后工资为1300的职工记录。 5.3测试结果 增加前后员工信息记录 六.结 束 语(设计心得) 在这一周的课程设计中,我们组的课程设计题目是:职工信息管理系统。即是以企业单位职工信息管理业务为背景,设计 “职工信息管理系统”。 一开始,接到这个题目,我们对“职工信息管理”,这个概念不是很了解,所以在机房上机时,我们查阅了许多资料,了解到即是对职工的工号,姓名,年龄,学历等复杂多样的信息,能够较清晰,快捷而操作方便的现代化管理系统。弄清了这个基本概念以后,我们又详细理解了老师所讲的设计要求和注意事项,开始集中讨论分析问题,大致确定了总体的设计思路,初步提出问题的解决方案,以及系统大致设计方案和框架,接下来我们就着手编程。在编程过程中,我们先是根据系统所要求,找出所需要的我们在c++语言课程中所学到的知识点。编完程序,我们在机房进行了一次又一次的调试,找出了其中的错误,一一纠正,并且修改了其中不太完善的部分,力求做到实用并且精确。 通过一周的课程设计,我们对c++语言知识掌握了很多,并能将它用以程序编写中。同时认识到了团队合作的重要性。总之,我们在这一周学到了许多知识,提高了自己的解决实际问题的能力。 参考文献 1. c/c++程序设计教程,王连相,中国铁道出版社,2006 2. c语言程序设计,谭浩强,清华大学出版社,1999 3.c程序设计题解与上机指导,谭浩强,清华大学出版社,1999 4.c/c++程序设计上机指导与测试,王连相,中国铁道出版社,2006 5.c语言函数手册,机械工业出版社,1999 6.c语言的实际应用,安徽科学技术出版社,2000 7.c++语言程序设计(第4版)郑莉 董渊 河江舟,清华大学出版社,2010 #include intnum; /*定义一个职工信息的结构体*/ char name[20]; /*定义一个职工信息的结构体*/ char sex[10]; //用字符串存放职工的性别数据 char birth[20];//用字符串存放职工的出生年月数据 char deta[20];//用字符串存放职工的工作年月数据 char education[20];//用字符串存放职工的学历数据 double salary; //用字符串存放职工的性别数据 char work[30];//用字符串存放职工的职务数据 char addr[20];//用字符串存放职工的地址数据 char tel[20];//用字符串存放职工的电话数据 }worker[100];//用结构体数组存放职工的所有信息 void menu(); void input(); void save(); void read(); void display(); void add(); void search(); voidsearch_education(); voidsearch_num(); void del(); void modify(); void main() { char s; system(“color 3f”); printf(“nn”); printf(“ t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”); printf(“ t┃**********************************************************┃n”); printf(“ t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃n”); printf(“ t┃***┃************************************************┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃*** 欢迎使用职工信息管理系统 ****┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃*** 制作人吴青伶 ****┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃*** 2013.12.28 ****┃***┃n”); printf(“ t┃***┃*** ****┃***┃n”); printf(“ t┃***┃************************************************┃***┃n”); printf(“ t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃n”); printf(“ t┃**********************************************************┃n”);printf(“ t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);do { menu();printf(“Do you want to continue?(y/n)”); s=getchar();}while(s=='Y'||s=='y');} void menu()/*菜单函数*/ { int b;printf(“t n”);printf(“t n”);printf(“t n”);printf(“t n”);printf(“t n”);printf(“t 请选择 n”);printf(“t ------------------------------n”);printf(“t || || n”);printf(“t || 1.职工信息录入 || n”);printf(“t || 2.职工信息浏览 || n”);printf(“t || 3.职工信息添加 || n”);printf(“t || 4.职工信息查询 || n”);printf(“t || 5.职工信息删除 || n”);printf(“t || 6.职工信息修改 || n”);printf(“t || 0.退出 || n”);printf(“tn”);printf(“n 输入你的选择项(0~6):n”); scanf(“%d”,&b); switch(b) { case 1 : //职工信息录入、保存 input(); save(); getchar(); break; case 2 ://读入职工信息并显示 read(); display(); getchar();break; case 3 : //添加职工信息 add();getchar();break; case 4 : //查询职工信息 search();getchar();break; case 5 : //读入职工信息并实现职工信息删除功能 read(); del(); getchar(); break; case 6 : //读入职工信息并修改职工信息 read();modify();getchar();break; case 0 : exit(0);//退出 default:break;} } void input() //录入职工信息 { inti,flag,j;printf(“输入职工个数(默认个数为2):”);scanf(“%d”,&N);fflush(stdin);//清除缓存 for(i=0;i { loop: printf(“职工号:”);scanf(“%d”,&worker[i].num);fflush(stdin);flag=1;if(worker[N].num<0) printf(“请输入正整数:n”);else for(j=0;j { if(worker[i].num==worker[j].num) { flag=0; printf(“ 工号重复,请重新输入!n”); goto loop; } } printf(“姓名:”);scanf(“%s”,worker[i].name);fflush(stdin);printf(“性别:”);scanf(“ %s”,worker[i].sex);fflush(stdin);printf(“出生年月:”);scanf(“%d”,&worker[i].birth);fflush(stdin);printf(“工作年月:”);scanf(“%lf”,&worker[i].deta);fflush(stdin);printf(“请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):n”);scanf(“%s”,worker[i].education);fflush(stdin);printf(“工资:”);scanf(“%lf”,worker[i].salary);fflush(stdin);printf(“职务:”);scanf(“%s”,worker[i].work);fflush(stdin);printf(“住址:”);scanf(“%s”,worker[i].addr);fflush(stdin);printf(“电话:”);scanf(“%s”,worker[i].tel);fflush(stdin); } printf(“n创建完毕!n”);} void save() //保存函数 { FILE *fp;int i; if((fp=fopen(“worker.txt”,“wb”))==NULL)//以只写方式打开一个二进制文件 { printf(“ncannot open filen”); exit(0);} for(i=0;i void read() //读入函数 { FILE *fp;int i=0; if((fp=fopen(“worker.txt”,“rb”))==NULL)//以只读方式为输出打开磁盘文件中的一个二进制文件 { printf(“ncannot open filen”); exit(0);} do{ fread(&worker[i],sizeof(struct worker),1,fp);//从worker.txt文件向内存读入数据(二进制) i++;}while(!feof(fp));fclose(fp); N=i-1;} void display() //信息浏览函数 { int i;for(i=0;i { printf(“职工号:%dn”,worker[i].num);printf(“姓名:%sn”,worker[i].name);printf(“性别:%sn”,worker[i].sex);printf(“出生年月:%dn”,worker[i].birth);printf(“工作年月:%dn”,worker[i].deta);printf(“学历:%sn”,worker[i].education);printf(“工资:%lfn”,worker[i].salary);printf(“职务:%dn”,worker[i].work);printf(“住址:%sn”,worker[i].addr);printf(“电话:%sn”,worker[i].tel); } } void add() //添加函数 { FILE *fp;int i;struct worker p;double t;printf(“n请输入新增加职工的信息:n”); printf(“请输入职工号:n”); scanf(“%d”,&p.num); for(i=0;i { while(worker[i].num==p.num) { printf(“ 工号重复,请重新输入!n”); scanf(“%d”,&p.num); } } printf(“请输入姓名:n”);scanf(“%s”,p.name);printf(“请输入性别:n”);scanf(“%s”,p.sex);printf(“请输入出生年月:n”);scanf(“%d”,&p.birth);printf(“请输入工作年月:n”);scanf(“%d”,&p.deta);printf(“请输入学历(中专=zz,大专=dz,本科=bk,=yjs:):n”);scanf(“%s”,p.education);printf(“请输入工资:n”);scanf(“%lf”,&t);p.salary=t;printf(“请输入职务:n”);scanf(“%s”,p.work);printf(“请输入住址:n”);scanf(“%s”,p.addr);printf(“请输入电话:n”);scanf(“%s”,p.tel);printf(“n添加完毕!n”); if((fp=fopen(“worker.txt”,“ab”))==NULL)//以追加方式打开一个二进制文件尾部 { printf(“ncannot open filen”);exit(0); } fwrite(&p,sizeof(struct worker),1,fp);fclose(fp);} void search() //查询函数 { int c;do { puts(“nsearch by=>n1.学历2.职工号3.取消并返回”);printf(“Which you needed?:n”);scanf(“%d”,&c); 研究生if(c>3||c<1) { puts(“nchoiceerror!please again!”);getchar();//此语句用于接受在执行上一句时最后输出的回车符 } } while(c>3||c<1); { switch(c) { case 1:search_education();break;case 2:search_num();break;case 3:menu();break; } } } void search_education() //按学历查询函数 { inti,flag=0;char s[10];printf(“n请输入你要查询的学历:n”);scanf(“%s”,s);for(i=0;i { if(strcmp(s,worker[i].education)==0) { printf(“职工号:%dn”,worker[i].num); printf(“姓名:%sn”,worker[i].name); printf(“性别:%sn”,worker[i].sex); printf(“出生年月:%dn”,worker[i].birth); printf(“工作年月:%dn”,worker[i].deta); printf(“学历(中专=zz,大专=dz,yjs):%sn”,worker[i].education);printf(“工资:%lfn”,worker[i].salary);printf(“职务:%lfn”,worker[i].work); printf(“住址:%sn”,worker[i].addr); printf(“电话:%sn”,worker[i].tel);flag++; } } if(flag==0) printf(“n对不起没有找到!n”);getchar();} void search_num() //按工号查询函数 { inti,s,flag=0;printf(“n输入要查询的职工号!:n”);scanf(“%d”,&s); 本科=bk,研究生=for(i=0;i { if(s==worker[i].num) { printf(“职工号:%dn”,worker[i].num); printf(“姓名:%sn”,worker[i].name); printf(“性别:%sn”,worker[i].sex); printf(“出生年月:%dn”,worker[i].birth); printf(“工作年月:%dn”,worker[i].deta); printf(“学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%sn”,worker[i].education); printf(“工资:%lfn”,worker[i].salary);printf(“职务:%lfn”,worker[i].work); printf(“住址:%sn”,worker[i].addr); printf(“电话:%sn”,worker[i].tel); flag++; } } if(flag==0)printf(“n对不起没有找到!please”); getchar();} void del() //删除函数 { inti,j;FILE *fp;char name[20];char c;if((fp=fopen(“worker.txt”,“wb”))==NULL)//以只写方式打开一个二进制文件 { printf(“ncannot open filen”);exit(0); } printf(“请输入要删除的职工的姓名:”);scanf(“%s”,name);for(i=0;i if(strcmp(name,worker[i].name)==0)//判断输入的姓名和原来的姓名是否相同 { printf(“找到该职工,是否删除?(y/n)”); fflush(stdin); scanf(“%c”,&c); if(c =='Y'||c=='y') { for(j=i;j worker[j]=worker[j+1]; printf(“删除成功!n”); //break; } } } if(i>=N){ printf(“没有找到该职工!n ”); return;} else { N=N-1; for(i=0;i if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1) { printf(“ncannot save filen”);getchar(); } fclose(fp);} } void modify() //修改函数 { struct worker p;FILE *fp;inti,n;double t;printf(“n输入要修改的职工号:n”);scanf(“%d”,&n); for(i=0;i if(n==worker[i].num) { printf(“找到该职工的信息(任意键继续)!”); printf(“n请输入职工的信息!n”); printf(“请输入姓名:n”);scanf(“%s”,p.name); printf(“请输入性别:n”);scanf(“%s”,p.sex); printf(“请输入出身年月:n”);scanf(“%d”,&p.birth);printf(“请输入工作年月:n”);scanf(“%lf”,&p.deta); printf(“请输入学历(中专=zz,大专=dz,yjs):n”);scanf(“%s”,p.education);printf(“请输入工资:n”);scanf(“%lf”,&t); p.salary=t;printf(“请输入职务:n”);scanf(“%s”,p.work); printf(“请输入住址:n”);scanf(“%s”,p.addr); 本科=bk,研究生= } printf(“请输入电话:n”);scanf(“%s”,p.tel);p.num=n; if((fp=fopen(“worker.txt”,“r+”))==NULL)//以读写的方式将修改的信息写入磁盘文件 { printf(“ncannot open filen”); exit(0); } fseek(fp,i*sizeof(struct worker),0);//将位置指针移到i*sizeof(struct worker)个字节处 fwrite(&p,sizeof(struct worker),1,fp); fclose(fp); printf(“修改成功!n”); break;} } if(i>=N)printf(“n未找到该职工!n”); 软件技术专业 计算机应用基础课程设计任务书 (13级) 题目:职工信息管理系统 学生姓名:学号:班级: 题目类型:软件工程(R)指导教师: 一. 课程设计的题目简介 该设计要求学生以某企业职工信息管理业务为背景,设计、开发一套“职工信息管理系统”软件。 通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。得到软件工程的综合训练,提高解决实际问题的能力。 二. 课程设计的任务 1、查阅文献资料,一般在5篇以上; 2、以某企业职工信息管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型; 3、完成软件结构设计和算法设计; 4、完成系统的软件开发和测试工作; 5、撰写设计说明书; 6、做好答辩工作。 三. 课程设计的主要内容、功能及技术指标 1、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系,并画出函数之间的调用关系图。 2、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出 流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过60行,否则要进一步划分。 3、上机前程序静态检查:上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。把程序中的明显错误事先排除。 4、程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果。 5、完成课程设计报告 ① 需求和规格说明:设计题目和问题描述:题目要解决的问题是什么; ② 设计思路:主要算法思想,程序功能图,函数之间的调用关系图;设计表示:每个函数或过程的功能,列出每个过程或函数所调用的过程或函数,并画出各函数的流程图; 详细设计:主要算法的伪代码; ③ 调试报告:调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论和分析;改进设想;经验和体会等; ④ 程序实现注释; ⑤ 附录:源程序清单和结果。如果题目规定了测试数据,则结果要求包含这些测试数据和运行输出,当然还可以含其他测试数据和运行输出。 6、职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。设计“职工信息管理系统”,使之能提供以下功能: 系统以菜单方式工作; 职工信息录入功能(职工信息用文件保存); 职工信息浏览功能; 查询和排序功能:(至少一种查询方式)按工资查询、按学历查询等;职工信息的删除与修改。 四. 课程设计提交的成果 1.设计说明书一份,内容包括: 1)中文摘要100字;关键词3-5个; 2)前言; 3)系统分析(包含需要的系统流程图); 4)系统总体设计(包含总体软件结构图、总体数据结构); 5)详细设计; 6)系统测试(包含测试方案、测试用例、测试结果及软件可靠性分析); 7)软件使用说明书(核心界面说明); 8)设计总结、参考文献、致谢等。 2.刻制光盘一张。 五. 课程设计的主要参考文献 1C/C++程序设计教程(第二版),王连相,中国铁道出版社,2011 2C语言程序设计,谭浩强,清华大学出版社,1999 3C程序设计题解与上机指导,谭浩强,清华大学出版社,1999 4C/C++程序设计上机指导与测试(第二版),王连相,中国铁道出版社,2011 5C语言函数手册,机械工业出版社,1999 6C语言的实际应用,安徽科学技术出版社,2000 2014年1月13日第二篇:职工信息管理系统
第三篇:职工信息管理系统课程设计报告(定版)
第四篇:职工信息管理系统源代码
第五篇:01-职工信息管理系统