程序设计基础实践报告
程序设计实训实验报告(热门20篇)

程序设计实训实验报告(热门20篇)c语言是在国内外广泛使用的一种计算机语言。
其语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。
其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,unix,linux,mac,os/2,无一例外,哪一个不是c 语言写的?很多新型的语言如,c++,java,c,j,perl...都是衍生自c语言。
掌握了c语言,可以说你就掌握了很多门语言。
学习c程序这门课一年了,这是我们学的第一门专业课,在大学里c语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程。
所以作为我这个计算机专业的学生来说当然十分重要,老师在第一节课说过,c语言是计算机的基础,大多数软件都需要用c语言来编写,通过一个年的学习,使我由初步掌握简单的应试知识到完成高难度的深入编程,如我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。
同时,我觉得c语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。
在学习一年c语言的过程中我也在慢慢探索怎样才能学好c语言,并总结了一点经验:要了解c语言就要从语法规为基础来学习起,首先要是要了解它的结构,比如变量,首先要了解变量的定义方式(格式),其意义是什么(定义变量有什么用);其次就是要我要怎么去运用它(我要用什么型式去应用它)。
在c语言的命令行中所有的语句都是有它自己的一定格式和形式出现在我们面前,所以我们在学习某种语句或命令时你首先要了解的就是它的规则是什么、有什么用、怎么实现等。
这些都是语法基础也是c语言的基础如果把它们都了解很好了,那么你编起程序来就很得心应手了。
比如说ifelse和switchcase这两种条件语句都是用来判断执行功能的,那我要什么时侯用if什么时侯用switch呢?如果你很好地了解它们的结构和作用的话那么就知道:若它的条件分支是多个而且条件的值是整数或是一个字符值时就会选switch而不会选if。
《基础程序设计综合实践》实践报告范文

实践报告:基础程序设计综合实践一、引言本报告是针对《基础程序设计综合实践》课程的实践内容进行总结和分析。
通过该实践,我对基础程序设计的知识有了更深入的理解,并且掌握了实际应用的能力。
二、实践目标本次实践的主要目标是:1. 学习并掌握基础程序设计语言(如C、Java等)的基本语法和特性;2. 熟悉常见的程序设计模式和算法;3. 运用所学知识完成一系列实际案例的编程任务。
三、实践过程在实践过程中,我按照以下步骤进行了学习和实践:1. 学习基础程序设计语言的语法和特性:我通过阅读教材和参考资料,系统地学习了所选的程序设计语言的基本语法和常用特性。
这包括变量定义、控制流程、函数调用等内容。
2. 学习程序设计模式和算法:为了提高程序的可维护性和扩展性,我学习了一些常见的程序设计模式和算法。
例如,单例模式、观察者模式、递归算法等。
这些模式和算法对于解决实际问题非常有帮助。
3. 完成编程任务:根据教师布置的编程任务,我运用所学知识完成了一系列实际案例的编程任务。
这些任务涵盖了不同难度和领域的问题,包括数据结构、图像处理、网络编程等。
在完成任务的过程中,我不断调试和优化代码,提高程序的效率和可读性。
四、实践收获通过《基础程序设计综合实践》的实践,我获得了以下收获:1. 熟练掌握了基础程序设计语言的语法和特性,能够独立编写简单到中等复杂程度的程序;2. 掌握了常见的程序设计模式和算法,能够灵活运用它们解决实际问题;3. 增强了问题分析和解决的能力,学会了如何将实际问题转化为计算机程序;4. 加深了团队协作和沟通能力,在与同学一起完成编程任务时,学会了合理分工和交流合作。
五、总结与展望通过《基础程序设计综合实践》的实践,我不仅巩固了基础程序设计的知识,还培养了实际应用的能力。
在未来,我将继续深入学习程序设计的高级知识和技术,不断提升自己的编程水平。
同时,我也会积极参与开源项目和编程竞赛,锻炼自己在实际项目中的编程能力。
程序设计基础的实训报告

