程序设计基础实践报告
- 格式:doc
- 大小:188.00 KB
- 文档页数:41
程序设计实训实验报告(热门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的线性代数计算库,进行最小二乘法的计算。
实验结果:成功掌握最小二乘法的计算方法,并了解其在实际应用中的作用。
实验六:常微分方程实验目的:了解ODE的基本概念和解法,并通过Matlab进行计算。
实验内容:利用Matlab求解ODE的一阶微分方程组、变系数ODE、高阶ODE等问题。
实验方法:基于Matlab的ODE工具箱,进行ODE求解。
实验结果:深入理解ODE的基本概念和解法,掌握多种ODE求解方法,熟练掌握Matlab的ODE求解工具箱的使用方法。
总结在Matlab环境下进行程序设计实验,使我对Matlab有了更深刻的认识和了解,也使我对计算机科学在实践中的应用有了更加深入的了解。
通过这些实验的学习,我能够灵活应用Matlab进行各种计算和数值分析,同时也能够深入理解相关的数学原理和算法。
这些知识和技能对我未来的学习和工作都将有着重要的帮助。
程序设计实践活动报告模板1. 活动背景和目的本次程序设计实践活动旨在让学生通过参与具体项目的开发,深入理解软件开发过程中的设计原则、工具和技术,并培养解决实际问题的能力和团队合作意识。
2. 活动内容本次活动分为两个阶段。
首先,我们组成了由5名成员组成的团队,根据老师提供的要求和条件,选择了开发一个在线购物系统的项目。
然后,我们按照敏捷开发的方法进行项目开发,分别完成需求分析、设计、编码、测试、部署等环节。
2.1 需求分析我们首先与老师详细讨论了项目的需求和功能点,并对用户需求进行了调研和分析。
在此基础上,我们撰写了项目需求文档,明确了系统的功能和界面设计。
2.2 设计在需求分析的基础上,我们进行了系统的概要设计和详细设计。
首先,我们使用UML建模工具设计了系统的类图、用例图和状态图等。
然后,我们根据设计原则和设计模式编写了详细设计文档,并对系统的数据库进行了设计。
2.3 编码在设计阶段完成后,我们开始进行编码工作。
根据设计文档,每个成员负责一个或多个模块的实现。
我们使用敏捷开发的方法,采用迭代开发的方式,每个迭代周期为两周,定期进行代码评审和测试。
2.4 测试在编码阶段完成后,我们进行了系统的单元测试、集成测试和系统测试。
我们编写了测试用例,对系统的各个功能模块进行了全面测试,并解决了发现的问题。
2.5 部署在测试完成后,我们进行了部署工作。
我们选择了云平台作为系统的部署环境,并对系统进行了配置和优化,确保系统可以稳定运行。
3. 活动成果经过我们团队的共同努力,我们成功地完成了在线购物系统的开发。
系统实现了用户注册、商品浏览、购物车管理、下订单等功能。
用户可以通过系统进行账号注册、查看商品信息、选择购买商品并下订单。
4. 活动总结通过本次活动,我们从理论到实践,全面提高了软件开发的能力和经验。
在需求分析阶段,我们学会了如何与用户进行有效的沟通和需求收集。
在设计和编码阶段,我们掌握了软件设计原则和设计模式,并熟悉了常用的开发工具和技术。
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. 培养逻辑思维能力和问题解决能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容1. 简单计算器(1)功能描述编写一个简单的计算器程序,能够实现加、减、乘、除四种基本运算。
(2)实现步骤1)定义一个函数,用于获取用户输入的两个数和一个运算符。
2)根据运算符进行相应的运算,并返回运算结果。
3)在主函数中调用该函数,打印运算结果。
(3)代码实现```pythondef calculator(num1, num2, operator):if operator == '+':return num1 + num2elif operator == '-':return num1 - num2elif operator == '':return num1 num2elif operator == '/':return num1 / num2else:return "无效的运算符"def main():num1 = float(input("请输入第一个数:"))num2 = float(input("请输入第二个数:"))operator = input("请输入运算符(+、-、、/):")result = calculator(num1, num2, operator)print("结果是:", result)if __name__ == "__main__":main()```2. 循环结构(1)功能描述编写一个程序,实现计算1到100之间所有奇数的和。
一、实习背景随着计算机技术的飞速发展,程序设计已成为当今社会的重要技能之一。
为了提高自己的专业技能,拓宽知识面,我选择了程序设计基础课程进行实习。
本次实习旨在通过实际操作,加深对程序设计基础知识的理解,提高编程能力和实际应用能力。
二、实习目的1. 掌握程序设计的基本概念和原理;2. 熟悉一种编程语言(如C/C++、Java、Python等);3. 学会使用常用的程序设计工具和环境;4. 培养良好的编程习惯和团队协作能力;5. 提高解决实际问题的能力。
三、实习内容1. 理论学习在实习过程中,我重点学习了程序设计的基本概念、原理和方法,包括:(1)程序设计的基本概念:算法、数据结构、程序结构、程序设计范式等;(2)程序设计原理:面向过程、面向对象、模块化设计等;(3)编程语言:C/C++、Java、Python等;(4)程序设计工具和环境:集成开发环境(IDE)、版本控制工具等。
2. 实践操作在实习过程中,我按照以下步骤进行实践操作:(1)安装编程语言环境和工具,如Visual Studio、Eclipse、PyCharm等;(2)学习编程语言的基本语法和特性;(3)编写简单的程序,如计算器、排序算法等;(4)尝试解决实际问题,如设计一个图书管理系统、实现一个简单的游戏等;(5)参与团队项目,与其他成员共同完成一个复杂的应用程序。
3. 项目实践在实习过程中,我参与了一个小型项目——学生信息管理系统。
该项目主要实现了学生信息的录入、查询、修改和删除等功能。
通过该项目,我学会了以下技能:(1)需求分析:与团队成员沟通,明确项目需求;(2)系统设计:设计系统架构、数据库表结构、功能模块等;(3)编码实现:编写代码,实现系统功能;(4)测试与调试:对系统进行测试,找出并修复存在的问题;(5)文档编写:编写项目文档,包括需求文档、设计文档、用户手册等。
四、实习成果1. 掌握了程序设计的基本概念、原理和方法;2. 熟练掌握了C/C++编程语言;3. 学会了使用Visual Studio、Eclipse、PyCharm等编程工具和环境;4. 具备了一定的团队协作能力和解决实际问题的能力;5. 完成了学生信息管理系统项目,实现了项目需求。
计算机基础与程序设计实践报告标题:计算机基础与程序设计实践报告引言:计算机基础与程序设计是计算机科学与技术专业的核心课程之一,本报告旨在总结和分享本学期的学习成果和经验。
通过本学期的学习,我对计算机基础知识和程序设计有了更深入的理解,并能够独立完成一些实际的编程任务。
一、计算机基础知识的学习与总结:1. 计算机组成与结构:学习了计算机的组成和各个主要部件的功能,如中央处理器、存储器、输入输出设备等,并了解了它们之间的工作原理和协作方式。
2. 操作系统与文件管理:学习了操作系统的功能和任务,掌握了文件管理的基本操作,并了解了进程管理、内存管理、文件系统等操作系统的重要概念和技术。
3. 网络与通信:学习了计算机网络的基本概念、原理和协议,了解了互联网的组成和工作方式,并学会了使用网络工具进行网络配置和故障排查。
4. 数据结构与算法:学习了常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、查找、图算法等),并能够灵活应用它们解决实际问题。
二、程序设计实践的经验和收获:1. 编程语言的选择和学习:经过对多种编程语言的比较和评估,最终选择了Python作为主要的编程语言,并通过自学和实践掌握了Python的基本语法和特性,能够进行简单的程序设计和开发。
2. 程序设计思维的培养:通过编程实践,我逐渐培养了良好的程序设计思维,学会了分析问题、设计算法和实现代码的方法,能够高效地解决实际问题,并编写出可读性和可维护性较高的代码。
3. 团队合作与沟通:在实践项目中,我与同学合作完成了一些小型的程序开发任务,通过合作学会了与他人进行有效的沟通和协作,提高了自己的团队合作能力和项目管理能力。
4. 调试与问题解决能力的提升:在编程实践中,我遇到了很多错误和问题,通过耐心的调试和查找解决方案的过程,我逐渐提高了自己的调试能力和问题解决能力,能够更快地找到问题所在并解决它们。
结论:通过本学期的学习和实践,我对计算机基础知识和程序设计有了更全面的理解,并能够独立进行一些实际的编程任务。
福建师范大学闽南科技学院程序设计基础实践报告题目职工工资信息管理系统学生姓名陈显泽学院信息科学与工程学院专业班级土木工程1班完成时间 2017.4.20指导教师褚若波目录一、课程设计目的和要求...................................二、课程设计基本内容....................................三、程序功能简介........................................四、主体内容............................................4.1 设计分析......................................4.2 程序结构......................................4.3 模块的功能及程序说明..........................4.4 相关模块源程序................................4.5 操作方法(流程)................................4.6 试验结果(包括输入数据和输出结果).............4.7 设计体会......................................4.8 参考文献......................................五、用户使用说明........................................六、对本设计过程及方法、手段的改进建议..................一、课程设计的目的和要求本次课程设计,是基于“面向对象编程(C++)”课程学习内容的重要实践环节,其主要目的在于通过综合程序课程设计,培养和提高学生的独立分析问题、解决实际问题的能力和计算机语言编程能力。
本次课程设计时间为2周,要求每位同学在为期两周的时间段内,在编程环境下,用面向对象程序设计思想进行C++程序设计、功能模块调试,在正确、合理的软件功能规划的基础上,实现公用接口与私有实现的分离,独立完成相关设计题所规定的任务、进行课程设计报告编写与整理。
福建师范大学闽南科技学院程序设计基础实践报告题目职工工资信息管理系统学生姓名陈显泽学院信息科学及工程学院专业班级土木工程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 : 定义控制台应用程序的入口点。