C++课程设计实验报告

合集下载

C语言课程设计实验报告1

C语言课程设计实验报告1

课程设计报告题目:景点查询系统课程名称:C语言课程设计专业班级:信息安全二班任务书⑴主要内容建立国内景点信息系统,提供创建、编辑和综合查询等基本业务管理和服务。

⑵任务要求收集与阅读相关文献资料,确定系统目标与范围,分析系统需求,确定系统功能;设计系统方案,完成系统实现;提交《课程设计报告》。

⑶参考文献[1]曹计昌,卢萍,李开. C语言程序设计,北京:科学出版社,2008[2]张引. C程序设计基础课程设计, 杭州: 浙江大学出版社,2007[3]黄明,梁旭,万洪莉. C语言课程设计,北京: 电子工业出版社,2006目录1 绪言 (1)1.1 课题背景 (1)1.2 课题目的及意义 (1)1.3 课题应解决的主要问题及应达到的技术要求 (1)1.4 研究与发展概况及存在的问题 (2)1.5 设计的指导思想 (2)2 方案论证 (3)2.1 菜单的选择 (3)2.2 链表的选择 (3)2.3 主菜单和子菜单的设定 (3)3 课设过程论述 (5)3.1 系统数据 (5)3.2 系统各模块功能 (6)3.3 数据结构设计及用法说明 (8)3.4 程序结构 (9)4 结果分析 (10)5 课程设计总结 (13)6 参考文献 (14)附录程序清单 (15)1 绪言本章阐述课程设计课题的背景、目的与意义、应解决的主要问题及应达到的技术要求;简述研究与发展概况及存在的问题,本设计的指导思想。

1.1 课题背景随着社会的发展,旅游成为一个越来越热门的话题,很多人都会以旅游的方式度过自己的假期、生日、结婚纪念日等等,但是要想充分享受旅游带来的快乐,前期的准备就显得非常重要,只有前期的准备做好了,才能充分规划自己的旅游,才能充分享受自己的旅游。

前期的准备很大一方面是要查询自己要去的地方的一些基本信息,比如景区地点,景区门票。

城市中所含有的景区等等,如果有一个系统能够快速的查询景点信息,那么这就为人们出去旅游提供了很多的信息,帮助人们为旅游做好充分的准备!1.2 课题目的及意义课题目的:本课题主要是通过景点查询系统向人们提供景点,景区,城市等方面信息的查询,修改,统计等服务,让人们快速获得有关旅游景点、景区、城市方面的信息,帮助人们充分规划自己的出行方案。

c程序课程设计实验报告

c程序课程设计实验报告

c程序课程设计实验报告一、教学目标本课程的教学目标是使学生掌握C程序设计的基本概念、语法和编程技巧,培养学生具备基本的程序设计能力和良好的编程习惯。

具体分解为以下三个方面的目标:1.知识目标:使学生了解C程序设计的基本概念,掌握C语言的基本语法和编程方法,包括变量、数据类型、运算符、控制结构、函数等。

2.技能目标:培养学生具备编写和调试C程序的能力,能运用C语言解决简单的实际问题,培养学生的创新能力和实践能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,培养学生良好的编程习惯和团队协作精神,提高学生的自主学习和问题解决能力。

二、教学内容本课程的教学内容主要包括C程序设计的基本概念、语法和编程方法。

具体安排如下:1.C程序设计基本概念:介绍计算机编程的基本概念,使学生了解C语言的特点和应用领域。

2.C语言语法:讲解C语言的基本语法,包括变量、数据类型、运算符、控制结构等。

3.C程序设计方法:教授编程方法,包括函数、数组、指针等,并通过实例使学生掌握编程技巧。

4.编程实践:安排一定的实验课时,使学生动手实践,培养学生的编程能力和问题解决能力。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性,提高教学效果。

具体方法如下:1.讲授法:讲解C程序设计的基本概念、语法和编程方法,使学生掌握理论知识。

2.案例分析法:通过分析典型案例,使学生了解编程技巧和方法,提高学生的实践能力。

3.实验法:安排实验课,使学生动手实践,培养学生的编程能力和问题解决能力。

4.讨论法:学生进行小组讨论,分享学习心得和经验,提高学生的团队协作能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

具体如下:1.教材:选用权威、实用的教材,为学生提供系统的学习资源。

2.参考书:推荐学生阅读适量的参考书,丰富学生的知识体系。