一、实训目的本次实训旨在通过实际编写程序,巩固和加深对程序设计基础知识的理解,提高编程能力和解决问题的能力。
通过实训,使学生能够掌握程序设计的基本流程,熟悉常用编程语言和开发工具,具备独立编写程序、调试和优化程序的能力。
二、实训内容1. 编程语言:C语言2. 开发工具:Visual Studio3. 实训任务:(1)编写一个计算两个整数相加的程序;(2)编写一个计算两个整数相减的程序;(3)编写一个计算两个整数相乘的程序;(4)编写一个计算两个整数相除的程序,要求考虑除数为0的情况;(5)编写一个计算阶乘的程序;(6)编写一个冒泡排序的程序,对一组整数进行排序;(7)编写一个插入排序的程序,对一组整数进行排序;(8)编写一个选择排序的程序,对一组整数进行排序。
三、实训过程1. 编写计算两个整数相加的程序```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("两数之和为:%d\n", sum); return 0;}```2. 编写计算两个整数相减的程序```c#include <stdio.h>int main() {int a, b, sub;printf("请输入两个整数:");scanf("%d %d", &a, &b);sub = a - b;printf("两数之差为:%d\n", sub); return 0;}```3. 编写计算两个整数相乘的程序```c#include <stdio.h>int main() {int a, b, mul;printf("请输入两个整数:");scanf("%d %d", &a, &b);mul = a b;printf("两数之积为:%d\n", mul);return 0;}```4. 编写计算两个整数相除的程序,考虑除数为0的情况```c#include <stdio.h>int main() {int a, b, div;printf("请输入两个整数:");scanf("%d %d", &a, &b);if (b == 0) {printf("除数不能为0\n");} else {div = a / b;printf("两数之商为:%d\n", div);}return 0;}```5. 编写计算阶乘的程序```c#include <stdio.h>int factorial(int n) {if (n == 0) {return 1;} else {return n factorial(n - 1);}}int main() {int n;printf("请输入一个整数:");scanf("%d", &n);printf("%d的阶乘为:%d\n", n, factorial(n)); return 0;}```6. 编写冒泡排序的程序```c#include <stdio.h>void bubbleSort(int arr[], int n) {int i, j, temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}int main() {int arr[] = {5, 3, 8, 6, 2};int n = sizeof(arr) / sizeof(arr[0]); int i;bubbleSort(arr, n);printf("排序后的数组:");for (i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```7. 编写插入排序的程序```c#include <stdio.h>void insertionSort(int arr[], int n) {int i, j, key;for (i = 1; i < n; i++) {key = arr[i];j = i - 1;while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}}int main() {int arr[] = {5, 3, 8, 6, 2};int n = sizeof(arr) / sizeof(arr[0]); int i;insertionSort(arr, n);printf("排序后的数组:");for (i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```8. 编写选择排序的程序```c#include <stdio.h>void selectionSort(int arr[], int n) { int i, j, min_idx, temp;for (i = 0; i < n - 1; i++) {min_idx = i;for (j = i + 1; j < n; j++) {if (arr[j] < arr[min_idx]) { min_idx = j;}}temp = arr[min_idx];arr[min_idx] = arr[i];arr[i] = temp;}}int main() {int arr[] = {5, 3, 8, 6, 2};int n = sizeof(arr) / sizeof(arr[0]);int i;selectionSort(arr, n);printf("排序后的数组:");for (i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```四、实训心得通过本次实训,我深刻体会到了程序设计的重要性。
程序设计实验报告(matlab)

程序设计实验报告(matlab)实验一: 程序设计基础实验目的:初步掌握机器人编程语言Matlab。
实验内容:运用Matlab进行简单的程序设计。
实验方法:基于Matlab环境下的简单程序设计。
实验结果:成功掌握简单的程序设计和Matlab基本编程语法。
实验二:多项式拟合与插值实验目的:学习多项式拟合和插值的方法,并能进行相关计算。
实验内容:在Matlab环境下进行多项式拟合和插值的计算。
实验方法:结合Matlab的插值工具箱,进行相关的计算。
实验结果:深入理解多项式拟合和插值的实现原理,成功掌握Matlab的插值工具箱。
实验三:最小二乘法实验目的:了解最小二乘法的基本原理和算法,并能够通过Matlab进行计算。
实验内容:利用Matlab进行最小二乘法计算。
实验方法:基于Matlab的线性代数计算库,进行最小二乘法的计算。
实验结果:成功掌握最小二乘法的计算方法,并了解其在实际应用中的作用。
实验六:常微分方程实验目的:了解ODE的基本概念和解法,并通过Matlab进行计算。
实验内容:利用Matlab求解ODE的一阶微分方程组、变系数ODE、高阶ODE等问题。
实验方法:基于Matlab的ODE工具箱,进行ODE求解。
实验结果:深入理解ODE的基本概念和解法,掌握多种ODE求解方法,熟练掌握Matlab的ODE求解工具箱的使用方法。
总结在Matlab环境下进行程序设计实验,使我对Matlab有了更深刻的认识和了解,也使我对计算机科学在实践中的应用有了更加深入的了解。
通过这些实验的学习,我能够灵活应用Matlab进行各种计算和数值分析,同时也能够深入理解相关的数学原理和算法。
这些知识和技能对我未来的学习和工作都将有着重要的帮助。
程序技术基础实验报告

