《C语言课程设计报告》剖析
- 格式:docx
- 大小:110.15 KB
- 文档页数:14
C语言程序设计课程设计报告总结引言C语言作为一种高级程序设计语言,广泛应用于软件开发、系统编程等领域。
本课程设计旨在通过实际项目的开发,提高学生对C语言的综合运用能力,并培养学生的问题解决能力和团队合作精神。
本文将对本次课程设计进行总结和回顾。
一、课程设计介绍1.1 设计目标本次课程设计的主要目标是让学生熟悉C语言的基本语法和编程思想,能够运用所学知识解决实际问题,培养学生的编程能力和团队协作能力。
1.2 设计内容课程设计要求学生以小组为单位,选择一个实际问题进行分析和设计,并用C语言编写相应的程序。
设计内容涵盖了C语言的输入输出、循环结构、条件结构、数组、函数等知识点。
1.3 设计过程本次课程设计分为三个阶段:问题分析与需求确定、详细设计与编码、测试与优化。
在每个阶段,学生需要按照规定的任务要求完成相应的工作,并及时提交报告和源代码。
二、课程设计过程回顾2.1 问题分析与需求确定在这个阶段,小组成员共同商讨选题,并进行问题分析和需求确定。
我们选择了一个简单的学生成绩管理系统作为课程设计的题目。
通过分析,我们确定了以下需求:能够录入学生信息、计算学生平均分、按照成绩排序并输出等。
2.2 详细设计与编码在这个阶段,我们详细设计了软件的功能模块和数据结构,并开始编写代码。
我们将程序分为输入、计算、排序和输出四个模块,每个模块对应一个函数。
我们采用模块化设计的思想,使得每个函数的功能明确,便于调试和维护。
在编码过程中,我们遵循了良好的编码规范,并采用了一些常用的代码优化技巧,如避免重复计算、合理使用循环和条件结构等。
在保证功能正确性的前提下,我们还注重代码的可读性和可维护性。
2.3 测试与优化在编码完成后,我们进行了功能测试和性能测试。
功能测试主要是确保程序按照需求正常运行,各个功能模块能够正确交互。
性能测试则是为了检查程序的效率和稳定性,我们输入了大量的测试数据进行测试。
通过测试,我们发现了一些潜在的问题和性能瓶颈,并进行了相应的优化。
《C语言程序设计》课程设计报告(2013— 2014学年第 3 学期)题目:C语言课程设计专业:软件工程班级:软件工程技术2班姓名学号:1307142225林燕萍指导教师:吴芸成绩:计算机科学与技术系2014 年6月23日目录一、课程设计的目的与要求 (1)二、方案实现与调试 (3)2.1 掷骰子游戏 (5)2.2 射击游戏 (7)2.3 计算存款本息之和 (8)2.4肇事逃逸 (10)2.5 礼炮 (12)2.6 汽车加油 (14)2.7 大优惠 (16)2.8 金币 (19)三、课程设计分析与总结 (23)附录程序清单 (25)一、二、课程设计的目的与要求(含设计指标)C语言是一种编程灵活,特色鲜明的程序设计语言。
C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。
这是学习语言的最终目的。
结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。
达到如下目的:1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;2.让学生扎实掌握C程序设计语言的相关知识;3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。
编写程序要求遵循如下基本要求:①模块化程序设计②锯齿型书写格式③必须上机调试通过二、方案实现与调试2.1掷骰子游戏•2.1.1 题目内容的描述1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。
2) 将每人每次的分值累加计分3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。
4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。
最后显示双方分数并判定优胜者。
原创C语言课程设计报告总结引言本文旨在总结C语言课程设计报告的整体过程和所学到的经验和技能。
C语言是一门广泛应用于系统编程的高级编程语言,通过课程设计的方式,我们能够更深入地理解和掌握C语言的应用和特性。
设计目标和需求在C语言课程设计中,我们面临着一系列设计目标和需求。
这些目标和需求不仅要求我们熟练运用C语言的各种语法和数据结构,还要求我们具备良好的设计思维和解决问题的能力。
设计过程需求分析在开始设计之前,我们首先对项目需求进行了详细的分析。
通过与老师和同学的讨论,我们明确了项目的功能和预期效果。
这个阶段非常重要,因为一个清晰的需求分析可以帮助我们更好地编写代码和设计程序的结构。
程序设计在需求分析之后,我们开始了程序的设计工作。
我们首先定义了合适的数据结构和变量,并确定了程序的整体框架。
然后,我们逐步实现各个函数和模块,并进行了多次的测试和调试。
在设计过程中,我们注意到了代码的可读性和可维护性。
为了提高程序的可读性,我们使用了有意义的函数名和变量名,并使用了适当的注释来解释代码的功能。
为了提高程序的可维护性,我们将功能相似的代码块提取出来,形成了可重用的函数。
测试和调试在设计完成后,我们进行了全面的测试和调试。
我们首先对程序进行了黑盒测试和白盒测试,以验证程序的正确性和稳定性。
然后,我们通过输入各种边界条件和异常情况,进一步测试程序对于不同输入的处理能力。
在测试的过程中,我们发现了一些错误和问题。
通过分析错误的原因,并进行适当的修改,我们最终解决了这些问题,并确保了程序的质量和稳定性。
课程设计成果和收获通过C语言课程设计,我们不仅掌握了C语言的相关知识和技能,还收获了许多宝贵的经验和教训。
首先,我们学会了如何进行需求分析和程序设计。
在需求分析方面,我们学会了聆听他人的意见和建议,并将其转化为具体的需求和功能。
在程序设计方面,我们学会了如何合理地组织代码,并使用合适的数据结构和算法。
其次,我们锻炼了自己的问题解决能力。
C语言程序设计课程设计报告1. 引言C语言程序设计是计算机科学与技术领域中一门重要的课程。
本报告旨在总结并展示我在该课程中的设计项目。
该项目要求我们使用C 语言设计并实现一个具有特定功能的程序。
2. 项目背景本项目的背景是为了帮助学生加深对C语言的理解和应用。
通过实践项目,我们可以更好地掌握C语言的语法和技巧,提升我们的编程能力。
3. 项目目标本项目的目标是设计一个简单的学生成绩管理系统。
该系统可以实现以下功能:- 输入学生的姓名和成绩;- 计算学生的平均成绩和总成绩;- 根据学生成绩进行排序;- 输出学生成绩单。
4. 设计思路为了实现项目的目标,我采取了以下设计思路:- 使用结构体来保存学生的信息,每个结构体包括学生的姓名和成绩;- 使用数组来保存学生的信息,数组的每个元素对应一个学生的信息;- 使用循环和条件语句来实现用户界面和功能选项;- 使用排序算法对学生成绩进行排序。
5. 程序设计与实现在程序的设计与实现过程中,我首先定义了学生信息的结构体,并声明了相应的全局变量和函数。
接着,我编写了主函数,其中包括用户界面的显示和功能选项的处理。
用户界面的显示采用了简洁美观的格式,每次显示菜单供用户选择相应的功能。
用户可以通过输入对应的数字来选择功能,并根据提示进行相应的操作。
在实现功能方面,我使用了循环来保证程序能够持续运行,直到用户选择退出。
根据用户的选择,程序会调用不同的函数来完成相应的功能,比如输入学生信息、计算平均成绩和总成绩、排序学生成绩等。
6. 测试与验证为了验证程序的正确性和稳定性,我进行了多次测试。
我输入了不同数量和不同范围的学生信息,以确保程序能够正确处理各种情况下的数据。
通过测试,我发现程序能够正常运行,实现了预期的功能。
输入的学生信息能够被正确保存、计算和排序,最终能够输出正确的学生成绩单。
7. 总结与展望通过本项目的设计与实现,我加深了对C语言的理解和应用,提升了我的编程能力。
C语言课程设计报告————————————————————————————————作者:————————————————————————————————日期:C语言课程设计论文学生姓名:陈丹学生学号:20091020101所在班级:信息与计算科学一班任课教师:马老师通讯录管理系统【设计目的】设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。
(1) 数据包括:人名、工作单位、电话号码和E-mail 地址。
(2) 可对记录中的姓名和电话号码进行修改。
(3) 可增加或删除记录。
(4) 可显示所有保存的记录。
(5) 可按人名或电话号码进行查询。
【设计思路】根据要求,电话簿数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
【总体设计】图1 系统功能模块图【详细设计】1. 主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】 通讯录数据数据删除 数据查浏图2. 主函数流程图V oid menu() /*主界面*/{int n, w1;void enter(); void add(); void modify(); void browse(); void deleter(); void search(); do{puts("\t******************************菜单*****************************\t\n\n"); puts("\t\t\t\t1.新建联系人");puts("\t\t\t\t2.添加联系人");puts("\t\t\t\t3.修改");puts("\t\t\t\t4.删除");puts("\t\t\t\t5.浏览");puts("\t\t\t\t6.查找");puts("\t\t\t\t7.退出");puts("\n\n\t***************************通讯录******************************\t\n"); printf("请选择服务种类(1-7) : [ ]\b\b");scanf("%d",&n);if(n<1||n>7){w1=1;getchar();}else w1=0;}while(w1==1);switch(n){case 1: enter(); break; /*输入模块*/case 2: add(); break; /*添加模块*/ 显示一系列输入n ,判断n根据n 的值调用各功能结束开始n附录:源代码#define N 50#include<stdio.h>#include<string.h>struct people{char name[20]; char company[50]; char num[15]; char mail[20];}peop[N];void printf_face(){ printf("\n\t姓名\t单位\t电话号码\t邮箱\n"); }void printf_one(int i){ printf("\t%s\t%s\t%s\t%s\n",peop[i].name,peop[i].company,peop[i].num,peop[i].mail); }void printf_n(int n){ int j;for(j=0;j<n;j++){ if((j!=0)&&(j%10==0)) {printf("\n\nPress any key to continue...:"); getchar(); puts("\n\n");} printf_one(j);} getchar();}int load(){ FILE *fp;int i;if((fp=fopen("file","rb"))==NULL){ printf("\nCan not open file\n");exit(0);}for(i=0;!feof(fp);i++)fread(&peop[i],sizeof(struct people),1,fp);fclose(fp);return(i-1);}int modify_data(int i,int n){ int c,w1; void input(int i); void menu();do{ puts("\n修改选项=>\n\n 1).姓名2).单位3).电话号码4).邮箱5).所有数据6).取消并返回");printf("请选择?: [ ]\b\b");scanf("%d",&c);if(c>6||c<1) {puts("\nChoose error! Please again!"); getchar();}}while(c>6||c<1);do{ switch(c){ case 1: printf("name:"); scanf("%s",peop[i].name); break;case 2: printf("company:"); scanf("%s",peop[i].company); break;case 3: printf("number:"); scanf("%s",peop[i].num); break;case 4: printf("e-mail:"); scanf("%s",peop[i].mail); break;case 5: input(i); break;case 6: menu();}puts("\nNow:\n");printf_face(); printf_one(i);printf("\n确定?\n\n\t1).是2).不,重新修改3).返回不保存[ ]\b\b");scanf("%d",&w1);}while(w1==2);return(w1);}void input(int i){ printf_face(); printf("\t");scanf("%s\t%s\t%s\t%s",peop[i].name,peop[i].company,peop[i].num,peop[i].mail); }void save(int n){ FILE *fp; int i;if((fp=fopen("file","wb"))==NULL){ printf("\nCan not open file\n");exit(0);}for(i=0;i<n;i++)if(peop[i].name[0]!='\0')if(fwrite(&peop[i],sizeof(struct people),1,fp)!=1)printf("file write error\n");fclose(fp);}void printf_back(){int w; void browse(); void menu();printf("\n\n\t^_^.Successful. ^_^\n\n");printf("What do you want to do?\n\n\t1).浏览所有\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1) browse();else menu();}void main(){void menu();menu();}void menu(){int n, w1;void enter(); void add(); void modify(); void browse(); void deleter(); void search(); do{puts("\t************************菜单************************ ");puts("\t\t*******************1.新建联系人*******************");puts("\t\t*******************2.添加联系人*******************");puts("\t\t*******************3.修改*******************");puts("\t\t*******************4.删除*******************");puts("\t\t*******************5.浏览*******************");puts("\t\t*******************6.查找*******************");puts("\t\t*******************7.退出*******************");puts("\n\n\t********************通讯录********************* ");printf("请选择服务种类(1-7) : [ ]\b\b");scanf("%d",&n);if(n<1||n>7){w1=1;getchar();}else w1=0;}while(w1==1);switch(n){case 1: enter(); break;case 2: add(); break;case 3: modify(); break;case 4: deleter(); break;case 5: browse(); break;case 6: search(); break;case 7: exit(0);}}void enter(){ int i,n;printf("How many people(0-%d)?:",N-1);scanf("%d",&n);printf("请输入数据:\n");for(i=0;i<n;i++){printf("\n输入第%d个记录.\n",i+1);input(i);}if(i!=0) save(n);printf_back();}void add(){ int i,n,k,t;n=load();printf("How many people do you want to add(0-%d)?:",N-n-1);scanf("%d",&t); k=n+t;for(i=n;i<k;i++){ printf("\n输入第%d个记录.\n",i-n+1); input(i);}save(k); printf_back();}void modify(){ struct people s; int i,n,k,w0=1,w1,w2=0;n=load();do{ k=-1; printf_face(); printf_n(n);do{ printf("\n\nEnter name that you want to modify!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); printf_one(k);w1=modify_data(k,n);if(w1==1) {printf("\n\t^_^.Successful ^_^.\n\n是否继续?\n\n\t1).是2).保存返回\t[ ]\b\b");scanf("%d",&w0); w2=1;}else{w0=0; if(w2==0) peop[k]=s;}if((w0!=1)&&(w2==1)) save(n);}while(w0==1); menu();}void browse(){ int n;n=load();printf_face(); printf_n(n);printf("\t共有%d 记录.\n",n);printf("\nPress any key to back...");getchar();menu();}void search(){ int w0,k,i,n,w1,w2; struct people s; n=load();do{printf("请选择查找类别: 1).姓名2).电话号码[ ]\b\b");scanf("%d",&w1); if(w1<1||w1>2) {printf("输入错误!请重新输入!\n"); w2=1;} }while(w2==1);if(w1==1){do{ k=-1;do{ printf("\n\nEnter name that tou want to search!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); printf_one(k);printf("\nWhat do you want to do?\n\t1).继续2).返回菜单[ ]\b\b");scanf("%d",&w0);}while(w0==1);menu();}else{ do{ k=-1;do{ printf("\n\nEnter number that tou want to search!\nNum:");scanf("%s",s.num);for(i=0;i<n;i++)if(strcmp(s.num,peop[i].num)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); printf_one(k);printf("\nWhat do you want to do?\n\t1).继续2).返回菜单[ ]\b\b");scanf("%d",&w0);}while(w0==1);menu();}}void deleter(){struct people s; int i,n,k,w0,w1;n=load();do{ k=-1; printf_face(); printf_n(n);do{ printf("\n\nEnter name that you want to delete!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); printf_one(k);printf("\n确定?\n\t1).是2).返回[ ]\b\b");scanf("%d",&w0);if(w0==1) {peop[k].name[0]='\0'; save(n);} else break;printf("\n\t^_^.Successful^_^.\n");printf("What do you want to do?\n\t1).继续2).返回[ ]\b\b");scanf("%d",&w1);}while(w1==1);menu();}【设计体会】通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。
c 课程设计总结分析一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法和编程技巧,培养学生具备基本的程序设计能力和良好的编程习惯。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数、数组、指针、结构体等基本概念。
2.技能目标:学生能够运用C语言编写简单的程序,解决实际问题,具备基本的程序设计能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,培养学生的创新精神和团队合作意识。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和数据类型。
2.运算符和控制结构。
3.函数、数组和指针。
4.结构体和其他数据类型。
5.基本的算法和编程技巧。
三、教学方法为了实现课程目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构、函数、数组、指针、结构体等基本概念,使学生掌握C语言的基本知识。
2.案例分析法:通过分析实际案例,使学生了解C语言在实际编程中的应用。
3.实验法:安排上机实验,让学生亲自动手编写C语言程序,培养学生的编程能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选择一本适合学生水平的C语言教材,作为学生学习的主要参考资料。
2.多媒体资料:制作课件、教案等多媒体教学资料,丰富教学手段,提高学生的学习兴趣。
3.实验设备:准备计算机实验室,为学生提供上机编程的硬件设施。
五、教学评估为了全面、客观地评估学生的学习成果,我们将采取以下评估方式:1.平时表现:通过课堂表现、参与讨论和团队合作的积极性等方面,评估学生的学习态度和课堂参与度。
2.作业:布置适量的作业,评估学生对C语言基本概念的理解和运用能力。
3.考试:定期进行考试,评估学生对C语言知识的掌握程度和编程能力。
4.项目:安排一次课程项目,让学生综合运用所学知识解决实际问题,评估学生的综合编程能力。
c语言课程设计报告一、课程目标知识目标:1. 让学生掌握C语言的基本语法,包括变量声明、数据类型、运算符、控制结构等;2. 培养学生运用C语言进行程序设计的能力,学会编写简单的程序解决实际问题;3. 使学生了解C语言中的数组、函数和指针等高级概念,并能够灵活运用。
技能目标:1. 培养学生熟练使用C语言编程环境,如Turbo C或Visual Studio等;2. 提高学生的编程技巧,使其能够编写具有逻辑性和可读性的代码;3. 培养学生独立分析问题、设计程序解决问题的能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动探索、自主学习的精神;2. 培养学生严谨、细心的学习态度,使其认识到编程过程中细节的重要性;3. 强调团队协作和交流分享,提高学生的沟通能力和团队意识。
分析课程性质、学生特点和教学要求:1. 课程性质:C语言课程属于信息技术学科,具有实践性和应用性强的特点;2. 学生特点:学生为初中生,具有一定的逻辑思维能力和计算机操作基础,但编程经验不足;3. 教学要求:结合学生特点,注重理论与实践相结合,以实例教学为主,引导学生动手实践。
1. 熟练运用C语言编写简单的程序;2. 掌握C语言的基本语法和编程技巧;3. 提高编程兴趣,形成自主学习、团队协作的良好习惯。
二、教学内容1. C语言基础知识:- 变量与常量的概念及其声明- 数据类型:整型、浮点型、字符型- 运算符:算术、关系、逻辑、赋值运算符- 控制结构:顺序结构、选择结构、循环结构2. 函数与数组:- 函数的定义、声明和调用- 数组的定义、初始化和使用- 一维数组、二维数组的操作3. 指针与字符串:- 指针的概念、声明与使用- 指针与数组的关系- 字符串的基本操作4. 编程技巧与实践:- 编程规范与命名规则- 代码调试与优化- 简单算法的实现(如排序、查找)5. 综合案例分析与编程实践:- 结合实际案例,运用所学知识进行程序设计- 针对不同案例,分析问题、设计算法、编写程序- 案例包括:计算器、成绩管理系统、小游戏等教学内容安排与进度:1. C语言基础知识(2周)2. 函数与数组(2周)3. 指针与字符串(2周)4. 编程技巧与实践(1周)5. 综合案例分析与编程实践(3周)教材章节关联:1. C语言基础知识:教材第1-3章2. 函数与数组:教材第4-5章3. 指针与字符串:教材第6章4. 编程技巧与实践:教材第7章5. 综合案例分析与编程实践:教材第8章及课后习题、拓展案例三、教学方法1. 讲授法:- 对于C语言的基本语法、概念和理论,采用讲授法进行教学,确保学生能够系统地掌握知识;- 讲授过程中注重条理清晰、深入浅出,结合实际案例,提高学生的理解和记忆;- 定期进行知识巩固,通过讲解经典例题,帮助学生深化理解。
c语言课程设计总结报告范文5篇c语言课程设计总结1在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实习学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实习课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实习环节,特别是c语言灵活、简洁,更需要通过编程的实习来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1.熟悉程序开发环境、学习计算机系统的操作方法一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行C语言程序设计实习心得体会(3篇)心得体会。
所谓环境就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。
通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。
同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。
2.学习上机调试程序完成程序的编写,决不意味着万事大吉。
1 前言设计一个算法求出两个序列的所有LCS,分析最坏情况,用“会计方法”证明利用b[i][j]求出所有LCS的算法在最坏情况下的需求分析根据最长公共子序列问题的性质,即经过分解后的子问题具有高度重复性,并且具有最优子结构性质,采用动态规划法求解问题。
根据以上辅助数组C和b的定义,算法首先需要求出这两个数组, C[m][n]中记录的最长公共子序列的长度,b中记录了查找子序列元素的搜索方向。
对于某些情况会输出重复的LCS,这是因为算法在沿不同路径搜索时可能会出现相同的LCS序列。
利用C和b的信息以及Find_All_LCS 可以采用回溯法求出所有的LCS。
由上述对Find_All_LCS 算法的分析可知,求出所有的LCS实际上是根据搜索的方向信息遍历所有的路径找出满足条件的元素集合。
因此可以得出结论。
2.1 课程设计目的运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
对于本课程设计而言,重点在熟悉C语言基本语法规范以及灵活运用C语言编程解决实际问题2.2 课程设计任务1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2.完成最低要求:完成第一个功能;3.进一步要求:进一步完成后续功能。
有兴趣的同学可以自己扩充系统功能。
要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
2.3 设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C++或TC集成开发环境2.4 开发语言C语言3 分析和设计3.1 模块设计根据最长公共子序列问题的性质,即经过分解后的子问题具有高度重复性,并且具有最优子结构性质,采用动态规划法求解问题。
c语言课程设计报告一、引言计算机科学与技术是当今社会中非常热门的学科之一,在这个时代,掌握一门计算机编程语言是极其重要的。
而C语言作为一种高度通用的编程语言,被广泛应用于软件开发、嵌入式系统等领域。
在本次C语言课程设计中,我们小组选择了某个特定领域的应用,对其进行分析、设计和实现。
二、问题定义本次课程设计的目标是设计一个简单的汽车租赁管理系统。
该系统需要实现的功能包括:汽车信息的录入和查询,租车和还车的订购和确认,用户信息的管理及租赁记录的统计等。
三、设计思路1. 数据结构的设计为了实现汽车租赁管理系统,我们需要设计适当的数据结构。
首先,需要定义汽车的信息,包括车型、颜色、日租金等。
其次,我们需要存储用户的信息,如姓名、手机号码等。
此外,还需要记录租赁的相关信息,如租赁时间、预计还车时间等。
2. 功能模块的划分根据设计思路,我们可以将汽车租赁管理系统划分为以下几个功能模块:(1)汽车信息模块:负责录入汽车信息和查询汽车信息。
(2)用户信息模块:负责管理用户的信息,包括用户的注册、修改和删除等操作。
(3)租赁模块:负责汽车的租赁和还车操作,包括租赁信息的录入、修改和查询等。
(4)统计模块:负责统计租赁记录,包括某一时间段内的租赁次数、总租金等。
四、系统设计与实现1. 数据结构的定义根据前面的设计思路,我们可以定义如下的数据结构:(1)汽车信息结构体:包括车型、颜色、日租金等。
(2)用户信息结构体:包括姓名、手机号码等。
(3)租赁信息结构体:包括租赁时间、预计还车时间等。
2. 功能模块的实现(1)汽车信息模块的实现:通过调用相应的函数,实现汽车信息的录入和查询。
(2)用户信息模块的实现:通过用户注册功能,实现用户的信息录入和管理。
(3)租赁模块的实现:实现汽车的租赁和还车操作,并更新租赁信息。
(4)统计模块的实现:根据租赁记录,实现针对某一时间段内的租赁次数和总租金的统计功能。
五、使用与测试在系统的实现过程中,我们需要进行充分的测试。
五邑大学课程设计报告课程名称:C语言程序设计课程设计课程编号:0800090学时:16学时学分:1学分图书信息管理系统的设计与实现姓名:梁婉琦_________________________学号:3214002395 _____________________班级:140808班 __________________________专业: 电子信息工程(信息安全)_______________学院:计算机学院 _________________________指导教师:张胜利」____________________________ 课程设计递交时间:2014年4月18日WUYI UNIVERSITY目录1.课程设计目的 (1)2.课程设计的内容 (1)3.课程设计的要求 (1)3.1.功能要求: (1)3.2.技术要求: (2)4.概要设计 (2)4.1.功能模块图 (2)4.2.功能能模块描述 (3)5.详细设计 (4)5.1.各功能模块的具体实现算法一一流程图 (4)5.2.重点设计描述 (5)6.系统测试与调试 (10)7.课程设计心得体会 (11)参考资料 (11)1.课程设计目的进一步加深、巩固所学专业课程《C语言程序设计》的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。
2.课程设计的内容设计并实现一个图书信息管理系统,要求具有以下功能模块:(1)图书信息录入模块。
(2)图书信息浏览模块。
(3)图书信息查询模块。
(4)图书修改删除模块。
(5)图书借阅模块:(6)图书归还模块:(7)借阅查询模块:(8)退出系统模块。
3.课程设计的要求3.1. 系统功能要求:1.图书信息录入模块:图书信息包括书名,编号,作者,价格,出版社,类别,原始库存,借出。
数据的存储可以采用结构体数组或者链表。
图书信息可以通过键盘逐个录入。
图书信息可以通过文件导入。
将最终数据存储在文件中2.图书信息浏览模块:能够浏览图书的基本信息和借阅信息。
将最终数据存储到文件3.图书信息查询模块:通过图书编号查询图书信息。
通过图书书名查询图书信息。
4.图书修改删除模块:通过图书查询选择要操作的图书。
选择修改或删除操作。
选择的图书已被借阅则不能继续操作,退出系统。
将最终数据存储到文件5.图书借阅模块:通过学生学号和图书编号进行借阅。
如果该学号是第一次借阅则需要输入姓名,并存入stude nt.txt将最终数据存储到文件6.图书归还模块:输入学生学号查询该学生已借阅的图书,再选择图书编号选择归还的图书。
将最终数据存储到文件7.借阅查询模块:输入学生学号查询该学生已借阅的图书。
可查询学生已借但未还的图书。
8.退出系统模块:每次操作结束都选择 system( “ pause ”);来退出从而进行下一个操作。
用户可以根据提示退出系统。
32 系统技术要求:1.用C语言实现系统。
2.系统以菜单方式工作。
3.有相应的代码说明(注释)4.提供一个界面来调用各个功能。
3.3. 其他要求:(1)最终递交材料:课程报告一份,系统源代码一份。
(2)一人一题,单独完成。
4. 概要设计4.1. 系统功能框架图图1系统功能模块图42 功能模块描述(描述每个功能模块的具体功能)1.图书信息录入模块:按照系统的提示输入图书信息,书名,图书编号,作者,出版日期,图书价格,出版社,图书类别,图书入库数。
这个模块我用了strcmp()来对比输入的图书编号是否与之前的编号重复,读出与写入都用fread() 和fwrite()来实现,而整个代码都用了这两个函数。
而录入的信息则存储在C盘中的book . txt文件。
2•图书浏览模块:能实现把储存在文件里的图书信息输出到显示器上。
3.查询图书模块:调用自定义函数dui()对比两个字符串的相关度,用于精确查询,查询有两种形式,按图书编号查询和按图书书名查询。
4.删除修改图书模块:修改和删除储存在文件中的图书信息5•图书借阅模块:输入学生学号借阅图书6图书归还模块:输入学生学号和要归还的图书的编号,修改原本借阅图书的数据,再将修改后的数据覆盖原数据。
7.借阅查询模块:输入学号,查询该学生所借阅图书的基本信息。
8.退出模块:退出系统。
5.详细设计5.1.各功能模块的具体实现算法一一流程图5.1.1. 主控main 函数流程图开始系统初始化用相关函数把数据写入 文档I 结束图2主控main 函数流程图yes开始系统初始化调用主控菜单函数 menu();并提示操作方法While ⑴输入【0~7】之间某一整数输入是否为1利用fread 和fwrite 读入和输出 纟吉束 沪〜信息到book.text 文件中并保存图3.录入图书模块流程图no判断键值,调用相应函 数,完成相应功能开始系统初始化While(1)输入【0~7】之间某一整数结束图4•浏览图书模块流程图开始系统初始化调用主控菜单函数menu();并提示操作方法| 斗While⑴输入【0~7】之间某一整数丄k输入是否为3 yes| J no判断键值,调用相应函是否选择按图书数,完成相应功能编号查询yesno按图书名查询结束调用设计的自定义函数dui()来对比两个字符串的相关度,用于查找用fread()读出信息图5•查询图书模块流程图开始系统初始化调用主控菜单函数menu();并提示操作方法While⑴输入【0~7】之间某一整数输入是否为4判断键值,调用相应函数,完成相应功能利用strcmp()判断输入的编号是否与jieyue.text中的编号一致修改图书信息(利用文件指针修改) no/ —将修改后的信息储存在文件结束图6•修改删除图书模块流程图yesyesno是否删除图书删除图书noyesyesyes开始输入借阅图书的编号图书编号是否存在yesno图书编号是否与已借阅图书重复no该图书所余数量是否与库存数量一样no输入学号借阅nono是否为第一次借阅nono该学生是否已借阅五本图书no借阅图书,修改文件的数据yes记录学生姓名图7.借阅图书模块流程图开始~1 ~输入学号* 结束图9•查询图书模块流程图结束图8•归还图书模块流程图5.2重点设计描述修改和删除模块是我做程序设计最重点设计的模块,修改过后的数据储存刚开始我是不 知道该怎么弄的,而现在我主要是用文件来储存信息。
我用fread()修改原本的数据,用fclose() 和fopen(),fseek()找到文件和转移数据。
开始 输入学号是否有借书yes输入要还图书的编号改变文件里 的数据6.系统测试与调试源代码敲完之后进行的调试其实是不行的,因为实在是太多错处了。
本来一堆英文,谁看得懂它们是什么?打算下个金山词霸来个全页翻译,但同学告诉我只要在那个下面提示错处的地方双击就会自动告诉你错处在哪个地方,感觉实在是太方便了!还有就是用文件储存信息的时候指针那里总是有问题,也是请教了别人才会改,问大神和看书我才知道用fseek(), rewind()解决了问题。
还有就是查询的那里依然有点问题,只能够用精确查找,感觉不太方便;而学生的学号10位输入进去之后不能在借阅查询找到借阅信息,而定义改了20位也不可以所以,加了rewind()也是不能显示,也不知道怎么办?调试程序时主要问题出现在文件指针的移动,图书和借阅信息的删除!因为我整个程序都是通过图书编号来完成操作,所以我必须保证图书编号不被重复,用户修改图书编号和删除时我都要考虑这本书书是否被借阅。
而删除图书,我先把不用的图书写到另一个文件里,然后再以新建的方式打开原文件,把图书信息又写回来。
7.课程设计心得体会通过本次课程设计,我重新认识了C语言,这是一门非常需要耐心和思考的课程。
而在做课程设计的过程中刚开始我其实是不知道应该从哪里入手的,因为感觉不知道怎么开始。
之后就去看教学平台上面的材料,因为开始看不懂所以又转战百度,反正就是找了很多资料才有头绪才开始写的。
中途也有很多的问题,不过还好科技比较发达,可以上网找答案,还有....... 找班里的大神和师兄师姐帮忙,他们都好犀利,一眼就看出哪里有问题,可以说大神好厉害吗?!参考资料[1]谭浩强.C程序设计(第 4版)•北京:清华大学出版社,2010 .[2]谭浩强.C程序设计题解与上机指导(第三版)•北京:清华大学出版社,2005.[3]张永健等译,标准C语言基础教程(第四版),北京:电子工业出版社,2010.[4]苏小红等,C语言程序设计(第2版),北京:高等教育出版社,2011.[5]苏小红等,C语言程序设计学习指导,北京:高等教育出版社,2011.[6]网上相关资料.。