1、xx大学 软件设计基础-C+课程设计报告设计名称: 高校人事管理系统 姓 名: 学 号: 专业班级: 学 院: 设计时间: 设计地点: 成绩:指导教师评语: 指导教师签字: 年 月 日word文档 可自由复制编辑目 录1.课程设计目的32.课程设计任务与要求33.课程设计说明书44.课程设计成果75.程序调试过程146.设计问题的不足和改进方案157.课程设计心得168.参考文献171课程设计目的软件设计基础-C+课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C+的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能
2、力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C+这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2课程设计任务与要求:要求:本次课程设计利用软件设计基础-C+课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必须按要求提交课程设计报告任务:某高校,主要人员有:在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储
3、这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。(1)添加删除功能:能根据高校人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历人数);(5)保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。3课程设计说明书概要设计模块说明:高校人事管理系统的设计程序共包括七个模块,分别是添
4、加并保存模块、删除模块、修改模块、查询模块、统计模块、显示模块、退出系统模块。我所做的是前三个模块,通过程序中数据类型和函数用类来实现,人员类person,定义了相应的构造函数和构造函数的重载以及一些成员函数。此外还利用switch语句、if函数、while循环等。模块结构图:高校人士管理系统删除人员信息修改人员信息查询人员信息统计人员信息显示所有信息 退出添加人员并保存 详细设计 总体流程图:选择要修改的人员信息运行选择要删除的人员信息管理系统主页面分别输入要输入的人员信息删除之后添加完最后一项之后修改完之后各功能模块流程图:(1)添加人员信息功能:能根据人事的变动情况,添加记录;姓名人员类
5、型1添加人员信息并保存并保存bibingbaocun职务性别年龄职称政治面貌最高学历任职时间来院时间主页面(2)删除人员信息功能:能根据人事的变动情况,删除记录;2删除人员信息主页面删除信息人员的编号(3)编辑功能:根据查询对相应的记录进行修改,并存储;修改的项目的代号修改的人的编号3修改人员信息并保存bibingbaocun人员的新的信息修改完毕主页面4课程设计成果1. 源程序代码#include#include/文件流,数据流输入输出#include #include/参数化输入输出是setw()函数的头文件using namespace std;int k;class person /人
6、员基本信息/人员类 似有数据成员private: char num10; /序号/ char type20; /编号/ char name20; /姓名/ char sex10; /性别/ char age10; /年龄/ char zhiwu20; /职务/ char zhichen20; /职称/ char zzmm20; /政治面貌/ char zgxl20; /最高学历/ char rzsj20; /任职时间/ char lysj30; /来院时间/ static int bianhao;public:/构造函数一 void setperson(char *type1,char *na
7、me1,char *sex1,char *age1,char *zhiwu1, char *zhichen1,char *zzmm1,char *zgxl1,char *rzsj1,char *lysj1); static int& getbianhao() return bianhao; char * gettype() return type; char * getname() return name; char * getsex() return sex; char * getage() return age; char * getzhiwu() return zhiwu; char *
8、 getzhichen() return zhichen; char * getzzmm() return zzmm; char * getzgxl() return zgxl; char * getrzsj() return rzsj; char * getlysj() return lysj; char * getnum() return num; void tjry(); void find(); /查找匹配信息/ void output(); /输出/ void shancu(); /删除/ void xiugai(); /修改/ void tongji(); /统计/;person
9、p100;person pp100;int k1;int person:bianhao=0;/构造函数二void person:setperson(char *type1,char *name1,char *sex1,char *age1,char *zhiwu1, char *zhichen1,char *zzmm1,char *zgxl1,char *rzsj1,char *lysj1)/*某高校,主要人员有:在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。 现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。
10、 int static j=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+; ofstream file(添加人员.txt,ios_base:app); filepj.getbianhao()endl
11、; filepj.gettype()endl; filepj.getname()endl; filepj.getsex()endl; filepj.getage()endl; filepj.getzhiwu()endl; filepj.getzhichen()endl; filepj.getzzmm()endl; filepj.getzgxl()endl; filepj.getrzsj()endl; filepj.getlysj()ppk.getnum(); filemppk.gettype(); filemppk.getname(); filemppk.getsex(); filemppk.
12、getage(); filemppk.getzhiwu(); filemppk.getzhichen(); filemppk.getzzmm(); filemppk.getzgxl(); filemppk.getrzsj(); filemppk.getlysj(); k+; filem.close(); cout请输入要被删除信息的人的编号:z; while(zbianhao) cout没有找到你要删除的人,请重新输入:z; for(k=1;k=bianhao;k+) if(z=k) continue; ofstream file2(添加人员.txt,ios_base:trunc); file
13、2ppk.getnum()endl; file2ppk.gettype()endl; file2ppk.getname()endl; file2ppk.getsex()endl; file2ppk.getage()endl; file2ppk.getzhiwu()endl; file2ppk.getzhichen()endl; file2ppk.getzzmm()endl; file2ppk.getzgxl()endl; file2ppk.getrzsj()endl; file2ppk.getlysj()endl; file2.close(); cout删除记录完毕ppk.getnum();
14、filemppk.gettype(); filemppk.getname(); filemppk.getsex(); filemppk.getage(); filemppk.getzhiwu(); filemppk.getzhichen(); filemppk.getzzmm(); filemppk.getzgxl(); filemppk.getrzsj(); filemppk.getlysj(); k+; filem.close(); cout请输入要修改的人的编号:x; cout请输入编号为x的人需要修改的项目的代号:endl; cout1:编号-2:人员类型-3:姓名-4:性别-5:年龄
15、-6:职务-7:职称-8:政治面貌-9:最高学历-10:任职时间-11:来院时间y; switch(y) case 1: coutppx.getnum() ; break; case 2: coutppx.gettype(); break; case 3: coutppx.getname(); break; case 4: coutppx.getsex(); break; case 5: coutppx.getage(); break; case 6: coutppx.getzhiwu(); break; case 7: coutppx.getzhichen(); break; case 8:
16、 coutppx.getzzmm(); break; case 9: coutppx.getzgxl(); break; case 10: coutppx.getrzsj(); break; case 11: coutppx.getlysj(); break; ofstream file1(添加人员.txt,ios_base:trunc); for(k=1;k=bianhao;k+) file1ppk.getnum()endl; file1ppk.gettype()endl; file1ppk.getname()endl; file1ppk.getsex()endl; file1ppk.get
17、age()endl; file1ppk.getzhiwu()endl; file1ppk.getzhichen()endl; file1ppk.getzzmm()endl; file1ppk.getzgxl()endl; file1ppk.getrzsj()endl; file1ppk.getlysj()endl; file1.close(); cout修改并保存完毕endl;2.运行结果图1:运行首界面图2添加人员信息界面图3人员信息删除界面图4人员信息修改界面5.程序调试过程将已经编好的程序放在VC+6.0的环境中进行调试与测试,发现程序中的错误,在提示的情况下进行改正。检查了是否缺少了分
18、号(行结束符),if、else是否匹配、switch 语句用法是否对等。注意,宏定义、包含文件定义结束不需分号,而类定义结束需要分号。注意声明函数时,各函数之间的调用关系。 变量、函数未定义、重定义: 检查了变量大小写、是否包含了相应的头文件(包括你自己的和 MFC、Windows 的)。将程序编写完成后,进行编译,出现了error C2143: syntax error : missing ; before ,error C2043: illegal break,error C2046: illegal case,rror C2018: unknown character 0xa3,erro
19、r C2146: syntax error : missing ; before identifier i,rror C2143: syntax error : missing ; before )等错误,经过不断的调试,我们改正了所有的错误,编译通过了,但连接不正确,还是有警告,我们又进行了改正,将所有错误改正。 遇到了一些没有学过的知识点,在老师的指导下不断修改,有时去图书馆查询一些问题,在网上进行查询,最终得到了此程序。6.设计问题的不足和改进方案优点:使用结构使程序的输入输出更简洁 使用函数可以使程序更简便;不足:输入的内容比较多;用文件储存信息不能用结构输入;读取文件中的信息也不能用
20、结构读取; 程序比较大,各部分之间的关系繁琐;改进方案:可以将每个模块弄成头文件的部分,是主程序变得简便明了;还可以利用MFC将窗口变得美观。7.课程设计心得1.做这次课程设计明显的看出自己的不足,以及自己所学知识的有限,遇到的最大问题就是拿到这个题目无从下手,后来经过老师的教导和自己查找有关资料得以解决。问题一:对课程设计的题目的题意不是很清楚。后来通过和伙伴共同探讨,知道了题目大概要用到什么知识点。问题二:对于课程设计中有关清屏的函数不是很清楚。通过网络资源,找到了解决方案;问题三:问题最大的就是链表的操作不是很熟。通过看书和参考资料对链表的知识进行了回顾,与进一步掌握。2.我觉得可以用类
21、中的派生类做比较好,那样的话,程序的条理比较清晰,并且容易理解。3.可以扩充的功能可以加上计算员工工资的结算(如按照薪水和奖金以及罚金结算工资),还有可以加上运用运算符重载的功能实现。我希望我做的课程设计有个美好的界面以及很方面地为广大消费者服务。可以的话,加上些消遣的小程序也是可以的,同时提供些学习的程序方便学习英语以及其他。C+是比C语言更高级的一门语言,我们也可以通过学习C语言来学习C+,这样就可以减少学习中遇到的困难。想要学好C+,让我们一起努力吧。8.参考文献1 谭浩强著. C语言程序设计. 清华大学出版社 2008 2关治,陈景俩。数值计算。北京:清华大学出版社,19933刘振安。面向对象程序设计C+版。北京:机械工业出版社,20064 彭佩。面向对象程序设计教程。北京:高等教育出版社,20015 郑莉,董渊,张瑞丰。C+语言程序设计(第三版)。北京:清华大学出版社,2007