程序技术基础实验报告实验目的:本实验旨在通过实践操作,加深对程序设计基础的理解,掌握基本的编程技巧,提高解决实际问题的能力。
实验环境:1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++ 或 Java实验内容:本次实验主要包括以下几个部分:1. 基础语法学习:包括变量声明、数据类型、运算符、控制结构等。
2. 函数编写:实现自定义函数,包括参数传递和返回值。
3. 数组操作:学习数组的声明、初始化和基本操作。
4. 字符串处理:掌握字符串的创建、修改和基本操作。
5. 面向对象编程:理解类和对象的概念,实现简单的类和对象。
实验步骤:1. 打开Visual Studio 2019,创建一个新的项目。
2. 根据实验要求,编写相应的代码。
3. 编译并运行程序,检查程序是否能够正确执行预期功能。
4. 调试程序,解决可能出现的错误。
5. 根据实验结果,撰写实验报告。
实验结果:在本次实验中,成功实现了以下功能:1. 编写了基础语法的示例代码,并通过编译和运行验证了语法的正确性。
2. 完成了自定义函数的编写,包括求和、求平均等简单数学运算。
3. 掌握了数组的声明和操作,编写了数组排序和查找的程序。
4. 学习了字符串的基本操作,实现了字符串的拼接、分割和反转。
5. 理解了面向对象编程的基本概念,编写了简单的类和对象,实现了属性和方法的封装。
实验心得:通过本次实验,我对程序设计基础有了更深入的理解。
实验过程中,我学会了如何使用开发工具进行编程,如何调试程序以及如何解决编程中遇到的问题。
面向对象编程的概念也让我对程序设计有了全新的认识。
在未来的学习中,我将继续深入探索编程的更多领域,提升自己的编程能力。
结论:本次实验报告总结了程序技术基础实验的全过程,从实验目的、环境、内容、步骤到结果和心得,全面展示了实验的成果。
通过本次实验,我不仅掌握了编程的基础知识,还提高了解决问题的能力,为进一步学习程序设计打下了坚实的基础。
程序设计实践活动报告模板

程序设计实践活动报告模板1. 活动背景和目的本次程序设计实践活动旨在让学生通过参与具体项目的开发,深入理解软件开发过程中的设计原则、工具和技术,并培养解决实际问题的能力和团队合作意识。
2. 活动内容本次活动分为两个阶段。
首先,我们组成了由5名成员组成的团队,根据老师提供的要求和条件,选择了开发一个在线购物系统的项目。
然后,我们按照敏捷开发的方法进行项目开发,分别完成需求分析、设计、编码、测试、部署等环节。
2.1 需求分析我们首先与老师详细讨论了项目的需求和功能点,并对用户需求进行了调研和分析。
在此基础上,我们撰写了项目需求文档,明确了系统的功能和界面设计。
2.2 设计在需求分析的基础上,我们进行了系统的概要设计和详细设计。
首先,我们使用UML建模工具设计了系统的类图、用例图和状态图等。
然后,我们根据设计原则和设计模式编写了详细设计文档,并对系统的数据库进行了设计。
2.3 编码在设计阶段完成后,我们开始进行编码工作。
根据设计文档,每个成员负责一个或多个模块的实现。
我们使用敏捷开发的方法,采用迭代开发的方式,每个迭代周期为两周,定期进行代码评审和测试。
2.4 测试在编码阶段完成后,我们进行了系统的单元测试、集成测试和系统测试。
我们编写了测试用例,对系统的各个功能模块进行了全面测试,并解决了发现的问题。
2.5 部署在测试完成后,我们进行了部署工作。
我们选择了云平台作为系统的部署环境,并对系统进行了配置和优化,确保系统可以稳定运行。
3. 活动成果经过我们团队的共同努力,我们成功地完成了在线购物系统的开发。
系统实现了用户注册、商品浏览、购物车管理、下订单等功能。
用户可以通过系统进行账号注册、查看商品信息、选择购买商品并下订单。
4. 活动总结通过本次活动,我们从理论到实践,全面提高了软件开发的能力和经验。
在需求分析阶段,我们学会了如何与用户进行有效的沟通和需求收集。
在设计和编码阶段,我们掌握了软件设计原则和设计模式,并熟悉了常用的开发工具和技术。
程序设计实习报告范文精简版

