程序设计实习课程设计(实训)报告书.
程序设计实训实验报告(热门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语言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;}```四、实训心得通过本次实训,我深刻体会到了程序设计的重要性。
idea程序设计实训报告

Idea程序设计实训报告的重述引言在过去的几周里,我一直在进行一项关于Idea程序设计实训的研究。
这个实训项目涵盖了许多重要的主题和概念,包括程序设计、开发、调试和测试。
在这篇文章中,我将对这个实训报告进行重述,以帮助我更全面、深刻和灵活地理解这一主题。
我将首先回顾实训的目标和要求,然后深入探讨我在实践中学到的关键概念和技能。
最后,我将分享我的观点和理解,强调实训对我的学习和职业发展的重要性。
实训目标和要求在实训的开始阶段,我了解到实训的主要目标是培养我们的程序设计和开发能力。
我们被要求选择一个问题或项目,然后使用Idea开发工具来设计、开发和测试一个应用程序,以解决这个问题或实现这个项目。
这个目标旨在帮助我们熟悉软件开发的整个过程,从问题定义和需求分析到设计和实施,最后进行测试和调试。
此外,实训还强调了团队合作和沟通的重要性。
我们被要求在小组中合作,分享想法,解决问题,并最终合并各自的工作以创建一个完整的应用程序。
这提供了一个宝贵的机会,让我们学会如何与他人协作,了解团队动态,以及如何有效地传达和交流我们的设计和开发决策。
概念和技能的学习1. 需求分析在实训的早期阶段,我们花了很多时间来分析问题并确定项目的需求。
这包括与项目相关方的讨论,以确保我们理解他们的期望和需求。
这个过程强调了需求分析的重要性,它是软件开发过程的基础。
只有在我们清楚地理解了问题和需求之后,我们才能开始设计和实施解决方案。
2. 设计和架构一旦我们明确了需求,我们就开始了设计和架构的过程。
这包括定义应用程序的整体结构,确定数据模型和用户界面设计。
我们学会了如何使用UML(统一建模语言)来绘制类图、时序图和用例图,以帮助我们可视化和共享我们的设计。
3. 编码和实施实训的一个关键阶段是编写代码和实施应用程序。
我们使用Idea开发工具来编写Java代码,并学习了如何组织代码、管理依赖关系和使用版本控制系统。
这个过程教会了我们如何将设计转化为实际可运行的软件。
java语言程序设计实验报告

java语言程序设计实验报告篇一:Java实验八报告《Java语言程序设计》实验报告学生姓名:郭倩班级:信息112学号:201152275208实验地点:经管实验中心证券实验室指导教师:赵利平实验日期:实验环境:Windows 2000+JDK1.61. 实验目的(1)理解子类派生的概念(2)学习创建子类对象(3)掌握方法覆盖的使用2.实验内容(1)设计三个类:完成实验教材P52页程序清单4-2;(2)通过编制一个程序来加深对嵌套类、内部类和局部类的理解:完成实验教材P56页程序清单4-3;2. 实验过程报告撰写具体要求:上述实验内容要求写出源代码及运行结果。
实验内容(1)://Polymorphism.abstract class Student{final static int CourseNo=3;String name;String type;int[] courses;String courseGrade;public Student(String name){=name;courses=new int[CourseNo];courseGrade=null;}public abstract void calculateGrade();public String getName(){return name;}public String getType(){return type;}public String getCourseGrade(){return courseGrade;}public int getCourseScore(int courseNumber){return courses[courseNumber];}public void setName(String name){=name;}public void setType(String type){this.type=type;}public void setCourseScore(int courseNumber,int courseScore){this.courses[courseNumber]=courseScore;}}class Undergraduate extends Student{public Undergraduate(String name){super(name);type="本科生";}public void calculateGrade(){int total=0;double average=0;for(int i=0;i<CourseNo;i++){total+=courses[i];};average=total/CourseNo;if(average>=80&&average<100) coursegrade="优秀" else="" average="">=70&&average<80) coursegrade="良好" else="" average="">=60&&average<70) coursegrade="一般" else="" average="">=50&&average<60) courseGrade="及格";else courseGrade="不及格";}}class Postgraduate extends Student{public Postgraduate(String name){super(name);type="研究生";}public void calculateGrade(){int total=0;double average=0;for(int i=0;i<CourseNo;i++){total+=courses[i];};average=total/CourseNo;if(average>=90&&average<100) coursegrade="优秀" else="" average="">=80&&average<90) coursegrade="良好"else="" average="">=70&&average<80) coursegrade="一般" else="" average="">=60&&average<70) courseGrade="及格";else courseGrade="不及格";}}public class Polymorphism{public static void main(String[] args){Student[] students=new Student[5];students[0]=new Undergraduate("陈建平");students[1]=new Undergraduate("鲁向东");students[2]=new Postgraduate("匡晓华");students[3]=new Undergraduate("周丽娜");students[4]=new Postgraduate("梁欣欣");for(int i=0;i<5;i++){students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for(int i=0;i<5;i++){students[i].calculateGrade();}System.out.println("姓名"+" 类型"+" 成绩");}}System.out.println("-------------------------"); for(int i=0;i<5;i++){ System.out.println(students[i].getName()+" "+students[i].getType()+" "+students[i].getCourseGrade()); }(1) 都有(2) Student[] students=new Student[5];(3) Student是抽象的,不能用new操作符创建抽象类的实例。
程序设计综合设计实训报告

一、实训目的本次程序设计综合设计实训旨在通过实际项目开发,巩固和深化程序设计相关理论知识,提高学生的编程能力、团队协作能力和问题解决能力。
通过实训,使学生能够熟练掌握程序设计的基本方法、技巧和工具,为今后从事软件开发工作打下坚实基础。
二、实训内容本次实训项目为“学生信息管理系统”,主要包括以下功能:1. 学生信息录入:包括姓名、性别、年龄、班级、学号、联系方式等基本信息。
2. 学生信息查询:根据姓名、学号、班级等条件查询学生信息。
3. 学生信息修改:对已录入的学生信息进行修改。
4. 学生信息删除:删除不需要的学生信息。
5. 数据备份与恢复:对系统数据进行备份和恢复,确保数据安全。
6. 用户权限管理:设置不同用户的登录权限,包括管理员、教师、学生等。
三、实训过程1. 项目需求分析在实训开始前,我们对项目进行了详细的需求分析,明确了项目目标、功能模块、性能指标等。
通过与指导老师、团队成员的讨论,明确了以下需求:(1)系统应具备良好的用户界面,操作简单易懂。
(2)系统应具备数据备份与恢复功能,确保数据安全。
(3)系统应具备用户权限管理功能,满足不同用户的需求。
2. 系统设计根据需求分析,我们制定了以下系统设计方案:(1)采用B/S架构,前端使用HTML、CSS、JavaScript等技术,后端使用Java语言和MySQL数据库。
(2)使用MVC设计模式,将系统分为模型(Model)、视图(View)和控制器(Controller)三个部分。
(3)使用Spring框架进行项目开发,简化开发过程。
3. 系统开发在系统开发过程中,我们遵循以下步骤:(1)前端开发:完成页面布局、样式设计、交互逻辑等。
(2)后端开发:完成业务逻辑处理、数据库操作、接口设计等。
(3)测试与调试:对系统进行功能测试、性能测试、安全测试等,确保系统稳定可靠。
4. 团队协作在实训过程中,我们遵循以下团队协作原则:(1)明确分工:根据团队成员的特长,合理分配任务。
程序设计技能实训报告总结

一、前言随着计算机技术的不断发展,程序设计已成为现代社会不可或缺的一项技能。
为了提高我的程序设计能力,我在本学期参加了程序设计技能实训课程。
通过这段时间的学习和实践,我对程序设计有了更深入的理解,以下是我对本次实训的总结。
二、实训目的与要求本次实训的目的是通过实际操作,使我掌握程序设计的基本原理、方法和技巧,提高我的编程能力。
实训要求如下:1. 熟练掌握编程语言(如C、Java、Python等)的基本语法和编程规范;2. 能够独立完成小型程序设计项目,具备一定的调试和优化能力;3. 了解软件工程的基本概念,掌握需求分析、设计、编码、测试等环节;4. 培养良好的编程习惯,提高代码的可读性和可维护性。
三、实训内容与过程本次实训主要分为以下几个阶段:1. 理论学习:了解程序设计的基本概念、编程语言、开发环境等,掌握程序设计的基本原则和技巧。
2. 编程实践:根据实训要求,独立完成以下项目:(1)使用C语言编写一个计算器程序,实现加、减、乘、除等基本运算功能;(2)使用Java语言编写一个学生管理系统,实现学生信息的录入、查询、修改和删除等功能;(3)使用Python语言编写一个网络爬虫程序,抓取指定网站的信息并存储到数据库中。
3. 项目优化:对已完成的项目进行优化,提高程序的性能和稳定性。
4. 交流与分享:与同学们交流学习心得,分享编程经验和技巧。
四、实训成果与收获1. 编程能力得到显著提高:通过本次实训,我熟练掌握了C、Java、Python等编程语言的基本语法和编程规范,提高了编程能力。
2. 项目实践能力得到锻炼:在完成项目过程中,我学会了如何分析需求、设计算法、编写代码和调试程序,提高了项目实践能力。
3. 团队协作能力得到提升:在实训过程中,我与同学们相互交流、互相帮助,共同完成项目,提高了团队协作能力。
4. 编程思维得到拓展:通过学习程序设计,我学会了如何从实际问题出发,运用编程思维解决问题,拓展了我的思维。
【报告】java实训报告总结(三篇)
java实训报告总结(三篇)篇一:java实验实训内蒙古商贸职业学院计算机系学生校内实验实训报告20--20学年第学期系部:计算机系课程名称:Java程序设计教程专业班级:内蒙古商贸职业学院计算机系制填写说明1、实验项目名称:要用最简练的语言反映实验的内容,要与实验指导书或课程标准中相一致。
2、实验类型:一般需要说明是验证型实验、设计型实验、创新型实验、综合型实验。
3、实验室:实验实训场所的名称;组别:实验分组参加人员所在的组号。
4、实验方案设计(步骤):实验项目的设计思路、步骤和方法等,这是实验报告极其重要的内容,概括整个实验过程。
对于操作型实验(验证型),要写明需要经过哪几个步骤来实现其操作。
对于设计型和综合型实验,在上述内容基础上还应该画出流程图和设计方法,再配以相应的文字说明。
对于创新型实验,还应注明其创新点、特色。
5、实验小结:对本次实验实训的心得体会、思考和建议等。
6、备注:分组实验中组内成员分工、任务以及其他说明事项。
注意:①实验实训分组完成的,每组提交一份报告即可,但必须说明人员分工及职责。
不分组要求全体成员独立完成的实验实训项目可由指导老师根据个人完成情况分组填写。
②实验成绩按照百分制记,根据教学大纲及课程考核要求具体区分独立计算、折算记入两种情况。
③本实验实训报告是根据计算机系实验的具体情况在学院教务处制的实验实训报告的基础上进行改制的。
特此说明。
成绩单组别:小组成员:篇二:实训实训收获总结报告学部:计算机信息学院学科门类:计算机信息类专业:计算机应用技术姓名:朱恩林学号:____020实习单位:北京盛威南凌信息科技有限公司指导教师:王洪钊实习时间:____年5月15号―9月23号一、实训目的计算机信息管理专业的java实训在教学计划中是实训、实习课程。
它涵盖了java开发和工程组织、数据结构等多项相关知识。
通过对java语言、JavaWeb、数据库、jsp、html+css、ssh框架应用设计及SQL 语言的复习和锻炼,并且通过使用elipse开发平台设计库存管理系统项目,以达到充分熟悉开发平台及其应用设计。
程序设计实训后的总结报告
一、前言随着计算机科学的飞速发展,程序设计已成为当今社会不可或缺的技术之一。
为了提升我们的实践能力和综合素质,我国高校普遍开展了程序设计实训课程。
经过一段时间的实训,我深刻体会到了程序设计的重要性,以下是我在实训过程中的总结报告。
二、实训目的与内容1. 实训目的本次实训旨在通过实际编程操作,加深对程序设计理论知识的理解,提高编程能力,培养团队协作精神和创新意识。
2. 实训内容实训主要包括以下几个方面:(1)C语言基础:学习C语言的基本语法、数据类型、运算符、控制结构、函数等。
(2)面向对象编程:掌握面向对象的基本概念,如类、对象、继承、多态等。
(3)数据结构:学习常用数据结构,如数组、链表、栈、队列、树、图等。
(4)算法设计与分析:学习算法设计的基本方法,如分治、动态规划、贪心算法等。
(5)软件工程:了解软件生命周期、需求分析、设计、编码、测试、维护等过程。
三、实训过程与收获1. 实训过程实训过程分为三个阶段:(1)理论学习:通过课堂学习,掌握了程序设计的基本理论知识。
(2)实践操作:在实验室完成老师布置的编程任务,锻炼编程能力。
(3)项目开发:以小组为单位,完成一个完整的程序设计项目。
2. 实训收获(1)编程能力得到提升:通过实际编程操作,我对C语言、面向对象编程、数据结构等理论知识有了更深入的理解,编程能力得到显著提高。
(2)团队协作能力得到锻炼:在项目开发过程中,我与团队成员共同探讨问题、分工合作,培养了团队协作精神。
(3)创新意识得到提高:在解决实际问题时,我学会了从不同角度思考问题,提高了创新意识。
(4)沟通能力得到提升:在实训过程中,我与同学、老师进行了充分的沟通,提高了沟通能力。
四、实训中遇到的问题及解决方法1. 问题(1)编程过程中遇到语法错误或逻辑错误。
(2)数据结构复杂,难以理解。
(3)算法设计困难。
2. 解决方法(1)查阅资料:遇到编程错误时,我通过查阅资料、请教同学和老师,找出错误原因并进行修改。
程序设计实训报告(9篇)
程序设计实训报告(9篇)【导语】程序设计实训报告怎么写出亮点?整理了9篇优秀的《程序设计实训报告》通用版范文,有规范的开头结尾写法和标准的书写格式。
是您写出深受大家欢迎的综合报告抱负参考模板,盼望对您有所关心。
【第1篇】程序设计实训报告程序设计实训报告1一,实训目的:加深对可视化编程技术基本学问的理解,把握运用vb开发应用程序的基本方法及基本技巧。
二,实训时间:20xx年10月20xx年11月三,实训方式:上机操作四,实训类容:这次在杨立雄老师的带领下,利用vb开发工具与数据库sql开发一个使用的小型管理信息系统。
我选择了学籍管理系统。
它的功能要求如下:1,学籍信息输入:实现同学基本状况的输入。
包括各个同学的状况,姓名,家庭号码,家庭住址,学号等各个信息。
2,学籍信息管理:本模块实现了信息的修改,删除,查询。
还有个人信息。
把信息统计这个繁琐的工作简洁化,为同学信息的管理方面提高工作效率。
3,学籍信息查询:通过输入学号便可以查询到这个同学的全部信息,包括姓名,性别,诞生年月,班级,入学日期,联系电话,嘉奖和成果表都一目了然,很大的便利了教工们查询同学信息的过程。
4,统计查询:实现查询全班人数,男女生比例等。
五,实训体会:这次实训,感觉既好玩又有些辛苦。
这还是老师担忧我们适应不了所以没教那么多学问,即使这样我们仍学到了比以前上学时更多的学问,而且这些学问有好多都是我们自己去领悟的到的。
我也知道有人比我们更累,所以我自觉得还是挺好的。
经过这次的实训,我真真实切的感受到了计算机在我们生活中工作中的运用,这些软件,程序能让我们提高工作的效率,更直观更便捷切入主题。
这次我们学习的是数据源的原理及应用的各方面学问,由老师带着我们不断操作。
vb能有效的组织,管理和共享数据库信息,能把数据库信息与ado结合在一起,实现数据库信息的共享。
同时,vb概念清楚,简洁易学,使用。
是适合企业管理人员,数据库管理员使用的首选。
大一c语言程序设计实验报告范文
大一c语言程序设计实验报告范文经过一个学期的学习,我对C语言有了必须的了解。
C语言是学习计算机科学的基础,作为一名计算机专业学生,掌握C语言更是毋庸置疑。
在上课之前,就经常听同学说,C语言很难学,确实,刚开始听课时觉得老师不知所云。
但是,发现对后续资料的预习后,前面的疑团都迎刃而解,这让我对C语言的学习更有信心。
计算机最重要的就是上机操作,自己编写程序,在VisualC++运行,刚开始经常会出现错误,经过分析改正后,最后能够运行了,就觉得个性激动。
课程设计是一个把需求分析、程序编写、程序调试、撰写报告结合为一体的过程。
在这个过程中,不仅仅锻炼了我们缜密的思维和坚持不解的毅力,更磨练了一个队伍的团结互助的精神。
只有通过大家一齐努力才能将课程设计的所有环节都顺利的完成。
另外程序设计中我们遇到问题并解决问题的过程,使得我们独自探索并解决问题的潜力了有了一个提高,这有利于我们以后的学习。
同时这整一个过程,也使我们对程序编写的整个过程有了一个统筹全局的思想,因为需求分析、程序编写、程序调试、撰写报告这些过程是环环相扣的,绝对不可能独立进行。
课程设计是学习《C程序设计》后对知识的全面测试,刚拿到题目时不明白怎样去处理,觉得很复杂,经过和小组成员的讨论,上网查资料,逐个问题逐个击破,问题不再那么复杂。
通过课程设计,我发现自己还存在很多知识漏洞,编写程序时,经常会出现低级错误,很多知识点都不熟悉。
在今后的时间里,我必须要投入更多精力学习C语言,以课本为基础,请教老师,与同学讨论,参考资料,上机操作,我相信我必须能把C语言学好。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息科学与技术学院《程序设计实习》课程设计报告书题目:学生信息管理系统专业:计算机科学与技术班级:姓名:学号:指导老师:设计时间:目录《程序设计实习》课程设计(实训报告书 (11. 课程设计(实训计划 (32. 系统需求分析与功能设计 (43. 总体设计 (54. 算法说明(附录源代码 (85. 技术难点与分析 (166. 系统测试 (187. 心得体会 (248. 参考文献 (251.课程设计(实训计划设计一个计算机程序,实现学生信息成绩管理系统。
1.设计一个含有10个菜单项的主控菜单,这10个菜单项的内容和输入提示如下:0 返回1 输入学生信息2 显示学生信息3 查询学生信息4 更新学生信息5 添加学生信息6 删除学生信息7 计算学生成绩8 显示学生名次请选择功能编号:使用数字0~9来选择菜单项,其它输入则不起作用。
2. 在查询学生信息时,又分为按学号查询或按姓名查询。
菜单项及提示内容如下:1 按学号查询2 按姓名查询3 返回上级菜单请选择功能编号。
使用数字1~3来选择菜单项,其它输入则不起作用。
在计算学生成绩时,又可分为如下功能:计算总成绩计算平均成绩返回上级菜单请选择功能编号。
使用数字1~3来选择菜单项,其它输入则不起作用。
工作进度安排如下:前两天实现学生信息的输入、显示、查找、删除和插入等基本操作。
第三天和第四天完成学生成绩的计算和排名功能,测试并完成所有设计。
最后一天完成设计报告书。
2. 系统需求分析与功能设计需求分析:根据题目要求,设计一个初始的能暂存学生信息的系统,不需要文件的输入,输出等操作。
但程序应提供数据的查找、显示、输入、删除、添加、、更改、成绩计算和成绩排名等功能,由于查找和成绩计算可以有不同的方式,所以应提供不同的算法,最后还应提供菜单的选择功能等客户端操作。
功能设计:0 返回/退出:分两个功能,在主菜单中实现退出系统的功能;在子菜单中实现返回主菜单的功能。
在主菜单中只设计退出系统的功能,返回功能设计在各子函数中。
1 录入信息:实现第一次录入数据的功能,第一次可以添加单条数据,也可以添加多条数据。
利用尾插法建表,实现信息的输入和保存,在子函数中实现。
2 浏览信息:该功能可以实现链表中所有信息的显示,即添加好的数据。
按顺序依次输出表中所有学生信息。
3 查询信息:可以实现对ID的查找和对姓名的查找,并有返回主菜单功能。
比对要查询的项进行查询,找到即输出,姓名部分用字符串比较函数。
4 更新信息:可以按给定ID实现对某数据项的全部信息的重新输入,即起到修改数据的功。
先根据信息查询到指定项输出,确认要修改即可重新输入该生数据,修改完成保存退出。
5 添加信息:在已有数据的情况下,实现新数据的添加或者插入,添加到表的末尾。
用尾插法插入新的信息。
6 删除信息:可以按给定ID是实现对某数据项的清除。
指定ID并删除节点,释放空间,完成并退出。
7 计算学生成绩:分学生总成绩的计算和平均成绩的计算,计算完成同时显示所有学生的成绩,并有返回主菜单功能。
在输出学生信息的同时,对学生三门成绩进行计算并输出。
8 显示学生名次:按学生的总成绩进行排名,并按成绩从高到低输出显示。
依次对学生总成绩进行比较并标记名次,最后按标记从小到大输出名次信息。
3. 总体设计系统总体分为以下几个函数,main ,input ,output ,search ,refresh ,insert ,del ,count ,和sort 函数。
1、主函数主函数中完成的功能:初始化链表,建立头指针。
建立菜单界面,并实现对指定命令的响应,利用主函数来调用其他各个子函数。
说明:主函数较多较复杂,已经和主菜单函数合并,主菜单函数里还包括了两个二级菜单,并已经开始了对各个函数的调用。
学生信息管理系统录入信息浏览信息查询信息更新信息添加信息删除信息成绩计算计算排名返回/退出开始显示一系列功能选项输入n ,判断n 是否是0~8?调用与n 相应的模块NY2、各功能模块设计(1录入信息模块说明:录入可以一次录入一条或多条,所以有是否继续添加记录的提示,有则继续添加,无则返回主菜单界面。
流程图:(2浏览信息模块说明:这部分只要按顺序将链表中的记录输出即可。
流程图:(3查询信息模块说明:因为要求用两种方式查询,所以系统包含一个子菜单,在要查询数据不存在的情况下返回这层菜单。
流程图:录入系统输入一组信息是否添加完毕?返回主菜单NY 浏览系统输出所有信息(4更新信息模块说明:先显示用户要修改的数据,提示是否确认修改,不修改的话返回主菜单。
流程图:查询系统按学号查询按姓名查询返回输入查询内容数据是否存在?输出打印NY 更新系统输入学号是否存在? 输出信息确认修改? 修改信息返回主菜单NY Y N(5添加信息模块说明:该部分比较简单,添加好信息即回到主菜单。
流程图:(6删除信息模块说明:查找到知道信息即可实现删除,没找到则返回主菜单。
流程图: (7成绩计算模块说明:该部分分总成绩计算和平均成绩计算两种方式,选择任何一种即可实现输出打印。
流程图:(8计算名次模块说明:只需要执行计算并按名次输出学生信息即可。
流程图:添加系统输入新记录返回主菜单输入学号信息是否存在?删除信息返回主菜单NY 删除系统成绩计算系统总成绩计算平均成绩计算返回计算并输出计算排名系统计算名次并输出4. 算法说明建立的学生结构体:typedef struct s /*建立学生信息结构体*/{int id;char name[10];char sex;int score1;int score2;int score3;int mark;}Information;其中的mark是用来标记学生名次的,在sort函数中会用到。
主函数中采用switch函数来实现对不同命令的响应,该部分源代码如下: switch(i{case '1':input(L;break;case '2':output(L;break;case '3':search(L;break;case '4':{int id;printf("\n请输入要修改的学生学号:";scanf("%d",&id;refresh(L,id;}break;case '5':insert(L;break; /*插入(添加一个学生信息*/ case '6': /*实现删除节点功能*/{int id;if(L->next==NULL{printf("表为空!";break;}printf("\n请输入要删除的学生学号:";scanf("%d",&id;del(L,id;}break;case '7':count(L;break;case '8':sort(L;break;case '0':exit(0;break;default: ;}当需要录入信息时,选择功能1调用input函数,该函数利用尾插法建立新的节点,对节点信息进行赋值,并且为每个学生的mark值自动赋为0后,插在表尾并用尾指针指向,每完成一个信息的输入后提示是否继续添加信息。
该函数源代码如下:NodePtr input(NodePtr L /*输入新节点*/{Node *r,*s;int flag=1;char c;r=L;while(flag{if(c!='n'{s=(Node *malloc(sizeof(Node;printf("\n请输入学生学号:";scanf("%d",&s->data.id;printf("请输入学生姓名:";scanf("%s",s->;printf("请输入学生性别(f/m:"; scanf("\n%c",&s->data.sex; printf("请输入学生成绩1:"; scanf("%d",&s->data.score1; printf("请输入学生成绩2:"; scanf("%d",&s->data.score2; printf("请输入学生成绩3:"; scanf("%d",&s->data.score3;s->data.mark=0;r->next=s;r=s;printf("是否继续录入信息?(y/n"; scanf("\n%c",&c;}else{flag=0;r->next=NULL;}}return L;}当需要浏览链表中的信息是,选择功能2调用output函数,在该函数中,将头指针H->next 赋给一个新指针p,再利用循环结构依次对指针所指向的数据进行输出。
当需要进行数据的查找时,选择功能3调用search函数,进入函数的同时显示两个查找方式:按学号查找和按姓名查找。
学号查找直接用一个while循环从头依次查找指定ID,没找到指针向后移继续查找,找到的话输出该生信息。
而按姓名查找时,用strcmp函数比较输入的姓名字符串,找到即输出。
该部分源代码如下:case '2':{char NAME[10];printf("\n请输入要查询的学生姓名:";scanf("%s",NAME;while(p!=NULL{if(strcmp(NAME,(p->!=0p=p->next;else break;}if(p==NULLprintf("\n查无此人!\n";else printf("\n学号:%d\n姓名:%s\n性别:%c\n成绩1:%d\n成绩2:%d\n成绩3:%d\n\n",(p->data.id,(p->,(p->data.sex,(p->data.score1,(p->data.score 2,(p->data.score3;}break;当需要修改某生数据时,选择功能4先提示输入要修改的学生学号,输入完成将链表头指针和学号一起传给refresh函数并调用该函数。
在该函数中先利用新指针p 和循环结构搜索到指定ID 的节点并输出,提示“确认要修改?”选择y可以进行该节点信息的重新编辑,编辑完成后返回头指针并退出。