3.多媒体资料:制作课件、教学视频等多媒体资料,提高教学的趣味性和直观性。

c语言课程设计实验报告

c语言课程设计实验报告

c语言课程设计实验报告一、教学目标本课程的目标是让学生掌握C语言的基本语法、数据结构、算法和编程技巧,培养学生独立编程和解决问题的能力。

具体目标如下:1.知识目标:–掌握C语言的基本语法和关键字。

–理解数据类型、变量、常量的概念及使用。

–熟悉运算符、表达式、语句的结构。

–学习函数的定义、声明和调用。

–掌握数组、指针、字符串的基本操作。

–了解结构体、共用体、枚举类型等数据结构。

–学习基本算法和排序、查找等常用算法。

2.技能目标:–能够使用C语言编写简单的程序,解决实际问题。

–熟练使用集成开发环境(IDE)进行程序调试和运行。

–掌握编程规范和代码注释,编写可读性强的代码。

–学会使用函数模块化编程,提高代码重用性。

3.情感态度价值观目标:–培养学生对计算机科学的兴趣,激发创新意识。

–培养学生的团队合作精神和自主学习能力。

–强化学生的编程实践能力,提高解决实际问题的能力。

二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.C语言基本语法和关键字。

2.数据类型、变量、常量的使用和声明。

3.运算符、表达式、语句的结构和用法。

4.函数的定义、声明和调用。

5.数组、指针、字符串的基本操作和应用。

6.结构体、共用体、枚举类型等数据结构的概念和使用。

7.基本算法和排序、查找等常用算法。

8.第一周:C语言基本语法和关键字。

9.第二周:数据类型、变量、常量的使用和声明。

10.第三周:运算符、表达式、语句的结构和用法。

11.第四周:函数的定义、声明和调用。

12.第五周:数组、指针、字符串的基本操作和应用。

13.第六周:结构体、共用体、枚举类型等数据结构的概念和使用。

14.第七周:基本算法和排序、查找等常用算法。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:教师通过讲解、示例等方式,向学生传授C语言的基本知识和编程技巧。

2.讨论法:教师引导学生进行问题讨论,培养学生的编程思维和解决问题的能力。

c课程设计实验报告总结

c课程设计实验报告总结

c课程设计实验报告总结一、教学目标本章节的教学目标分为三个部分:知识目标、技能目标和情感态度价值观目标。

知识目标:通过本章节的学习,学生需要掌握教材中的基本概念、原理和方法,了解相关学科的前沿动态。

技能目标:学生能够运用所学知识解决实际问题,具备一定的实践操作能力,并能运用科学思维方法分析问题。

情感态度价值观目标:培养学生对学科的热爱和兴趣,增强其社会责任感和创新精神,提高其团队合作意识和沟通能力。

二、教学内容本章节的教学内容主要包括教材中的基本概念、原理和方法,以及相关学科的前沿动态。

教学大纲将按照教材的章节进行安排,确保内容的科学性和系统性。

三、教学方法本章节将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等,以激发学生的学习兴趣和主动性。

讲授法:通过教师的讲解,使学生掌握教材中的基本概念、原理和方法。

讨论法:引导学生针对问题进行思考和讨论,培养其科学思维能力。

案例分析法:分析实际案例,使学生能够将所学知识应用于解决实际问题。

实验法:进行实验操作,培养学生的实践操作能力和科学探究能力。

四、教学资源本章节将选择和准备适当的教学资源,包括教材、参考书、多媒体资料和实验设备等。

这些教学资源将支持教学内容和教学方法的实施,丰富学生的学习体验。

五、教学评估本章节的教学评估将采用多种方式,以全面、客观、公正地评估学生的学习成果。

平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估其学习态度和积极性。

作业:布置课后作业,评估学生对教材内容的掌握程度和应用能力。

考试:进行定期考试,全面考察学生对教材知识的掌握和运用能力。

评估方式将结合定量和定性评价,以全面反映学生的学习成果。

六、教学安排本章节的教学安排将合理、紧凑,确保在有限的时间内完成教学任务。

教学进度:按照教材章节安排教学内容,确保系统性。

教学时间:根据学生的作息时间和课程安排,合理分配教学时间。

教学地点:选择适当的教室和实验室等地点,为学生提供良好的学习环境。

c语言程序设计_实验一实验报告

c语言程序设计_实验一实验报告

实验项目名称:实验一C 语言的运行环境的使用实验目的及要求:1. 了解 Windows 系统下 C 语言的运行环境,熟悉 C 程序编辑、调试、运行的基本操作方法。