程序设计实习报告程序设计实习报告1. 实习概述本次实习是一门程序设计实习课程,旨在通过实际应用开发的方式,让学生运用所学的编程知识,解决实际问题,培养实际动手实践和团队协作能力。
在本次实习中,我参与了一个团队项目,负责开发一个简单的任务管理系统。
2. 项目背景随着科技的不断发展,人们的生活变得越来越快节奏,需要处理的事务也越来越多。
为了更好地管理和组织任务,我们决定开发一个任务管理系统,帮助用户高效地完成任务,并通过提醒和统计功能,帮助用户更好地管理时间和资源。
3. 技术选型在项目开发过程中,我们选择了以下技术进行开发:- 前端:、CSS、JavaScript、React.js- 后端:Python、Flask框架、MySQL数据库这些技术的选择主要考虑了开发效率和项目需求的匹配性。
4. 开发过程4.1 需求分析在项目开始之前,我们进行了详细的需求分析,确定了系统的功能和用户需求。
主要功能包括任务的创建、编辑与删除,任务的状态管理,任务的提醒功能等。
4.2 原型设计在需求分析的基础上,我们进行了项目的原型设计。
通过使用设计工具创建界面原型,我们可以更好地理解用户交互界面,并和团队成员一起讨论和改进设计。
4.3 前端开发前端开发部分,我们采用了React.js框架进行开发。
使用React.js可以快速构建用户界面,并实现较好的组件化开发,提高了开发效率和代码质量。
4.4 后端开发后端开发部分,我们使用Python语言和Flask框架进行开发。
Flask是一个轻量级的Web框架,易于上手和扩展,非常适合小型项目的开发。
我们使用MySQL数据库进行数据存储和管理,通过API与前端进行数据交互。
4.5 与优化为了保证系统的质量和稳定性,我们进行了工作。
通过单元、集成和系统,发现并修复了一些潜在的问题和bug。
我们对系统进行了优化,提高了系统的性能和用户体验。
5. 项目通过本次实习项目的开发,我深刻体会到了软件开发的全过程。
C语言程序设计实习报告

