




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++课程设计——高校人事管理系统(完整版)(文档可以直接使用,也可根据实际需要修改使用,可编辑欢迎下载)
C++课程设计——高校人事管理系统(完整版)(文档可以直接使用,也可根据实际需要修改使用,可编辑欢迎下载)课程设计报告课程名称面向对象程序设计课题名称高校人事管理系统专业通信工程班级通信1101学号202103020217姓名皮锋指导教师李峰、谭晓兰、张益星2021年12月22日
湖南工程学院课程设计任务书课程名称面向对象程序设计课题高校人事管理系统专业班级通信工程学生姓名皮锋学号202103020217指导老师李峰、谭晓兰、张益星审批任务书下达日期2021年12月22日任务完成日期2021年1月6日二、进度安排第17周星期四14时:00分——18时:00分星期五19时:分——21时:00分第18周星期三19时:00分——21时:00分星期四19时:00分——21时:00分实验内容课题4:高校人事管理系统(一)、课程设计题目:高校人事管理系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书(三)、设计方法和基本原理:1、问题描述(功能要求):某高校,主要人员有:在职人员(行政人员、教师、一般员工)、退休人员。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、级别、职称、政治面貌、最高学历、任职时间、来院时间、工资。其中行政人员只有职务和级别,教师只有职务和职称,一般员工只有职务,退休人员则没有职务、级别、职称,但有退休时间。要求:(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);(5)保存功能:能对输入的数据进行相应的存储,(扩展要求:要求重载插入和提取符以完成数据的保存和打开)。(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告以及系统使用说明书。
目录TOC\o"1-2"\h\z\u1. 系统需求分析 12. 总体设计 13. 详细设计 24. 系统调试 185. 结果分析 206. 总结 20系统需求分析1.用户需求:(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);(5)保存功能:能对输入的数据进行相应的存储,(扩展要求:要求重载插入和提取符以完成数据的保存和打开)。(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。2.系统设计目标:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。3.系统拟实现的功能:对高校人事系统进行添加,编辑,查询,统计,保存功能。2.总体设计1.系统功能分析(1)资料维护:系统维护包括对各种表记录的修改、删除、添加等操作。(2)资料维护:对数据表中的信息进行浏览。(3)系统查询:可以按职工编号、姓名等相关信息进行详细或模糊查询。(4)报表统计:包括统计职工编号、职工姓名、职工性别、所在部门、职工年龄、工作日期、基本工资、职称、职务和简历等字段。(5)其它操作:系统封面、人性化提示信息。2.系统功能模块划分与设计系统功能模块划分:数据查找与浏览、数据修改、报表显示和系统封面构成。开始开始管理系统主页面分别输入要输入的人员信息添加完最后一项之后选择要修改的人员信息修改完之后选择要删除的人员信息删除之后图1-1系统功能模块详细设计高校人事管理系统高校人事管理系统保存功能查询功能修改保存功能查询功能修改功能添加功能显示功能删除功能图1-2各功能模块实现程序源代码:#include<iostream>#include<fstream> //对外存文件的输入输出操作#include<windows.h> #include<cstring> //字符串模板类#include<iomanip> //流操作usingnamespacestd;intk; //全局变量classperson{private:charnum[10]; //编号 chartype[20]; //类型charname[20]; //姓名charsex[10]; //性别charzhiwu[20]; //职务charage[10]; //年龄charzhichen[20]; //职称charzzmm[20]; //政治面貌charzgxl[20]; //最高学历charrzsj[20]; //任职时间charlysj[30]; //来院时间staticintbianhao; //编号public: voidsetperson(char*type1,char*name1,char*sex1,char*age1,char*zhiwu1,char *zhichen1,char*zzmm1,char*zgxl1,char*rzsj1,char*lysj1); staticint&getbianhao(){returnbianhao;} char*gettype(){returntype;} char*getname(){returnname;} char*getsex(){returnsex;} char*getage(){returnage;} char*getzhiwu(){returnzhiwu;} char*getzhichen(){returnzhichen;}char*getzzmm(){returnzzmm;}char*getzgxl(){returnzgxl;}char*getrzsj(){returnrzsj;}char*getlysj(){returnlysj;}char*getnum(){returnnum;}voidtjry();voidfind();voidoutput();voidshancu();voidxiugai();voidtongji();};personp[100];personpp[100];intk1;intperson::bianhao=0;voidperson::setperson(char*type1,char*name1,char*sex1,char*age1,char *zhiwu1,char*zhichen1,char*zzmm1,char*zgxl1,char*rzsj1,char*lysj1){ intstaticj=1; strcpy(type,type1); strcpy(name,name1); strcpy(sex,sex1); strcpy(age,age1); strcpy(zhiwu,zhiwu1); strcpy(zhichen,zhichen1); strcpy(zzmm,zzmm1); strcpy(zgxl,zgxl1); strcpy(rzsj,rzsj1); strcpy(lysj,lysj1); bianhao++; ofstreamfile("添加人员.txt",ios_base::app); //向外存文件的输入操作 file<<p[j].getbianhao()<<endl; file<<p[j].gettype()<<endl; file<<p[j].getname()<<endl; file<<p[j].getsex()<<endl;file<<p[j].getage()<<endl; file<<p[j].getzhiwu()<<endl; file<<p[j].getzhichen()<<endl; file<<p[j].getzzmm()<<endl; file<<p[j].getzgxl()<<endl; file<<p[j].getrzsj()<<endl; file<<p[j].getlysj()<<endl; j++; file.close();}voidperson::tongji()//统计{ inta=0;intb=0;intc=0;intd=0; intk=1; ifstreamfilem("添加人员.txt",ios_base::in); //从外存文件的输入操作 while(!filem.eof()) //直到文件指针结束 { filem>>pp[k].getnum(); filem>>pp[k].gettype(); filem>>pp[k].getname(); filem>>pp[k].getsex(); filem>>pp[k].getage(); filem>>pp[k].getzhiwu(); filem>>pp[k].getzhichen(); filem>>pp[k].getzzmm(); filem>>pp[k].getzgxl(); filem>>pp[k].getrzsj(); filem>>pp[k].getlysj(); if(strcmp(pp[k].gettype(),"行政人员")==0||strcmp(pp[k].gettype(),"教师")==0|| strcmp(pp[k].gettype(),"一般员工")==0) a++; if(strcmp(pp[k].getzzmm(),"党员")==0) b++; if(strcmp(pp[k].getsex(),"nv")==0) c++; if(strcmp(pp[k].getzgxl(),"boshi")==0) d++; k++; } filem.close(); cout<<"在职人数"<<setw(12)<<"党员人数"<<setw(12)<<"女工人数 "<<setw(12)<<"高学历人数"<<endl; cout<<a<<setw(12)<<b<<setw(12)<<c<<setw(12)<<d<<endl;}voidperson::xiugai()//{ intk=1; ifstreamfilem("添加人员.txt",ios_base::in);//从外存文件的输入操作while(!filem.eof()) { filem>>pp[k].getnum(); filem>>pp[k].gettype(); filem>>pp[k].getname(); filem>>pp[k].getsex(); filem>>pp[k].getage(); filem>>pp[k].getzhiwu(); filem>>pp[k].getzhichen(); filem>>pp[k].getzzmm(); filem>>pp[k].getzgxl(); filem>>pp[k].getrzsj(); filem>>pp[k].getlysj(); k++; } filem.close(); cout<<"请输入要修改的人的编号:"<<endl; intx,y; cin>>x; cout<<"请输入编号为"<<x<<"的人需要修改的项目的代号:"<<endl; cout<<"1:编号-2:人员类型-3:姓名-4:性别-5:年龄-6:职务-7:职称-8:政治面貌-9:最 高学历-10:任职时间-11:来院时间"<<endl; cin>>y; switch(y) { case1: {cout<<"请输入新的编号";cin>>pp[x].getnum();} break; case2: {cout<<"请输入新的人员类型";cin>>pp[x].gettype();} break; case3: {cout<<"请输入新的姓名";cin>>pp[x].getname();} break; case4: {cout<<"请输入新的性别";cin>>pp[x].getsex();} break; case5: {cout<<"请输入新的年龄";cin>>pp[x].getage();} break; case6: {cout<<"请输入新的职务";cin>>pp[x].getzhiwu();} break; case7: {cout<<"请输入新的职称";cin>>pp[x].getzhichen();} break; case8: {cout<<"请输入新的政治面貌";cin>>pp[x].getzzmm();} break; case9: {cout<<"请输入新的最高学历";cin>>pp[x].getzgxl();} break; case10: {cout<<"请输入新的任职时间";cin>>pp[x].getrzsj();} break; case11: {cout<<"请输入新的来院时间";cin>>pp[x].getlysj();} break; } ofstreamfile1("添加人员.txt",ios_base::trunc); for(k=1;k<=bianhao;k++) { file1<<pp[k].getnum()<<endl; file1<<pp[k].gettype()<<endl; file1<<pp[k].getname()<<endl; file1<<pp[k].getsex()<<endl; file1<<pp[k].getage()<<endl; file1<<pp[k].getzhiwu()<<endl; file1<<pp[k].getzhichen()<<endl; file1<<pp[k].getzzmm()<<endl; file1<<pp[k].getzgxl()<<endl; file1<<pp[k].getrzsj()<<endl; file1<<pp[k].getlysj()<<endl; } file1.close(); cout<<"修改并保存完毕"<<endl;}voidperson::shancu()//删除人员{ intz; ifstreamfilem("添加人员.txt",ios_base::in);//从外存文件的输入操作 intk=1; while(!filem.eof()) { filem>>pp[k].getnum(); filem>>pp[k].gettype(); filem>>pp[k].getname(); filem>>pp[k].getsex(); filem>>pp[k].getage(); filem>>pp[k].getzhiwu(); filem>>pp[k].getzhichen(); filem>>pp[k].getzzmm(); filem>>pp[k].getzgxl(); filem>>pp[k].getrzsj(); filem>>pp[k].getlysj(); k++;} filem.close(); cout<<"请输入要被删除信息的人的编号:"<<endl; cin>>z; while(z<1||z>bianhao) { cout<<"没有找到你要删除的人,请重新输入:"<<endl;cin>>z;} for(k=1;k<=bianhao;k++) { if(z==k) continue; ofstreamfile2("添加人员.txt",ios_base::trunc); file2<<pp[k].getnum()<<endl; file2<<pp[k].gettype()<<endl; file2<<pp[k].getname()<<endl; file2<<pp[k].getsex()<<endl; file2<<pp[k].getage()<<endl; file2<<pp[k].getzhiwu()<<endl; file2<<pp[k].getzhichen()<<endl; file2<<pp[k].getzzmm()<<endl; file2<<pp[k].getzgxl()<<endl; file2<<pp[k].getrzsj()<<endl; file2<<pp[k].getlysj()<<endl; file2.close(); } cout<<"删除记录完毕"<<endl;}voidperson::find()//查找人员{ cout<<"1:按编号查询--2:按姓名查询-请选择(1-2)"<<endl; intm; cin>>m; while(m<1||m>2) { cout<<"请重新输入(1-2)"<<endl;cin>>m; } switch(m) { case1: { charn[10]; cout<<"请输入要查找的编号:"; cin>>n; ifstreamfilem("添加人员.txt",ios_base::in); intk=1; cout<<"编号"<<setw(9)<<"人员类型"<<setw(5)<<"姓名"<<setw(5)<<"性 别" <<setw(5)<<"年龄"<<setw(5)<<"职务"<<setw(5)<<"职称" <<setw(9)<<"政治面貌"<<setw(10)<<"最高学历"<<setw(10)<<"任职 时间" <<setw(10)<<"来院时间"<<endl; while(!filem.eof()) { filem>>pp[k].getnum(); filem>>pp[k].gettype(); filem>>pp[k].getname(); filem>>pp[k].getsex(); filem>>pp[k].getage(); filem>>pp[k].getzhiwu(); filem>>pp[k].getzhichen(); filem>>pp[k].getzzmm(); filem>>pp[k].getzgxl(); filem>>pp[k].getrzsj(); filem>>pp[k].getlysj(); if(strcmp(pp[k].getnum(),n)==0) { cout<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(5)<<pp[k].getname() <<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage() <<setw(5)<<pp[k].getzhiwu()<<setw(5)<<pp[k].getzhichen() <<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl() <<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;break;} k++; if(filem.eof()) { cout<<endl; cout<<"警告:没有要查找的人!!!!!!!!!!"; } } filem.close();}break; case2: { charnname[20]; cout<<"请输入要查找的姓名:"; cin>>nname; ifstreamfilem("添加人员.txt",ios_base::in); intk=1; cout<<"编号"<<setw(9)<<"人员类型"<<setw(5)<<"姓名"<<setw(5)<<"性 别" <<setw(5)<<"年龄"<<setw(5)<<"职务"<<setw(5)<<"职称" <<setw(9)<<"政治面貌"<<setw(10)<<"最高学历"<<setw(10)<<"任职 时间" <<setw(10)<<"来院时间"<<endl; while(!filem.eof()) { filem>>pp[k].getnum(); filem>>pp[k].gettype(); filem>>pp[k].getname(); filem>>pp[k].getsex(); filem>>pp[k].getage(); filem>>pp[k].getzhiwu(); filem>>pp[k].getzhichen(); filem>>pp[k].getzzmm(); filem>>pp[k].getzgxl(); filem>>pp[k].getrzsj(); filem>>pp[k].getlysj(); if(strcmp(pp[k].getname(),nname)==0) { cout<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(5)<<pp[k].getname() <<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage() <<setw(5)<<pp[k].getzhiwu()<<setw(5)<<pp[k].getzhichen() <<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl() <<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;break;} k++; if(filem.eof()) { cout<<endl; cout<<"警告:没有要查找的人!!!!!!!!!!";} } filem.close(); } break; }}voidperson::tjry()//添加人数{ intv,l=1; chartype2[20];charname2[20];charsex2[10];charage2[10];charzhiwu2[20]; charzhichen2[20];charzzmm2[20];charzgxl2[20];charrzsj2[20];charlysj2[30]; cout<<"请输入要添加的人数"<<endl; cin>>k; p[1].getbianhao()=pp[k1].getbianhao(); v=bianhao; for(inti=v+1;i<=v+k;i++) { cout<<"请输入第"<<l<<"个人的信息"<<endl; cout<<"人员类型";cin>>type2; cout<<"姓名:";cin>>name2; cout<<"性别:";cin>>sex2; cout<<"年龄:";cin>>age2; cout<<"职务:";cin>>zhiwu2; cout<<"职称:";cin>>zhichen2; cout<<"政治面貌:";cin>>zzmm2; cout<<"最高学历:";cin>>zgxl2; cout<<"任职时间:";cin>>rzsj2; cout<<"来院时间:";cin>>lysj2; p[i].setperson(type2,name2,sex2,age2,zhiwu2,zhichen2,zzmm2,zgxl2,rzsj2,lysj2); l++; }}voidperson::output()//{ ifstreamfilem("添加人员.txt",ios_base::in); intk=1; cout<<"编号"<<setw(9)<<"人员类型"<<setw(5)<<"姓名"<<setw(5)<<"性别" //在输出前增加空格 <<setw(5)<<"年龄"<<setw(5)<<"职务"<<setw(5)<<"职称" <<setw(9)<<"政治面貌"<<setw(10)<<"最高学历"<<setw(10)<<"任职时间" <<setw(10)<<"来院时间"<<endl; while(!filem.eof()) { filem>>pp[k].getbianhao(); filem>>pp[k].gettype(); filem>>pp[k].getname(); filem>>pp[k].getsex(); filem>>pp[k].getage(); filem>>pp[k].getzhiwu(); filem>>pp[k].getzhichen(); filem>>pp[k].getzzmm(); filem>>pp[k].getzgxl(); filem>>pp[k].getrzsj(); filem>>pp[k].getlysj(); cout<<pp[k].getbianhao()<<setw(9)<<pp[k].gettype()<<setw(5)<<pp[k].getname() <<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage() <<setw(5)<<pp[k].getzhiwu()<<setw(5)<<pp[k].getzhichen() <<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl() <<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl; k++; } k1=--k; filem.close();}voidmenu(){ personpjk; intc; cout<<endl; cout<<"高校人事管理系统"<<endl; cout<<"**"<<endl; cout<<"*1--添加人员信息并保存*"<<endl; cout<<"*2--删除人员信息*"<<endl; cout<<"*3--修改人员信息*"<<endl; cout<<"*4--查询人员信息*"<<endl; cout<<"*5--统计人员信息*"<<endl; cout<<"*6--显示所有信息*"<<endl; cout<<"*7--退出*"<<endl; cout<<""<<endl; cout<<"请选择(1-7):"<<endl; cin>>c; switch(c) { case1:pjk.tjry();menu();break; case2:pjk.shancu();menu();break; case3:pjk.xiugai();menu();break; case4:pjk.find();cout<<endl<<endl;menu();break; case5:pjk.tongji();menu();break; case6:pjk.output();menu();break; case7:exit(1);break; }}voidmain(){ system("color5F"); menu();}序运行结果:图2-1程序运行结果图2-1存入人事信息系统调试(调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整)1.errorC2065:'setw':undeclaredidentifier在找预编译头文件路径时出错,c++中的setw(n)设置域宽不能调用,要加上头文件#include<iomanip>2.errorC2021:unknowncharacter'0xa3'不认识的字符'0xa3'。(一般是汉字或中文标点符号)。3.errorC2057:expectedconstantexpression希望是常量表达式。(一般出现在switch语句的case分支中)。4.errorC2143:syntaxerror:missing':'before'{'句法错误:“{”前缺少“;”。在编写查找功能时,本来用for循环。但要求达到条件再循环,且条件是(!filem.eof()),而不是一个数,所以后来改成了while。while(!filem.eof()) { filem>>pp[k].getnum(); filem>>pp[k].gettype(); filem>>pp[k].getname(); filem>>pp[k].getsex(); filem>>pp[k].getage(); filem>>pp[k].getzhiwu(); filem>>pp[k].getzhichen(); filem>>pp[k].getzzmm(); filem>>pp[k].getzgxl(); filem>>pp[k].getrzsj(); filem>>pp[k].getlysj(); if(strcmp(pp[k].getnum(),n)==0) { cout<<pp[k].getnum()<<setw(9)<<pp[k].gettype()<<setw(5)<<pp[k].getname() <<setw(5)<<pp[k].getsex()<<setw(5)<<pp[k].getage() <<setw(5)<<pp[k].getzhiwu()<<setw(5)<<pp[k].getzhichen() <<setw(9)<<pp[k].getzzmm()<<setw(10)<<pp[k].getzgxl() <<setw(10)<<pp[k].getrzsj()<<setw(10)<<pp[k].getlysj()<<endl;break;} k++; if(filem.eof()) { cout<<endl; cout<<"警告:没有要查找的人!!!!!!!!!!"; } }结果分析特点:在头文件中加上了#include<windows.h>,加入一些界面美化的程序语言,使界面得到美化。足之处:课程设计中数据类型检查机制相对较弱,在程序中的一些错误不能在编译阶段被发现。一个程序员精心设计的程序很难为其他程序所用。界面比较的单一,功能相对较少,只能逐一增加信息,不能批量的增加。总结通过这次课程设计,我收获颇丰踏踏实实,相信会为自己以后的学习和工作带来很大的好处。一步一个脚印,有毅力,多问,多遍是学好C++的前提。最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序,让我对编程更加热爱了。整体地评价这次课程设计,我认为收获很大,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。特别是学会了在VisualC++集成开发环境中如何调试程序的方法。老师的悉心指导和同学的帮助也是不可忽视的,在此感谢本次课程设计中所有辅导老师对我的关心和帮助,诚心诚意感谢他们对我的鼓励与教导,是她们在我迷茫的时候给了我些许提示,激发了我编程的灵感;还有,我在此也十分感谢本次课程设计中同学们对我的帮助,尽管本次不是团队合作,但是他们也给了我不少的提示和帮助,是他们让我有信心坚持做下来,在此感谢他们!计算机科学与技术系课程设计评分表课程名称:面向对象程序设计项目评价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩教师签名:日期:《面向对象程序设计》课程设计报告学院:_专业班级:学生姓名:学号:设计地点(单位)________计算机自主学习中心_________
设计题目:________超市商品管理系统___________完成日期:年月日指导教师评语:___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________成绩(五级记分制):________________指导教师(签字):_______________摘要此次课程设计为超市管理系统,由VC6.0编译器编译而成。通过本系统,在主界面可以通过行管提示的操作,对商品进行购买、添加、修改、删除、查询、统计等管理操作。系统主要包含了食品、化妆品、日用品、饮料四大类,每一类都包含了商品的几大最基本信息,商品名称、品牌、价格、生产厂家、库存量等。除四大类外有一个总的商品基类,通过继承机制进行访问基类,同时也结合运用了模板。通过此系统用户可以简洁方便的购买商品,管理人员也可轻松进行商品管理,从而实现高效的管理模式,为公司企业商家等创造最大化的经济效益。关键词:管理系统基类继承模板
课程设计任务书设计题目:超市商品管理系统设计学生姓名汤荣安课程名称面向对象程序设计专业班级计科11地点I304/I306起止时间2013年1月7日~1月18日设计内容及要求1)问题描述超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。主要完成对商品的销售、统计和简单管理。2)功能要求(1)销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。(2)商品简单管理功能。添加功能:主要完成商品信息的添加。查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。修改功能:可根据查询结果对相应的记录进行修改。删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。(3)统计功能。输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。3)问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。设计参数(1)系统分析、设计正确。(2)结果以图表方式显示。(3)界面简洁、美观。(4)报告格式规范。进度要求周一:明确设计任务,学习相关基础知识周二:熟悉各知识点,进行基础练习周三:根据题目要求,进行设计和实现周四:根据题目要求,进行设计和实现周五:程序测试参考资料[1]RichardJohnsonbaugh.MartinKalin.《面向对象程序设计—C++语言描述》.机械工业出版社.2021年[2]钱能.《C++语言程序设计教程》.清华大学出版社.2005年其它说明1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。2.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
目录摘要 I1软件需求分析说明书 11.1需求分析 11.2功能简介 11.2.1销售功能 11.2.2商品管理功能 11.2.3统计功能 21.3界面介绍与要求 21.4数据结构要求 32系统分析与设计 42.1系统分析 42.1.1类的设计关系 42.1.2主功能函数流程图 42.2软件的数据(结构)设计 52.3系统的算法设计 62.3.1购买商品程序算法 62.3.2添加商品程序算法 72.3.3修改商品程序算法 82.3.4统计商品程序算法 93软件的实现 113.1主系统头文件和基类的定义 113.2购买商品代码解释 113.3添加商品代码解释 123.4删除商品代码解释 133.5修改商品代码解释 133.6查询商品代码解释 143.7统计商品代码解释 144系统功能实现 164.1系统功能主菜单界面实现 164.2商品购买界面实现 164.3商品添加界面实现 174.4商品修改界面实现 184.5商品统计界面实现 185软件测试 206软件使用说明书 216.1销售功能模块的使用说明 216.2商品管理功能的使用说明 216.3商品统计功能的使用说明 21参考文献 22致谢 231软件需求分析说明书1.1需求分析随着科技的进步,计算机技术的飞速发展,许多企业在进行技术改造的同时,各种工作也趋向于信息技术化管理。管理系统事一个信息化、智能化和先进管理集合,一个高效有用的管理系统课一减少一个企业或者上商家的管理费用和人力物力开支,不仅可以节省大量时间,还可以为企业的各项决策带来巨大的经济效益。与人们生活接触最贴近的超市也有它自己完善的管理系统。计算机的自动化管理系统提高了超市管理的管理水平和工作效率,增强超市的竞争能力降低成本,为客户提供更加优质的服务。所以需要开发一个计算机系统来代替人工管理超市人员对商品信息管理和顾客购买等方面的工作。使用该系统可以使超市的服务更加快捷、准确和方便,减少大量的人工操作,提高了工作效率。1.2功能简介1.2.1销售功能本功能主要是针对消费者用户使用。在购买商品时,用户得先选择输入所要购买商品的类别,是食品、化妆品、日用品和饮料中的哪一类,然后在输入商品名称,系统会自动在库存当中查找该商品的相关信息,如果在库存中还有库存量,则用户接着进行下一步操作,根据提示输入要购买的商品的数量,进行相应的计算。如果库存量不够,则系统会给出提示信息,然后询问顾客是否重新购买,又回到系统页面主菜单。1.2.2商品管理功能商品管理功能主要是针对超市管理人员使用,对库存商品进行简单的管理。本功能当中主要可以实现商品的添加、查询、修改、删除等功能。(1)添加商品通过主页面提示菜单键入相对应数字进入添加商品选项,然后根据提示添加商品信息,主要包括商品名称、商品品牌、商品价格、商品生产厂家、以及商品的库存量。(2)删除商品通过主页面的提示菜单键入相应数字进入删除商品选项,完成最商品信息的删除。首先选择输入要删除商品的类别,再输入要删除的商品的名称,根据查询结果删除商品的记录,如果该商品在库存物品当中不存在,则系统给出相应提示,该商品不存在。(3)修改商品通过主页面的提示菜单键入相应数字进入修改商品选项,对商品信息进行修改。可根据查询的结果对相应的商品信息进行修改,包括商品的名称、品牌、价格、生产厂家和库存量。(5)查询商品通过主页面的提示菜单键入相应数字进入查询商品选项,对商品信息进行查询。可根据相应提示选择查询方式,按商品类别、商品名称、生产厂家进行查询商品的全部信息。如果存在相应商品的信息,则输出所查询商品的信息,如果不存在该商品的记录,则系统自动提示该商品的记录不存在。1.2.3统计功能此功能主要是提供显示功能。用户可通过主页面的显示菜单键入相应的数字进入统计选项,可以输出当前库存当中的所有商品的总数及相应商品的详细信息,可以按照商品的价格、生产厂家、库存量进行统计,输出商品信息时可以按照商品的对应信息按照从大到小的的顺序进行排序输出。1.3界面介绍与要求图1.2系统首页面介绍本系统的软件界是使用C++编译生成的一个系统操作菜单。操作菜单界面总共有七个选项可以供用户操作选择,分别为购买商品、添加商品、删除商品、修改商品、查询商品、统计商品、退出系统。菜单页面下方有可供用户选择操作项目的指令,当用户选择并输入0-6中的任意数字,系统便会进入相应的功能操作。如果出现错误操作,系统会该处输入错误请从新输入等提示或者自动跳出回到主菜单界面。页面的组织和设计要求先构思好系统的功能模块和结构框架,分析系统中的各个实体以及它们间的具体联系关系,根据问题的描述先设计好系统的类层次,完成类层次中各个成员函数的定义,实现每一个模块层次之间的衔接,从而设计出工整漂亮的管理系统,要求整个系统的界面设计简洁、美观,让用户使用起来方便快捷。1.4数据结构要求在整个系统当中除了使用类层次结构、继承机制、模板等,还使用的了数据结构当中的链表结构,主要用来进行商品的管理功能。包括商品的添加、修改、删除、查询等。可以通过链表进行存储、访问操作。通过动态申请链表空间,用指针操作数据节点完成商品信息的一系列操作。
2系统分析与设计2.1系统分析系统的主要工作流程图如下,当进入操作主菜单界面时,会有相应的不同的操作选项供用户选择,但操作完成后就返回到系统主菜单。类的设计关系商品基类商品基类食品类饮料类化妆品类生活用品类图2.1系统类的设计关系图主功能函数流程图选择操作项目选择操作项目1.购买商品2.添加商品 3.删除商品4.修改商品5.查询商品6.统计商品7.退出系统统计方式种类类1.价格统计2.库存统计System首页面图2.2首页面功能关系图2.2软件的数据(结构)设计 主要系统文件的写入与保存//读文件voidSystem::Read(){ intnum; stringkind; Goods*temp; ifstreamin; in.open("infile.txt"); in>>num; for(inti=0;i<num;i++) { temp=newGoods; temp->Read(in); something.push_back(temp); } in.close();}//写入文件voidSystem::Write(){ ofstreamout; out.open("infile.txt"); out<<something.size()<<endl;//先存进去数量... for(unsignedinti=0;i<something.size();i++) something[i]->Write(out); out.close();}2.3系统的算法设计购买商品程序算法当用户选择第一项操作时,便进入购买商品的函数。其流程图如下:选择种类选择种类种类类1.食品 2.饮料3.日用品4.化妆品输入商品名称、数量购买商品输出商品信息、金额购买结束图2.3商品购买操作流程图添加商品程序算法其流程图如下:添加商品添加商品选择种类种类类1.食品 2.饮料3.日用品4.化妆品输入商品名称、价格、库存、品牌、厂家添加成功图2.4商品添加操作流程图修改商品程序算法其流程图如下:修改商品修改商品选择种类种类类1.食品 2.饮料3.日用品4.化妆品修改成功输入修改商品名称选择修改项种类类输入修改量1.修改价格 1.修改库存 图2.5商品修改操作流程图统计商品程序算法其流程图如下:统计商品统计商品选择种类种类类1.食品 4.化妆品2.饮料3.日用品选择统计项种类类1.修改价格 1.修改库存 输入统计项量统计结束输出统计信息图2.6商品统计功能流程图
3软件的实现3.1主系统头文件和基类的定义#ifndefSYSTEM_H_#defineSYSTEM_H_#include"cosmetics.h"#include"dayuse.h"#include"drink.h"#include"food.h"#include"goods.h"#include<vector>#include<string>usingnamespacestd;//定义结构体元素structitem{ stringname; doubleprice; intnum;};booloperator<(constitem&G1,constitem&G2);classSystem{public: voidStar();private: intBuy();//购买 intAdd();//添加 intDelect();//删除 intModefied();//修改 voidStatistics();//统计. intFind(); //查询. intHave(stringkind,stringname);//查找仓库中是否有此商品. voidWrite();voidRead(); stringAsk();//询问增加的种类.. vector<Goods*>something;};#endif//取消避免头文件重复定义定义头文件,声明类的公有成员函数和私有数据成员。3.2购买商品代码解释intSystem::Buy(){ stringkind=Ask(); intbuy_num,a; stringname; cout<<"\n\t\t请输入您所要购买的商品名称:"; cin>>name; a=Have(kind,name); if(a!=-1)//代表商品存在、则需要填购买数量、并从仓库中减去已被购买的货物。 { something[a]->Show(); cout<<"\n\t\t请输入购买数量:"; cin>>buy_num; if(buy_num<=something[a]->Get_Num()) { something[a]->Set_Num(something[a]->Get_Num()-buy_num); cout<<"\n\t\t您此次购买一共花费:"; cout<<buy_num*something[a]->Get_Price()元<<endl; } else return-1;//超过库存量。 } else return0;//不存在 return1;}该函数实现了对商品的购买功能,并且计算出本次购买所消费金额。3.3添加商品代码解释intSystem::Add(){ Goods*temp; inta; stringkind=Ask(); if(kind=="食品") temp=newFood; if(kind=="饮料") temp=newDrink; if(kind=="日常用品") temp=newDaily_Supplies; if(kind=="化妆品") temp=newCosmetics; temp->Set(); a=Have(temp->Get_Kind(),temp->Get_Name()); if(a==-1) something.push_back(temp); else return0;//该商品已经存在。 return1;}该函数实现了对商品的添加功能。3.4删除商品代码解释intSystem::Delect(){ stringkind=Ask(); stringname; inta; cout<<"\n\t\t请输入您要删除商品名称:"; cin>>name; a=Have(kind,name); if(a!=-1) something.erase(something.begin()+a); else return0;//不存在该商品.. return1;}该函数实现了对商品信息的删除功能。3.5修改商品代码解释intSystem::Modefied(){ stringkind=Ask(); stringname; inta; cout<<"\n\t\t请输入您要修改的商品名称:"; cin>>name; a=Have(kind,name); if(a!=-1) { intchoice; doubleprice; intnum; cout<<"\n\t\t1.修改价格"<<endl; cout<<"\n\t\t2.修改库存"<<endl; cout<<"\n\t\t"; cin>>choice; if(choice==1) {cout<<"\n\t\t请输入修改价格为:"; cin>>price; something[a]->Set_Price(price);} if(choice==2) { cout<<"\n\t\t请输入修改库存为:"; cin>>num; something[a]->Set_Num(num); }} else return0; return1;}该函数实现了对商品信息的修改功能,可修改商品的价格以及库存量。3.6查询商品代码解释intSystem::Find(){ stringkind=Ask(); stringname; inta; cout<<"\n\t\t请输入您要查找的商品名称:"; cin>>name; a=Have(kind,name); if(a!=-1) something[a]->Show(); else return0; return1;}该函数实现了对商品信息的查询功能,并且显示出所查商品的所有信息。3.7统计商品代码解释voidSystem::Statistics(){ cout<<"\n\t\t1.对价格统计"<<endl; cout<<"\n\t\t2.对库存统计"<<endl; cout<<"\n\t\t"; cin>>statis; itemtemp; vector<item>st; for(unsignedinti=0;i<something.size();i++) { =something[i]->Get_Name(); temp.price=something[i]->Get_Price(); temp.num=something[i]->Get_Num(); st.push_back(temp);} sort(st.begin(),st.end());//排序 if(statis==1) { cout<<"名称:"<<"价格:"<<endl; for(unsignedinti=0;i<something.size();i++) cout<<st[i].name<<""<<st[i].price<<endl;} if(statis==2) { cout<<"名称:"<<"库存:"<<endl; for(unsignedinti=0;i<something.size();i++) cout<<st[i].name<<""<<st[i].num<<endl; }}该函数实现了对商品信息的统计功能,可分别统计所有商品的价格和库存量,并且按照由小到大的顺序显示输出。
4系统功能实现4.1系统功能主菜单界面实现图4.1系统主菜单页面4.2商品购买界面实现图4.2购买商品操作界面4.3商品添加界面实现图4.3添加商品操作界面4.4商品修改界面实现图4.4修改商品操作界面4.5商品统计界面实现图4.5统计商品操作界面5软件测试1、intSystem::Buy()/*购买商品*/例1:input:(商品种类):1 output:日常用品信息例2:input:(购买数量,单价15):2output:商品品牌:10元2、intSystem::Add()/*添加商品信息*/例1:input:(商品名称):雪碧output:商品品牌:雪碧例2:input:(商品库存量):500
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天气卡通英文课件
- 叮叮DIY创意生活体验馆商业项目策划书
- 中国聚酰亚胺覆铜板项目商业计划书
- 金融科技的创新技术方案
- 地板砖铺设合同协议书
- 无底薪合同协议书模板
- 零食客栈创业规划书与零食店创业计划书汇编
- 大学生西装创业计划书
- 简易劳务清包工合同协议书
- 2025年高纯度铬行业深度研究分析报告
- 物流无人机垂直起降场选址与建设规范
- JGJ64-2017饮食建筑设计标准(首发)
- 《成人四肢血压测量的中国专家共识(2021)》解读
- 旅游行业旅行社经理劳动合同样本
- DBJ50-T-417-2022 建筑施工高处坠落防治安全技术标准
- 医院物业挂靠协议书
- 部编版五年级下册道德与法治期末测试卷带答案(考试直接用)
- 高速公路养护施工作业安全隐患及对策
- 2024年社区工作者考试必背1000题题库必背【满分必刷】
- 断绝父子关系申请书
- MOOC 现代科技与人类未来-大连大学 中国大学慕课答案
评论
0/150
提交评论