2. 熟练掌握编辑、编译、连接和运行 C 程序的方法。

3. 通过运行简单的 C 程序,初步了解 C 源程序的特点。

4. 初步理解 C 语言的数据类型,了解变量定义、变量赋值以及简单运算方法,了解程序运行结果的基本输出方法。

实验内容(方法和步骤):1、编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for程序代码:#include <stdio.h>int main(){printf("Hello,World!\n");printf("Welcome to the C language world!\n");printf(Everyone has been waiting for.\n");return 0;}运行结果:2、编写程序,将两个整数相加,并输出结果。

程序代码:#include <stdio.h>int main(){int a,b,c;a=12;b=26;c=a+b;printf("c=%d\n",c);return 0";}运行结果:3. 编写程序,要求从键盘输入2 个整数,输出其中较大的数程序代码:#include <stdio.h>int main(){int max(int x,int y);int a,b,c;scanf("%d,%d",&a,&b);c=max(a,b);pintf("max=%d",c);return 0;}int max(int x,int y){ int z;if (x>y) z=x;else z=y;return(z);}运行结果:4.输入并运行下程序,观察运行结果。

C语言程序课程设计实验报告(用一个字符数组保存一个英文句子)

C语言程序课程设计实验报告(用一个字符数组保存一个英文句子)

河南城建学院《高级语言程序设计》课程设计报告设计题目:用一个字符数组保存一个英文句子专业:计算机科学与技术班级:设计人员:指导教师:计算机科学与工程学院2015年06 月25日一、课程设计题目13.用一个字符数组保存一个英文句子。

二、设计要求1)删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间只留一个空格);2)统计该句子中,单词出现的频率;3)查找并替换某个单词。

三、程序介绍1.去除字符组中间空格。