C语言程序设计实习报告一、实习目的1. 巩固和加深对C语言程序设计的理解。
2. 掌握C语言编程的基本技巧和方法。
3. 提高分析问题、解决问题的能力。
4. 学会将理论知识应用于实际编程中。
二、实习内容XXX语言基础语法练习变量、数据类型、运算符、表达式等基础语法练习。
控制结构(顺序、分支、循环)的实现。
函数的定义和调用方式练习。
2. 模块化程序设计将一个大的程序分解成多个模块,每个模块完成特定的功能。
通过模块间的调用和传递数据来实现整个程序的功能。
3. 文件操作与文件读写文件的打开、关闭、读写操作练习。
文件格式的转换和数据统计处理。
4. 预处理指令与宏定义使用预处理指令进行条件编译和宏定义替换。
练习使用常见的预处理指令如include、define、ifdef等。
5. 结构体、链表与指针结构体的定义和使用。
链表的创建、插入、删除、遍历等操作。
指针的概念和指针运算。
深入理解指针与数组、结构体等数据结构的关系。
6. 位运算与嵌入式系统编程学习位运算符的使用和位段操作的实现。
嵌入式系统的基本概念和编程方法。
7. 综合项目实践参与或独立完成一个综合性C语言程序设计项目。
项目可以包括基于命令行参数的程序设计、基于文件操作的程序设计、基于网络编程的程序设计等。
三、实习过程1. 理论学习:通过教材、网络资源等途径学习C语言的基础知识和编程技巧。
2. 上机实践:在计算机上编写和调试C语言程序,不断巩固所学知识。
3. 问题解决:遇到问题时,通过查阅资料、请教老师或同学等方式解决问题。
4. 团队合作:在小组项目中与他人协作,共同完成任务。
四、实习收获1. 知识技能方面:深入理解了C语言的基本概念和编程技巧,掌握了模块化程序设计和文件操作等常用算法。
2. 解决问题能力方面:学会了如何分析问题、寻找解决方案并通过实践验证解决方案的正确性。
3. 团队协作能力方面:学会了与他人合作,共同完成任务,提高了团队协作能力。
4. 职业素养方面:培养了耐心、细致的工作态度和勇于尝试、敢于创新的探索精神。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
福建师范大学闽南科技学院程序设计基础实践报告题目职工工资信息管理系统学生姓名陈显泽学院信息科学与工程学院专业班级土木工程1班完成时间 2017.4.20指导教师褚若波目录一、课程设计目的和要求...................................二、课程设计基本内容....................................三、程序功能简介........................................四、主体内容............................................4.1 设计分析......................................4.2 程序结构......................................4.3 模块的功能及程序说明..........................4.4 相关模块源程序................................4.5 操作方法(流程)................................4.6 试验结果(包括输入数据和输出结果).............4.7 设计体会......................................4.8 参考文献......................................五、用户使用说明........................................六、对本设计过程及方法、手段的改进建议..................一、课程设计的目的和要求本次课程设计,是基于“面向对象编程(C++)”课程学习内容的重要实践环节,其主要目的在于通过综合程序课程设计,培养和提高学生的独立分析问题、解决实际问题的能力和计算机语言编程能力。
本次课程设计时间为2周,要求每位同学在为期两周的时间段内,在编程环境下,用面向对象程序设计思想进行C++程序设计、功能模块调试,在正确、合理的软件功能规划的基础上,实现公用接口与私有实现的分离,独立完成相关设计题所规定的任务、进行课程设计报告编写与整理。
而且也是为了培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
课程设计结束时,要求进行设计成果演示(由指导老师验收相关程序运行成果并打分);每人须对相关电子文档进行整理上交(包括:程序文件、帮助说明文档);交课程设计报告一份(纸质打印稿)。
二、课程设计的内容设计一个职工信息管理案例,实现不同类别职工的工资数据。
职工的种类包括:正式职工和临时工。
定义一个基本的职工类,基本信息包括:编号、姓名、性别、年龄、家庭住址、基本职务工资。
派生出正式职工类,增加的属性包括:岗位津贴、养老金、住房公积金、所得税、医疗保险、实发工资;临时工增加的属性包括:奖金、所得税、实发工资。
1.正式职工:实发工资=基本职务工资+岗位津贴-养老金-住房公积金-所得税-医疗保险;2.临时工:实发工资=基本职务工资+奖金-所得税;基本功能与技术要求1、数据文件管理功能:利用输入输出流创建新文件、打开文件、保存文件。
2、计算与统计功能:采用静态数据成员与成员函数完成记录中相关数据的统计;1)能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:工资总额、平均值)2)计算每个职工的实发工资。
3、记录管理功能:利用继承与派生思想创建不同的类;记录的管理采用链表或者指针数组实现;采用抽象类、虚函数等实现对象与函数的动态关联,体现多态性。
1)输入/添加/插入记录:利用重载运算符“>>”完成对任意一条记录输入、添加或插入数据表中,并保存到数据文件中。
2)查询、显示记录:能够打开已存在的数据表文件,根据用户要求按所给记录关键字查询一个或多个相关联记录的各项信息。
利用重载运算符“<<”输出个对象的信息。
3)修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。
4)删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。
三、程序功能简介数据文件管理功能:利用输入输出流创建新文件、打开文件、保存文件。
计算与统计功能:用静态数据成员与成员函数完成记录中相关数据的统计;记录管理功能:实现输入,插入,删除,恢复等功能。
四、主体内容4.1 设计分析设置基本类staff,并由此派生出正式职工类formal和临时工类casual.由于在派生类中都要用到同名的同功能函数,所以在基类中定义了虚函数,以实现对象与函数的动态关联。
在整个程序中定义了三个函数string InputNormalInfo(istream &input,string tip, char type);(用于直到输入正确类型的数据才返回)void SaveToFile(fstream &file,staff *s);(用于保存信息到指定文件)void ReadFromFile(fstream &file,staff **s);(用于从文件读取信息),InputNormalInfo函数用于对测试过程中一些由输入错误引起的错误的纠正。
最后在主函数中用SWITCH语句实现了对文件,信息的相关操作。
为了体现C++工程性的特点,本程序中的类,函数单独作为头文件和CPP文件,最后在主程序中调用即可。
即为了实现面向对象中的公用借口与私有实现的分离。
4.2 程序结构4.3 各模块的功能及程序说明a.函数模块(作为三个头文件)①string InputNormalInfo(istream &input,string tip, char type);用于直到输入正确类型的数据才返回。
执行过程中用户可能会由于不小心输入错误,而是系统终止运行,系统就会出错。
用这个函数检查用户的输入是否正确,提高程序的可行性。
②void SaveToFile(fstream &file,staff *s);用于保存信息到指定文件。
此函数执行对职工数据的保存。
③void ReadFromFile(fstream &file,staff **s); 用于从文件读取信息。
b.主函数模块(作为最终的主程序)创建主菜单界面,以供用户选择。
用SWITCH语句和链表实现相关操作。
①职工信息文件模块:case '1':(新建)case '2':(打开)case '3':(保存)case '4':(另存为)②职工信息输入模块:case '5':(输入信息)③职工信息插入模块:case '6':(插入信息)④职工信息显示模块:case '7':(显示信息)⑤职工信息查询模块: case '8':(查询信息)⑥职工信息统计关键字模块: case '9':(统计关键字(工资总额,平均值))⑦职工信息删除模块: case 'a':(删除信息)⑧职工信息恢复模块:case 'b':(恢复信息)⑨退出系统模块:case 'q':(退出程序)c.类模块(每个类作为一个头文件,类的函数作为cpp文件)①staff基本职工类:class staff{}定义了职工的基本信息,数据包括编号,姓名,年龄等。
设置输入输出重载友元函数,计算工资的虚函数。
②formal正式职工类:class formal:public class staff{}增加正式职工的其他数据,比如保险之类的。
明确定义计算工资函数③casual临时工类:class casual:public class staff{}增加临时工的附加信息。
明确定义计算工资函数。
4.4 相关模块源程序a.函数模块①InputNormalInfo函数cpp文件源程序#include"staff.h"#include"formal.h"#include"casual.h"string InputNormalInfo(istream &input, string tip, char type) //用于直到输入正确类型的数据才返回{string str; //临时变量while (1){bool wrong = false; //记录是否输入错误cout << tip;if (INT == type)cout << "(请输入整数)";else if (DECIMAL == type)cout << "(请输入小数或整数)";cout.put(':');getline(input, str);if (INT == type) //整数{for (auto iter = str.cbegin(); iter != str.cend(); iter++) //使用迭代器检查是否输入的都是整数{if (!isdigit(*iter)) //不是数字{wrong = true;break;}}}else if (DECIMAL == type) //小数{bool point = false; //记录是否已经读取到小数点for (auto iter = str.cbegin(); iter != str.cend(); iter++) //使用迭代器检查是否输入的是小数{if (!isdigit(*iter)) //不是数字{if ('.' == *iter && !point) //第一次读取到小数点{point = true; //已经读取小数点continue;}//否则输入错误wrong = true;break;}}}//判断输入是否错误if (!wrong)return str;}}②SaveToFile函数cpp文件源程序#include"staff.h"#include"casual.h"void SaveToFile(fstream &file, staff *s) //用于保存信息到指定文件{if (&file == &cout){staff *p = s;while (p){cout << *p << '\n';p = p->next;}}else{fstream temp;temp.open(path, ios::out);staff *p = s;while (p){temp << *p << '\n';p = p->next;}temp.close();}}③ReadFromFile函数cpp文件源程序#include"staff.h"#include"formal.h"void ReadFromFile(fstream &file, staff **s) //用于从文件读取信息{file.seekg(0, ios::beg);if (*s) //如果已有信息{delete *s;*s = NULL;}string input; //记录读取到的一行staff *p = NULL;staff *tail = NULL; //记录链表尾部do //读取标题{getline(file, input);if ("-正式工-" == input)p = new formal;else if ("-临时工-" == input)p = new casual;elsecontinue;file >> *p;//清除多余的信息if (!*s) //第一次读入tail = *s = p;elsetail = tail->next = p;} while (file.good());file.clear();}b.主函数模块cpp文件源程序// 职工工资信息系统.cpp : 定义控制台应用程序的入口点。