C程序设计 模板.docx
《C程序设计 模板.docx》由会员分享,可在线阅读,更多相关《C程序设计 模板.docx(65页珍藏版)》请在冰豆网上搜索。
![C程序设计 模板.docx](https://file1.bdocx.com/fileroot1/2023-4/16/20d36f06-b2fe-4d26-9149-ed4d901af14e/20d36f06-b2fe-4d26-9149-ed4d901af14e1.gif)
C程序设计模板
沈阳工程学院
信息学院
C++程序设计
课程设计
设计题目:
公司人员管理系统
系别计算机科学与技术系班级
学生姓名
学号
指导教师代钦李波崔妍职称讲师/讲师/讲师
起止日期:
2016年6月20日起——至2016年7月8日止
任务分工
组长姓名
题目
公司人员管理系统
项目组成员
个人任务描述
自我评定
负责小组分工合作,编写程序的菜单和显示的模块,并将所有的程序汇总,排版好整个报告,绪论,总结等等。
主要负责编写程序的添加和删除模块,并画出相应的流程图。
主要负责编写程序的数据相应的设置和查询模块,并画出相应的流程图。
主要负责编写保存及退出函数,并画出相应的流程图。
沈阳工程学院
课程设计成绩评定表
院(系):
信息学院班级:
学生姓名:
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
0.1
5
4
3
2
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
0.2
5
4
3
2
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
0.2
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.5
5
4
3
2
指导教师评审成绩
(加权分合计乘以8)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价内容
具体要求
权重
评分
加权分
查阅
文献
查阅文献有一定广泛性;有综合归纳资料的能力
0.2
5
4
3
2
工作量
工作量饱满,难度适中。
0.5
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.3
5
4
3
2
评阅教师评审成绩
(加权分合计乘以4)
分
加权分合计
评阅教师签名:
年月日
答辩小组评审意见
评价内容
具体要求
权重
评分
加权分
学生汇报
汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。
0.5
5
4
3
2
答辩
思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。
0.5
5
4
3
2
答辩小组评审成绩
(加权分合计乘以8)
分
加权分合计
答辩小组教师签名:
年月日
沈阳工程学院
课程设计成绩评定表
院(系):
信息学院班级:
学生姓名:
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
0.1
5
4
3
2
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
0.2
5
4
3
2
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
0.2
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.5
5
4
3
2
指导教师评审成绩
(加权分合计乘以8)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价内容
具体要求
权重
评分
加权分
查阅
文献
查阅文献有一定广泛性;有综合归纳资料的能力
0.2
5
4
3
2
工作量
工作量饱满,难度适中。
0.5
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.3
5
4
3
2
评阅教师评审成绩
(加权分合计乘以4)
分
加权分合计
评阅教师签名:
年月日
答辩小组评审意见
评价内容
具体要求
权重
评分
加权分
学生汇报
汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。
0.5
5
4
3
2
答辩
思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。
0.5
5
4
3
2
答辩小组评审成绩
(加权分合计乘以8)
分
加权分合计
答辩小组教师签名:
年月日
沈阳工程学院信息学院
课程设计任务书
课程设计题目:
公司人员管理系统
系别计算机科学与技术系班级
学生姓名
学号
指导教师代钦李波崔妍职称讲师/讲师/讲师
课程设计进行地点:
实训楼F六楼机房
任务下达时间:
年月日
起止日期:
2016年6月20日起——至2016年7月8日止
系主任年月日批准
一、课程设计的原始资料及依据
查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的windows系统。
通过本设计可以加深理解使用面向对象程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。
二、课程设计主要内容及要求
设计内容:
某小型公司,主要有四类人员:
经理,兼职技术人员,销售经理和兼职推销员.
人员信息包括姓名,编号,级别,当月薪水,计算月薪总额等
能够显示这些人员的全部信息.
添加删除功能:
能根据公司人事的变动情况,添加删除记录;
查询功能:
能根据编号和姓名进行查询;
保存功能:
启动程序时能读取人员信息,关闭程序时能将信息保存至硬盘文件。
人员编号在生成人员信息时自动生成,每输入一个人员信息编号顺序加1。
设计要求:
(1)要求利用面向对象的方法完成系统的设计;
(2)要求在设计的过程中建立清晰的类层次,并画出类图;
(3)设计功能满足要求、易于操作的友好界面;
(4)界面中需有菜单、工具栏、状态栏;
(5)在系统的设计中,至少要用到面向对象的一种机制:
继承、多态等;
(6)在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。
三、对课程设计说明书撰写内容、格式、字数的要求
1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:
设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:
封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求
1.完成“任务书”中指定的功能,运行结果正确。
2.课程设计说明书。
五、时间进度安排
序号
主要内容
学时
备注
1
进行设计准备,阅读资料,分析设计任务书,明确设计要求、内容和步骤
1天
2
需求分析
1天
3
总体设计
1天
4
详细设计
1天
5
功能实现
5天
编写代码
6
程序调试
2天
调试代码
7
测试
1天
测试代码
8
撰写课程设计报告
2天
整合报告
9
答辩
1天
教师给出答辩成绩
合计
15天
六、主要参考资料(文献)
[1]郑莉董渊张瑞丰编着.《C++语言程序设计》(第4版).北京:
清华大学出版社.2010
[2]陈维兴,林小茶.《C++高级程序设计教程》.北京:
清华大学出版社
[3]谭浩强.《C++程序设计教程》.北京:
中国科学技术出版社
[4]王燕.《面向对象的理论与C++实践》.北京:
清华大学出版社
[5]马石安,魏文平.主编《VisualC++程序设计与应用教程》.北京:
清华大学出版社
[6]王育坚.主编《VisualC++面向对象编程教程》(第二版).北京:
清华大学出版
第一章绪论
1.1绪论
公司人员管理系统是公司管理中的一个重要内容,随着时代的进步,公司人员数量也不断增加、分工的不断细化、各个行业间联系的不断密切,对人事管理的要求也不断提高。
早期的人工方式的管理系统已不适合现代企业的公司的发展,实现企业人事管理的系统化、规范化、自动化,是现代公司管理的首选。
此次课程设计的目的是以《C++语言程序设计》为基础,针对具有一定难度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向对象和面向过程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合,提高分析问题、解决问题的能力。
通过设计一个简单的公司人员管理系统,进一步熟悉C++中类的概念、类的封装、继承和多态的实现方式。
了解系统开发的需要分析,类层次设计,模块分析,编码测试,模块组装与整体调试的全过程,逐步熟悉程序设计的方法,并养成良好的编程习惯。
1.2课程设计的目的
要求学生能够熟练掌握C++语言的基本知识和技能。
基本掌握面向对象程序设计的基本思路和方法。
能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
1.3设计内容和要求
1.3.1设计内容:
某小型公司,主要有四类人员:
经理,兼职技术人员,销售经理和兼职推销员.
人员信息包括姓名,编号,级别,当月薪水,计算月薪总额等
能够显示这些人员的全部信息.
添加删除功能:
能根据公司人事的变动情况,添加删除记录;
查询功能:
能根据编号和姓名进行查询;
保存功能:
启动程序时能读取人员信息,关闭程序时能将信息保存至硬盘文件。
人员编号在生成人员信息时自动生成,每输入一个人员信息编号顺序加1。
1.3.2设计要求:
(1)要求在设计的过程中建立清晰的类层次,并画出类图;
(2)设计功能满足要求、易于操作的友好界面;
(3)在系统的设计中,至少要用到面向对象的一种机制:
继承、多态等;
(4)在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。
1.4系统分析
1.4.1问题分析
根据问题描述和要求,系统要求能够按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。
确定程序至少应该具备如下功能:
“查询人员”、“增加人员”、“删除人员”、“数据存盘”基本模块。
系统既然具有“数据存盘”功能-人员数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出人员数据,所以系统增加了“人员数据装入”模块,以方便用户使用、避免数据重复录入。
考虑到系统实现简捷,人员数据文件采用文本文件,人员数据文件名:
Person.txt。
考虑到根据编号查找人员信息功能在“删除人员”模块都使用,所以可以考虑设置为一个模块。
考虑到系统要求人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
这样就要求人员编号在增加人员时自动生成(增加1)且不重复。
根据这个要求,可以考虑设置一个全局量:
“当前最大编号”,每增加一个人员,当前最大编号自动增1,然后新增加人员使用这个编号。
为了保证系统能记忆这个编号,可以使用一个数据文件保存当前这个编号。
系统每次开始运行前从文件读入这个编号,随着人员增加,编号自动增加,系统每次运行结束时将这个编号写入文件。
本系统将初值(没有一个用户时)设置为0。
考虑到人员的许多固定信息如:
经理、销售经理的固定月薪,销售经理、销售人员提成,技术人员小时工资等都是一些不需要每个人员都要输入的信息,所以可以将这些信息都保存在一个数据文件中,本系统为了方便起见,将这些信息与“最大编号”全部保存在一个文件中,并使用“基础数据设置”模块进行设置和管理。
基础数据文件也采用文本文件,基础数据文件名:
Base.txt。
本系统还提供“查询本月经营信息”帮助计算销售总额,工资总额,并按照公式计算本月盈亏。
综合考虑系统具有下面8项功能模块:
增加人员,删除人员,修改人员,查询本月经营信息,基础数据设置,数据存盘,数据装入。
系统使用的数据文件格式如下:
Base.txt:
(格式:
项目数据)
经理固定月薪3000
销售经理固定月薪2000
销售经理提成%1
销售人员提成%2
技术人员小时工资20
ID6
Person.txt:
(格式:
编号,姓名,人员类别,其它数据,销售员销售额,技术人员工作小时)
2shijinwan3100000
3hejinwei1
4zengying4100
5chenying2
6sunyiming3150000
注:
人员类型编号1-经理;2-销售经理;3-销售员;4-技术人员
1.6课程设计意义
通过设计此系统,熟练掌握C++语言的基本知识和技能,基本掌握面向对象程序开发的基本思路和方法,培养学生的动手操作能力,提高自主学艺能力,能够利用所学的基本知识和技能,进行简单应用程序设计。
加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。
第二章设计原理与运行环境
2.1c++语言概述
2.1.1C++语言概述
C++语言即保留了C语言的有效性、灵活性、便于移植等全部精华和特点,有添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合与各种应用软件、系统软件的程序设计。
用C++编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢10%~20%。
2.1.2C++语言的主要特点
C++语言是C语言的超集。
它即保持了C语言的简洁、高效和接近汇编语言等特点,又克服了C语言的缺点,其编译系统能检查更多的语法错误,因此,C++比C语言更安全。
C++保持了与C语言的兼容。
绝大多数C语言程序可以不经修改直接在C++环境中运行,用C语言编写的众多库函数可以用于C++程序中。
C++程序在可重用性、可扩充性、可维护性和可靠性等方面都较C语言得到了提高,使其更适合开发大中型的系统软件和应用程序。
C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
2.2基本操作
1.新建一个工程
首先鼠标左键单击“文件”菜单,选择“新建”单击鼠标左键,系统将弹出一个窗口,单击“工程”选项,将得到图2.1所示窗口。
请在“工程名称”栏填入工程名,然后鼠标左键单击左边窗口倒数第三项“Win32ConsoleApplication”,使该项变蓝,然后鼠标左键单击“确定”按钮。
得到图2.2所示窗口,选择“一个空工程”,单击“完成”得到图2.3。
再单击“确定”得到图2.4所示的窗口。
图2.4VisualC++6.0的工作环境
2.新建一个源文件
要新建一个C程序源文件可以选择“文件”菜单的“新建”选项,在弹出的窗口中选择“文件”选项单击,得到如图2.5所示的窗口,其“位置”栏中的内容是默认的,在“添加到工程”前打勾,“工程名”也是默认的。
3.编辑程序
编辑环境如图2.6所示。
把程序代码输入计算机,如图2.7所示。
图2.6编辑区域
图2.7编辑程序
4.编译、连接、运行、调试一个程序
当源文件编辑完成后,就可以编译、连接和运行程序了。
方法如下:
①单击“组建”菜单的“编译”选项,将完成编译工作得到***.cpp目标文件(文件名就是源文件的名字),编译结果将在窗口最下面的输出窗口显示。
可根据窗口的提示修改源文件以改正错误。
②单击“组建”菜单的“组建”选项,完成连接工作得到可执行文件(文件名是工程名),连接的结果也将在窗口最下面的输出窗口显示。
③单击“组建”菜单的“全部重建”选项,将完成编译和连接两项工作,编译和连接的结果将在输出窗口显示。
④单击“组建”菜单的“执行”选项,可运行程序,程序运行的结果如图2.8所示。
图2.8程序运行结果
第三章系统分析与设计
3.1系统设计
3.1.1系统总体框架
使用面向对象的程序设计思想进行分析,整个系统涉及两大类信息和操作,公司,人员。
所以系统主要涉及两个大类:
公司类Company、人员类Person。
系统的总体框架就是公司类,人员类的定义;主函数中定义一个公司对象,循环显示主菜单并根据用户选择调用公司类的相应方法(成员函数)。
(1)公司类Company:
考虑系统操作的人员信息的数量具有不确定性,所以考虑使用链表保存、处理人员信息。
公司类包含:
所有人员信息的一个不带头结点的链表(作为数据成员)及可以对人员信息进行增,删,改,查询经营信息,基础数据设置,数据存盘,数据装入等操作的相关模块(Add,Delete,Modify,Query,Set,Save,Load)作为成员函数。
(2)人员类Person:
所有人员都具有的公共信息及操作可以使用人员类进行描述。
由于系统具有4类人员且4类人员数据,操作有所不同,如销售员包含销售额,而技术人员包含工作小时数且计算工资的方法不同,所以应当为4类人员创建相应的Person类的派生类。
(3)为了使公司类可以方便处理人员信息,可以考虑将公司类确定为人员类的友元类或者人员类提供公共的方法以便公司类进行操作。
为了公司类可以用共同方法操作人员类,可以将人员类的方法确定为虚函数。
3.1.2类的层次图
类的层次图如图3.1所示。
Person
{No,Name,Duty,Earning,next,Person(),CalcSalary(),Output()}
ManagerSalesSalesManagerTechnician
{Manager(),{Amount,{Amount,{t,
CalcSalary(),Sales(),GetAmount(),SalesManager(),Technician(),
Output()}SetAmount(),SetAmount(),GetT(),SetT(),
CalcSalary(),CalcSalary(),CalcSalary(),
Output()}Output()}Output()}
3.1类的层次图
其中:
Person类的No-人员编号,Name-人员姓名,Duty-人员类别,Earning-工资,next-指向下一个人员的指针;Person类的CalcSalary(),Output()定义为纯虚函数分别表示要计算人员工资和输出人员信息,由于定义纯虚函数,所以Person是抽象类,具体计算工资,输出人员信息由派生类完成。
各个派生的类,包含本类对象特有的数据,Sales:
:
Amount-销售员销售额,SalesManager:
:
Amount-销售经理的总销售额(系统统计各个销售员销售额得到销售经理的总销售额),Technician:
:
t-技术人员工作小时数。
Company
{Person*Worker,
Clear(),Company(),~Company(),Add(),Delete(),Modify(),
Query(),Set(),Save(),Load()}
其中:
Worker就是人员链表。
Clear()用于清除人员链表所有结点。
Add(),Delete(),Modify(),Query(),Set(),Save(),Load()分别表示系统各个功能模块:
增加人员,删除人员,修改人员,查询本月经营信息,基础数据设置,数据存盘,数据装入。
3.1.3系统流程图
主函数首先调用菜单函数,显示菜单,菜单函数给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能。
菜单函数返回一个值给主函数,主函数根据返回值,调用相应函数。
主函数流程图如图3.2所示
图3.2主函数流程图
3.2系统关键算法流程图
(1)增加人员Company:
:
Add()
图3.3增加人员函数流程图
(2)删除人员Company:
:
Delete()
图3.4删除人员函数流程图
(3)显示本月经营信息Company:
:
Display()
图3.5显示本月经营信息函数流程图
(4)查询Company:
:
Query()
图3.6查询函数流程图
(4)保存Company:
:
Save()
图3.7保存函数流程图
(7)数据装入Company:
:
Load()
图3.7数据装入函数流程图
第四章系统功能的实现
4.1菜单函数
菜单函数首先标出欢迎使用公司人员管理系统,然后给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能。
程序源代码如下:
voidmain()
{
charc;
Companya;
do
{
system("cls");
cout<<"\n\t\t***********公司人员管理系统***********\n";
cout<<"\t\t\t1-增加人员\n";
cout<<"\t\t\t2-删除人员\n";
cout<<"\t\t\t3-显示本月经营信息\n";
cout<<"\t\t\t4-基础数据设置\n";
cout<<"\t\t\t5-查询\n";
cout<<"\t\t\t6-保存\n";
cout<<"\t\t\t7-退出\t请选择(1-7):
";
cin>>c;
switch(c)
{
case'1':
a.Add();system("pause");break;
case'2':
a