void zhongjian(char a[]){int i,j,k; /*定义整形变量i,j,k。

i,j 作为函数内循环的控制变量。

定义k用于字符组长度存放。

*/ k=strlen(a); /*将字符组a的长度存放于k 中。

(字符组a即待处理的字符组)*/for(i=0;i<k;) /*循环控制,从第一位循环到字符组结束。

*/if(a[i]!=' 'i++; /*条件控制,若当前字符不为空格,跳到下一位再进行循环。

*/else if(a[i]==' ')if(a[i+1]==' ') /*当连续出现两个空格,需要去除一个空格*/{k=k-1; /*字符串总长度减一。

*/ for(j=i;j<k;j++)a[j]=a[j+1]; /*从第一个空格开始,后续所有字符前提一位,即去除第一个空格。

*/a[k]='\0'; /*去除空格后字符组长度减一,原字符组最后一位需要变为\0。

*/continue; /*去除空格后,继续从该位检测,直至不符合该循环条件。

*/}elsei++; /*若不是连续两个空格,则跳到下个字符再进行循环。

*/printf("%s\n",a); /*输出处理后的字符组。

*/ }2.导入及导出函数void daoru(){FILE *p; /*定义一个指针函数,用于指向需要打开的文件。

(完整版)c实验报告

(完整版)c实验报告实验名称: C语言实验报告实验内容:本次实验主要针对C语言编程进行实验。

通过实验的设计和完成,检验和加深对C语言的理解和应用能力。

实验步骤:1. 实验准备在开始实验之前,需要准备好以下必要的工具和材料:- 计算机- C语言编译器(比如GCC、Clang等)- 文本编辑器(比如Notepad++、Sublime Text等)2. 实验环境搭建在计算机上安装C语言编译器,并配置好相应的环境变量。

这样可以在终端或命令提示符中执行相关的C程序。

3. 编写实验代码根据实验要求,使用文本编辑器编写C语言代码。

根据实验的要求和功能需求,合理设计和组织代码结构,包括头文件的引用、变量的定义、函数的声明和定义等。

4. 编译和运行代码在命令行或终端中使用编译器对编写好的C语言代码进行编译,并生成可执行文件。

编译命令的具体格式根据不同的编译器而有所差异,但一般形式如下:```gcc -o output_file input_file.c```其中,"output_file"表示生成的可执行文件名,"input_file.c"表示待编译的C源代码文件名。

编译成功后,通过命令行或终端执行生成的可执行文件,检查程序的运行结果是否符合预期。

5. 实验结果分析根据实际运行结果,对实验数据进行分析和归纳。

可以通过输出结果、打印特定信息或观察程序的行为来判断程序是否正确地实现了预期的功能。

6. 实验总结在实验报告中对本次实验的过程、方法、结果进行总结,并提出实验中遇到的问题和解决方法。

同时,对所学习的C语言相关知识点进行总结和归纳,以加深对相关知识的理解和记忆。

实验结果:通过本次实验的设计和实现,我成功完成了对C语言编程的实验,达到了预期的目标。

通过编写实际的代码,我巩固了对C语言语法和基本概念的理解。

在实验过程中,我遇到了一些问题,通过查阅资料和与同学的讨论,我成功解决了这些问题。

C语言程序设计课程设计报告

C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。

3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。

提高编写程序解决实际问题的能力、调试程序的技术。

三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。

主程序:新建:输入记录(遇#号时停止输入)。

插入:在指定位置插入记录。

显示:列出所有记录。

查询:一、按学号查询;二、按名字排序。

删除:一、按学号删除;二、按名字删除;3、删除所有记录。

排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。

保留:保留为任意名字,系统自动加后缀名为.txt。

读取:读取程序目录下的后缀名为.txt的文件。

退出:退出程序。

五、各功能模块的具体实现,用图表表示。

输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。

STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。

c课程设计试验报告

c 课程设计试验报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,培养学生编写简单程序的能力,使学生了解计算机编程的基本思想和方法。

具体来说,知识目标包括:了解C语言的基本语法、数据结构和算法;掌握C语言程序设计的基本思想和方法。

技能目标包括:能够使用C语言编写简单的程序;能够运用C语言解决一些实际问题。

情感态度价值观目标包括:培养学生对计算机编程的兴趣和热情;培养学生独立思考、解决问题的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构和算法。

具体安排如下:1.第一章:C语言概述,主要介绍C语言的基本概念、特点和应用范围。

2.第二章:数据类型和运算符,主要介绍C语言的数据类型、运算符和表达式。

3.第三章:控制语句,主要介绍C语言的控制语句,如条件语句、循环语句等。

4.第四章:函数,主要介绍C语言的函数定义、函数调用和函数返回值。

5.第五章:数组和字符串,主要介绍C语言的数组和字符串的基本操作。

6.第六章:指针,主要介绍C语言的指针的概念和运用。

7.第七章:结构体和联合体,主要介绍C语言的结构体和联合体的概念和运用。

8.第八章:文件操作,主要介绍C语言的文件操作的基本方法。

三、教学方法为了达到本课程的教学目标,我们将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

通过这些方法的综合运用,激发学生的学习兴趣,提高学生的编程能力。

1.讲授法:通过讲解C语言的基本概念、语法和算法,使学生掌握C语言的基本知识。

2.讨论法:通过学生进行课堂讨论,培养学生的独立思考和问题解决能力。

3.案例分析法:通过分析典型的编程案例,使学生了解C语言在实际应用中的基本方法。

4.实验法:通过上机实验,使学生掌握C语言的编程技巧,培养学生的实际编程能力。

四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《C程序设计语言》(K&R著)2.参考书:《C Primer Plus》(Stephen Prata著)3.多媒体资料:教学PPT、视频教程等4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)通过以上教学资源的综合运用,丰富学生的学习体验,提高学生的学习效果。

c语言实验报告详细设计

实验报告:C语言程序设计
一、实验目的
通过本次实验,使学生掌握C语言的基本语法和程序设计思想,培养学生的编程能力和解决问题的能力。

二、实验内容
1. C语言程序的组成和结构
2. 数据类型、运算符和表达式
3. 输入输出函数
4. 控制结构(选择结构和循环结构)
5. 数组和字符串
6. 函数和程序结构
7. 指针和内存管理
三、实验步骤
1. 准备阶段:了解实验内容和要求,准备好所需的资料和工具。

2. 设计阶段:根据实验内容,设计程序结构和算法,编写代码。

3. 调试阶段:运行程序,调试代码,确保程序的正确性和可靠性。

4. 测试阶段:对程序进行各种测试,确保程序的正确性和性能。

5. 总结阶段:总结实验过程和结果,撰写实验报告。

四、实验结果与分析
1. 实验结果:通过本次实验,学生掌握了C语言的基本语法和程序设计思想,能够编写简单的C程序,解决了一些实际问题。

2. 结果分析:在实验过程中,学生遇到了一些问题,如语法错误、逻辑错误等。

通过调试和测试,学生逐渐掌握了C语言的编程技巧和方法,提高了编程能力和解决问题的能力。

五、结论与建议
1. 结论:通过本次实验,学生掌握了C语言的基本语法和程序设计思想,能够编写简单的C程序,解决了一些实际问题。

同时,学生也提高了编程能力和解决问题的能力。

2. 建议:在今后的实验中,应该更加注重学生的实践能力和创新能力的培养,加强实验内容的深度和广度,提高学生的编程能力和解决问题的能力。

同时,应该注重实验过程的规范化和科学化,确保实验结果的准确性和可靠性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2、含义 作为一个点的抽象, 拥有点的坐标属性, 可以涵盖一个几何二维点的 所有信息,并且拥有设置点属性的方法和打印点信息的函数。 2.1.3 Circle 类 1、继承 因为可以看出是一个点的衍生,即一个点加上一个半径所决定的领 域,所以继承于 Point 类,同时由于是可以绘制的图形,并且 Point 类 继承于 Drawable 类, 所以理所当然地继承于 Drawable 类, 并重写 Paint 的方法,以实现自身绘制需求。 2、含义 作为一个圆的抽象, 拥有圆心的坐标属性, 以及圆的半径属性, 可以 涵盖一个几何二维圆的所有信息,并且拥有设置圆属性的方法和打印圆 信息的函数。 2.1.4 Line 类 1、继承 因为是可以绘制的图形,所以理所当然地继承于 Drawable 类,并重 写 Paint 的方法,以实现自身绘制需求。 2、子对象 因为两点确定一条直线, 所以 Line 类拥有两个 Point 类型的子对象, 用来记录两端点的信息。 3、含义 作为一条直线的抽象, 拥有直线两端点坐标信息, 可以涵盖一个几何 二维直线的所有信息,并且拥有设置直线属性的方法和打印直线信息的 函数。 2.1.5 Triangle 类 1、继承 因为是可以绘制的图形,所以理所当然地继承于 Drawable 类,并重 写 Paint 的方法,以实现自身绘制需求。 2、子对象
作为图像界面的实现类,首先要绑定界面设计文件,然后通过代码 添加相应的 Menu, 每个 Menu 底下应该有很多选项, 选项相当于是该 Menu 的一个动作脚本,或者说是行为,每个行为对应一个方法,所以这里采 取使用信号槽将选项、Menu、行为方法进行绑定。因为选项的行为可能 需要操作主界面的私有变量,所以这里采取的方式是声明为类的方法, 界面需要绘制图片,第一种实现方式是直接画在界面上,但是这样重写 重绘的方法可能会导致可能存在的繁琐运算造成的程序假死现象,所以 这里采取的是放置 GraphicsView 的方法,即放置一个图片容器,将图片 绘制好之后再放进容器以显现,此时计算和 UI 线程实际上是独立的,这 也就解决了程序可能假死的问题。
QImage *image; QGraphicsScene *scene;
QPen *pen; QBrush *brush; QPainter *painter;
int type=0;
static char PNG[5];
/** * @brief init 初始化用函数 */ void init(); void initMenuBar(); void initPen(); void initFileMenuBarButton(); void initOpen(QMenu *); void initSave(QMenu *); void initExit(QMenu *); void initToolMenuBarButton(); void initPoint(QMenu *); void initLine(QMenu *); void initCircle(QMenu *); void initTriangle(QMenu *); void initRectangle(QMenu *); void color(QMenu *); void size(QMenu *); void kind(QMenu *);
char MainWindow::PNG[5]="png";
int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show();
return a.exec(); } 3.1.2 MainWindow 类
24
24 24 25 25
第四章 调试分析
4.1 调试方法 4.2 复杂度分析
25 25
第五章 测试结果
5.1 测试结果
26
第六章 课程设计总结
6.1 对图形界面的理解 6.2 对面向对象的理解
33 33
第七章 参考文献
7.1 参考文献
34
第八章 附录
8.1 附录
34
第一章 需求分析
1.3 题目要求
friend class QPainter;
Drawable *draw;
private: Ui::MainWindow *ui;
QAction *openAction; QAction *saveAction; QAction *exitAction;
QAction *point; QAction *line; QAction *circle; QAction *triangle; QAction *rectangle; QAction *setC; QAction *setS; QAction *setK;
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow {
public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); void mousePressEvent(QMouseEvent *event); void paintEvent(QPaintEvent *event);
2.2 类层次分析
Main
MainWindow
Drawable
PointDlg
StringCompany
Point
Line
Triangle
Rectangle
Circle
2.3 模块层次分析
Main 入口类
MainWindow 主界面
GraphicsView 控件
MenuBar 控件
Dialog 控件
运用面向对象程序设计知识,利用 C++语言设计和实现一个图形 类,要求具备如下主要功能: a) 图形环境初始化 b) 图形窗口定义 c) 设计和实现点类,可以根据输入的坐标信息,根据给定的颜 色和点的大小,在界面上绘制显示相应的点。 d) 设计和实现直线类,可以根据输入的端点坐标信息,根据给 定的颜色和线条粗细,在界面上绘制显示相应的直线。 e) 设计和实现圆类,可以根据输入的圆心坐标和半径信息,根 据给定的颜色和线条粗细, 在界面上绘制显示相应的圆, 并可以计算 其面积。 f) 设计和实现三角形类,可以根据输入的三个顶点坐标,根据 给定的颜色和线条粗细, 在界面上绘制显示相应的三角形, 并可以计 算其面积。 g) 设计和实现矩形类,可以根据输入的四个顶点坐标,根据给 定的颜色和线条粗细, 在界面上绘制显示相应的矩形, 并可以计算其 面积。 h) 圆类、三角形类和矩形类,可以根据指示,决定是否进行内 部填充。
因为不在同一直线的三点可以确定唯一一个三角形,所以一个 Triangle 类拥有三个 Point 类型的子对象, 用来记录三角形三点的信息。 通过三个 Point,便可以描述这个三角形。 3、含义 作为一个三角形的抽象, 拥有三角形三个顶点的坐标属性, 可以涵盖 一个几何二维三角形的所有信息,并且拥有设置三角形属性的方法和打 印三角形信息的函数。 2.1.6 Rectangle 类 1、继承 因为是可以绘制的图形,所以理所当然地继承于 Drawable 类,并重 写 Paint 的方法,以实现自身绘制需求。 2、子对象 通过矩形左上角顶点坐标,以及矩形的宽和高可以确定一个唯一的 矩形,所以 Rectangle 类拥有一个 Point 的子对象,用来记录左上角顶 点信息。 3、含义 作为一个矩形的抽象, 拥有矩形左上角顶点的坐标属性, 以及矩形的 宽属性和高属性,可以涵盖一个几何二维矩形的所有信息,并且拥有设 置矩形属性的方法和打印矩形信息的函数。 2.1.7 StringCompany 类 1、封装性 面向对象编程的四大特性中,封装性是一种非常强大和符合人类逻 辑的特性,在这里,我借用工厂模式,来提现面向对象编程的封装性。 2、工厂模式 因为在程序运行中, 字符串处理是必不可少的, 复杂而重复的字符串 处理,无疑会大幅度降低代码的友好度,所以这里我将它封装成一个字 符串的工厂,字符串作为原料,用以生存各种各样的产品。 2.1.8 MainWindow 类 1、继承
Drawable 类 Point 类 Circle 类 Line 类 Triangle 类 Rectangle 类 StringCompany 类 MainWindow 类 PointDlg 类和 PointDlgData 类
5
5 5 6 6 6 7 7 7 8
2.2 类层次分析 2.3 模块层次分析
Menubar
文件 file
工具 tool
打开
保存
退出
绘制工具
设置工具
绘制工具
绘制点
绘制线
绘制圆
绘制三角形
绘制矩形
设置工具
设置颜色
设置画笔粗细
设置绘制样式
填充模式
勾匡模的具体描述
3.1.1 Main 类 作为程序的入口类,启动图形界面,初始化静态变量。
#include "mainwindow.h" #include <QApplication>
#ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow>
#include <QPainter> #include <QPen> #include <QBrush> #include <QGraphicsScene>
#include "drawable.h"
第二章 概要设计
2.1 实体分析
2.1.1 Drawable 类 单纯作为接口的功能, 本身并不实现任何功能, 留下抽象方法 void paint (QPainter painer),一是规范所有可以绘制类的绘制函数,二是提现面向 对象编程的抽象性,从可以被绘制的图形中抽象出被绘制的方法 2.1.2 Point 类 1、继承 因为是需要画出来的类, 所以继承于 Drawable 类, 重新 paint 方法, 以适合自身的图形绘制,同时又可以作为其他类——如 Circle 类的父 类。
相关文档
最新文档