C语言课程设计报告 西安邮电大学
c语言课程设计报告详细版
c语言课程设计报告详细版一、课程目标知识目标:1. 掌握C语言的基本语法和结构,包括变量声明、数据类型、运算符、表达式和语句。
2. 理解并能运用控制结构,如顺序、选择和循环结构进行程序设计。
3. 学会使用数组、函数和指针进行程序开发,并能理解它们在解决复杂问题中的应用。
4. 熟悉基本的输入输出操作,文件操作以及简单的错误处理机制。
技能目标:1. 能够编写简单的C程序,解决实际问题,展现出逻辑思考和问题解决的能力。
2. 能够阅读和分析C程序代码,理解程序的结构和执行过程。
3. 能够使用调试工具检查和修正程序中的错误,提高程序的稳定性和可靠性。
4. 能够通过小组合作,完成一个综合性的项目,培养团队协作和项目管理的初步技能。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发探究计算机科学的热情,形成主动学习和终身学习的习惯。
2. 培养学生的创新思维和批判性思维,鼓励尝试不同的解决方案,勇于面对编程中的挑战。
3. 增强学生的信息意识和责任感,理解程序在现实生活中的应用和影响,认识到编程对社会发展的贡献。
4. 通过项目实践,培养学生的集体荣誉感,加强沟通能力,形成良好的团队合作精神。
课程性质分析:本课程为高年级的C语言程序设计,旨在通过项目驱动的教学方法,使学生在实践中掌握C语言的编程技能,并能够在日常生活和学习中应用。
学生特点分析:学生具备一定的逻辑思维能力,对计算机编程有一定兴趣,但个体差异较大,需要针对不同层次的学生设计不同难度和类型的教学活动。
教学要求:1. 结合实际案例进行教学,强调理论知识与实践操作的结合。
2. 注重培养学生的实际编程能力和问题解决能力,鼓励学生自主探索和协作学习。
3. 通过形成性评价和总结性评价相结合的方式,全面评估学生的学习成果。
二、教学内容1. C语言基础- 变量与数据类型- 运算符与表达式- 输入输出函数- 顺序结构程序设计2. 控制结构- 选择结构(if-else)- 循环结构(for、while、do-while)3. 函数与数组- 函数定义与调用- 数组的使用- 二维数组4. 指针与字符串- 指针的概念与使用- 指针与数组- 字符串处理函数5. 文件操作与错误处理- 文件的打开与关闭- 文件的读写操作- 简单错误处理6. 综合项目实践- 项目需求分析- 功能模块划分- 编程实现与调试- 项目展示与评价教学内容安排与进度:第一周:C语言基础第二周:控制结构第三周:函数与数组第四周:指针与字符串第五周:文件操作与错误处理第六周至第八周:综合项目实践教材章节关联:《C程序设计》第一章至第五章,涵盖课程教学内容中的所有知识点,为综合项目实践打下基础。
西安邮电大学 C语言实习 医院管理系统
西安郵電大学C语言课程设计报告题目:医院信息管理系统院系名称:计算机学院专业名称:计算机科学与技术班级:学生姓名:学号(8位):指导教师:王春梅设计起止时间:2012年06月06日~2012年06月15日一. 设计目的1,通过本课程设计,强化上机动手能力,使自己在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握软件设计的基本方法。
2,学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
3,为后续各门计算机课程的学习打下坚实基础;为毕业设计和以后工作打下必要基础。
二. 设计内容建立一个医院信息管理系统,主要应用了数据结构体,数组,指针等。
在内容上包括录入信息模块,读取信息模块,保存信息模块,查寻信息模块,插入信息模块,删除信息模块,修改信息模块,显示信息模块及排序信息模块(按姓名进行排序)等,并且还有统计信息和相关信息的排序。
三.概要设计1.功能模块图;2.各个模块详细的功能描述。
(1)登陆界面:主要是用户进行注册和登陆的程序。
(2)录入模块:录入需要管理的病人及药品信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
(3)删除模块:可对病人及药品信息做删除处理。
(4)添加模块:可添加一个或多个病人及药品信息并将所添加病人和药品信息保存,方便查找。
(5)修改模块:可根据需要对病人和药品信息整体进行修改,也可随时对个别项进行修改。
(6)按编号排序:方便管理员进行查找信息。
(7)显示病人信息:使管理员更直接的了解病人及药品的相关信息。
四.详细设计1.功能函数的调用关系图;2.各功能函数的数据流程图;(1)链表的创建,尾插法(2)读取(3)查找((5)添加(6)修改模块(7)排序(8)统计3.重点设计及编码。
(1)密码:while (!feof(fp1))//循环逐行读取data.txt将读取到的信息保存在数组Userdata 中直到文件结束{fgets(Userdata1,30,fp1);if (strcmp(Linedata1,Userdata1)==0 ){printf("该用户已经注册!\n");printf("按任意键重新注册\n");getch();UserReg();}}fputs(Linedata,fp);//将这一行格式调整好的用户名密码信息写入data.txt文件fclose(fp);//关闭data.txt文件指针fputs(Linedata1,fp1);//将这一行格式调整好的用户名密码信息写入data.txt文件fclose(fp1);//关闭文件指针printf("亲,注册成功喽,赶快去登录吧!\n");printf("按任意键进入登陆界面\n");getch();system("cls");Login();}(2)排序while (first != NULL) /*遍历剩下无序的链表*/{/*注意:这里for语句就是体现直接插入排序思想的地方*/for (t=first, q=head; ((q!=NULL) && (q->id1<t->id1)); p=q, q=q->next); /*无序节点在有序链表中找插入的位置*//*退出for循环,就是找到了插入的位置*//*注意:按道理来说,这句话可以放到下面注释了的那个位置也应该对的,但是就是不能。
大学c语言课程设计总结
大学c语言课程设计总结一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握变量定义、数据类型、运算符、表达式等基本概念。
2. 学会使用C语言进行顺序、分支和循环结构的编程,并能运用这些结构解决实际问题。
3. 掌握C语言数组、函数、指针、结构体等高级概念,并能运用这些知识进行程序设计。
4. 了解C语言的文件操作,学会读写文件,以及简单的错误处理。
技能目标:1. 培养学生运用C语言进行问题分析、程序设计和调试的能力。
2. 提高学生编程思维和逻辑推理能力,使其能够独立完成中等难度的C语言程序设计。
3. 培养学生团队协作能力,通过小组讨论和实践,共同解决复杂问题。
情感态度价值观目标:1. 培养学生对C语言的兴趣,激发学习编程的热情,树立编程自信心。
2. 培养学生严谨、细心的编程态度,使其养成良好的编程习惯。
3. 培养学生面对困难时勇于尝试、持续改进的精神,提高解决问题的能力。
本课程针对大学C语言课程设计,结合学生年级特点,注重理论与实践相结合,旨在培养学生具备扎实的C语言基础和一定的编程能力。
课程目标具体、可衡量,以便学生和教师在教学过程中能够明确课程预期成果,并为后续的教学设计和评估提供依据。
二、教学内容本课程教学内容依据课程目标,结合教材科学性和系统性,进行以下安排:1. C语言基础知识:变量、数据类型、运算符、表达式、输入输出函数等,对应教材第一章至第三章。
- 变量定义、类型转换- 基本数据类型、常量与变量- 运算符、表达式、语句2. 程序结构:顺序、分支和循环结构,对应教材第四章。
- 顺序结构- 分支结构(if-else、switch-case)- 循环结构(for、while、do-while)3. 函数与数组:函数定义、调用、数组应用,对应教材第五章至第六章。
- 函数定义、参数、返回值- 数组定义、初始化、遍历- 函数与数组的应用4. 指针与结构体:指针概念、结构体、链表,对应教材第七章至第八章。
C语言课程设计设计报告书
C语言课程设计设计报告书一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握变量声明、数据类型、运算符、表达式等基本概念。
2. 学会使用C语言进行顺序结构、分支结构和循环结构的编程。
3. 掌握函数的定义、声明和调用,理解局部变量和全局变量的作用域。
4. 了解数组、指针和字符串的使用,能够运用它们解决实际问题。
技能目标:1. 培养学生编写、编译和调试C程序的能力,提高编程技巧。
2. 培养学生运用C语言解决实际问题的能力,如数值计算、数据处理等。
3. 培养学生分析问题、设计算法和编写程序的能力,提高逻辑思维能力。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发学习积极性,提高自主学习能力。
2. 培养学生合作学习、分享经验的精神,提高团队协作能力。
3. 培养学生严谨、认真、负责的学习态度,养成良好编程习惯。
课程性质:本课程为高中年级C语言课程,以实践为主,注重培养学生的编程能力和逻辑思维能力。
学生特点:高中年级学生对计算机编程有一定的基础,好奇心强,学习积极性较高,但需加强实践操作和问题分析能力的培养。
教学要求:结合课程内容和学生特点,采用任务驱动、案例教学等方法,引导学生主动探究、动手实践,提高编程技能和解决问题的能力。
同时,注重培养学生良好的编程习惯和团队合作精神。
通过本课程的学习,使学生能够具备C 语言编程的基本能力,为后续计算机课程学习打下坚实基础。
二、教学内容1. C语言基础知识:变量、数据类型、常量、运算符、表达式。
教材章节:第一章2. 控制结构:顺序结构、分支结构(if语句、switch语句)、循环结构(for循环、while循环、do-while循环)。
教材章节:第二章3. 函数:函数定义、声明、调用;局部变量和全局变量;递归函数。
教材章节:第三章4. 数组:一维数组、二维数组;数组的初始化、遍历和排序。
教材章节:第四章5. 指针:指针的定义与使用;指针与数组、字符串、函数的关系。
c语言课程设计设计报告
c语言课程设计设计报告c语言课程设计设计报告「篇一」c语言课程设计实验报告第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
(]1.2 实验要求在报告中记录建立、保存C程序实习过程。
1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main{printf (“Hello World! ”);}2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。
第二章数据类型2.1 实验目的(1)掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。
()(2)通过编程进一步理解和掌握运算符的确切含义和功能。
2.2 实验要求(1)在报告中记录建立、保存C程序实习过程。
(2)完成典型题目,分析遇到的困难和实验中的收获。
2.3 实验基本内容输入程序,观察输出结果 1>./*test2.1c*/1)编译如下程序: #includevoid main{char ch; int k;ch='a',k='b';printf("%d,%x,%c",ch,ch,ch,ch,k); printf("k=%%d ",k) }2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
2>./*test2.2c*/1)编译如下程序: #includevoid main{float a1,a2; double b1,b2; a1=1234.12; a2=0.000001; b1=1234.12; b2=0.000001;printf("%f,%l f ",a1+a2,b1+b2);}2)链接。
C语言课程设计报告 (2)
西安邮电学院软件设计报告书院系名称:电子工程学院学生姓名:周宇专业名称:微电子班级:1101学号:05115007时间:2012年4月10日至2012年4月17日实验题目:学生成绩管理系统一、实验目的综合应用所学的计算机基础知识和所掌握的程序设计语言,自行设计并实现一个较为完整的小型管理信息系统的设计与开发。
通过系统分析、系统设计、编程实现,写实验报告等环节,初步掌握软件系统的设计方法和步骤,锻炼大家灵活运用程序语言进行软件开发的初步能力,提高分析问题和解决问题的能力,提高程序设计水平。
二、功能要求1、数据录入、存储(录入系统所需的数据;将录入的数据存储在文件中)2、数据查询(按要求对数据进行查询)3、数据修改(对数据进行更新操作)4、数据删除(对数据进行删除操作)5、数据统计(对指定数据进行统计并输出)6、数据排序(对指定数据排序并输出)7、数据报表(对指定数据产生报表输出)8、界面(功能目录)三、系统分析与设计1、系统功能的描述:本系统先通过输入密码进入其主菜单界面,(主菜单界面共有10项服务选项,分别为(1)录入信息,(2)显示信息,(3)排序,(4)查询信息(5)插入信息,(6)删除信息(7)修改信息,(8)从文件读入学生信息,(9)所有学生信息写入文件,(0)退出系统。
)2、程序模块结构图:录入信息主菜单开始请输入密码显示信息排序学生信息写入文件从文件读入信息修改信息删除信息插入信息查询信息退出3、各模块功能说明:(1)录入信息,可以输入学生的班级,学号,姓名,C语言成绩,高数成绩,英语,物理成绩相关信息。
调用input()函数。
(2)显示信息,可以显示所输入学生的全部信息。
包括学生的班级,学号,姓名,C语言成绩,高数成绩,英语,物理成绩相关信息。
调用display()函数。
(3)排序,按照学生的平均成绩进行排序。
调用sort()函数。
(4)查询信息,按照系统提示输入要查询的学生信息,根据学生的学号查询学生的成绩。
c语言课程设计报告
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语言毕业课程设计
西安郵電大学C语言课程设计报告题目:小型的电视剧节目管理系统院系名称:计算机学院专业名称:计算机科学与技术班级:学生姓名:学号(8位):指导教师:设计起止时间:2012年06月06日~2012年06月15日一. 设计目的1.通过一个小型的管理系统的程序,使自己对C编程的感觉进一步加深;2.通过这些程序,使得管理员可以更加方便的管理该系统,使得用户可以更方便的查询。
二. 设计内容分为管理员和用户。
1.管理员:可以实现电视剧的添加,查看全部信息,删除,查询,修改;2.用户:可以实现按上映时间和类别查询,显示全部信息,电视剧的由新至旧和由旧至新的排序。
三.概要设计1.功能模块图;2.各个模块详细的功能描述1).管理员模块:a.添加:管理员创建的新结点续到以前结点的后面,为尾插;b.显示全部信息:先打开文件,若文件为空,则返回;否则申请新空间,把文件中的数据放到新申请的空间中,然后再输出全部信息;c:查询:先打开文件,若文件为空,则返回;否则申请新空间,把文件中的数据放到新申请的空间中,再输入要查找的序号,若文件为空或找不到,输出“查询错误”并退出该步;反之输出查询到的结果;d.修改:先打开文件,若文件为空,则返回;否则申请新空间,把文件中的数据放到新申请的空间中,再输入要修改的序号,若找不到该序号或文件为空,输出“查询错误”,并退出该步;反之输入修改后的项目,然后保存文件并输出新的信息;e:删除:先打开文件,若文件为空,则返回;否则申请新空间,把文件中的数据放到新申请的空间中,再输入要删除的序号,若文件为空或找不到,输出“查询错误”,并退出该步;反之把该序号后面的那个结点续到该序号前面的那个结点后面,就把该序号对应的结点删除成功。
2)用户模块:a:显示全部信息:用户进入该步骤后,可以显示当前电视剧节目的全部信息,包括剧名,导演名,主要演员名,类别,上映时间,大概内容;b:按类别查询:用户进入该步骤后,首先输入要查询的类别,若该文件中没有相关信息,系统会报错,并退出该步;反之输出查找到的相关信息;c:按时间查询:用户进入该步骤后,首先输入要查询的时间,若该文件中没有相关信息,系统会报错,并退出该步;反之输出查找到的相关信息;d:按电视剧由新至旧排列:用户选择了该项,系统会输出由新至旧排列的电视剧节目的信息;e:按电视剧由旧至新排列:用户选择了该项,系统会输出由旧至新排列的电视剧节目的信息。
西安邮电大学C语言 软件设计报告
西安郵電學院软件设计报告题目:小区物业管理系统院系名称:电子工程学院专业名称:光电信息工程班级:光电1101学生姓名:张萌学号(8位):05114014指导教师:王西龙设计起止时间:2012年04月09日~2012年04月23日一. 设计目的进一步掌握和利用C语言进行程设计的能力,理解和运用结构化程设计的思想和方法,熟练掌握条件语句、循环、数组、函数操作,初步掌握开发一个小型实用系统的基本方法,学会高度一个较长程序的基本方法和利用流程图或N-S图表示算法,将本课程所学的知识合理地运用于实践当中。
了解一些书上没有的函数及使用方法。
二. 设计内容小区管理系统设计:小区管理系统包括小区成员的所住单元、住户号、工作单位姓名、电话号码等信息;——小区管理系统主要提供以下功能:1.系统的登录界面(主要包括用户名、密码的设置、新用户的创建、密码的修改等);2.系统以菜单方式工作3.住户信息录入功能——输入4.住户信息浏览功能——显示5.住户信息查询、修改、增加功能(1)按姓名(2)按电话号码6.住户信息删除功能7.住户信息以文件方式保存、读取8.住户信息的统计三.概要设计1.功能模块图依据程序的数据结构和功能,遵照“自顶向下”原则,采用基于函数的逐步求精法,描述该程序的层次结构:2.各个模块功能的详细描述●主函数: main();●登录菜单:⑴. 进入主菜单:menu();⑵.修改密码函数: repassword();⑶.登录界面函数: print1();⑷创建用户函数: usercreat();●主菜单:⑴输入函数:head=create();⑵输出函数:print(head);⑶住户信息文件的保存函数:save_inf(head);⑷住户信息文件的读取函数:head=read_inf();⑸住户信息的查找函数:find(head);⑹住户信息的修改函数:re(head);⑺住户信息的删除函数:delete(head);⑻住户信息的添加函数:add(head);⑼信息的排序:sort(head);⑽住户信息的统计:count(head);四.详细设计1.功能函数的调用关系图2.各功能函数的数据流程图①输出函数print()的流程图开始执行while循环执行printf()语句结束○2输入函数create()的流程图开始Printf()提示语句;Scanf()语句输入数执行While()语依次查找链表再执行scanf()语句结束○3执行查找函数find()流程图开始执行while循环语句执行if判断语句结束○4执行修改函数re()的流程图开始执行while语句进行查找执行if语句进行判断执行while语句进行选择要修改的内容结束○5执行删除函数delete的流程图开始If语句判断节点是否为空执行while进行查找要删除的节点结束○6添加函数add的流程图开始执行scanf语句输入要添加的信息执行while语句查找添加的位置结束○7执行排序sort函数的流程图开始执行for循环统计节点的数目执行for循环节点一到尾部执行for循环找最大节点执行for循环给最后尾节点排序结束3.重点设计及编码1)密码输入函数(实现密码能够再输错的情况下修改);编码:printf("\n\n**-----------请输入密码(6位)login in: ");for(i=0;i<7;i++){mima[i]=getch();if(mima[i]=='\r')break;if(mima[i]=='\b'){printf("\b \b");i=i-2;}else if(mima[i]!='\r')printf("*");}mima[i]='\0';2)从文件中实现一次读取:编码:fp=fopen("mima.txt","rt");while(fscanf(fp,"%s %s",n,a)!=EOF){if(strcmp(mima,a)==0&&strcmp(root,n)==0)//进行判断是否一致{printf("\n\n***********恭喜你登录成功!***********\n");lead();break;}}fclose(fp);if(fp==NULL){printf("\n\n*-----抱歉登录指令错误,请选择(3)重新登录!-------*\n");}3)登录函数实现与主体函数的链接:编码:lead(){printf("*************** ----- 欢迎进入登录界面-----*************************\n\n");printf("*-------------------------1.进入主菜单--------------------------------*\n");printf("*-------------------------2.修改密码----------------------------------*\n");printf("*-------------------------3.重新登录----------------------------------*\n");printf("*-------------------------4.创建用户----------------------------------*\n");printf("*-------------------------0.退出系统----------------------------------*\n");printf("***************************************************** ******************\n");}4)输入函数找准链表节点进行输入:编码:struct person *head,*p1,*p2;head=p2=(struct person *)malloc(N); /* head *p2都指向头结点*/printf("请输入: 单元号户号姓名性别工作单位电话号码(输入户号0结束)\n");p1=(struct person *)malloc(N);scanf("%s%ld%s%s%s%s",p1->num,&p1->num1,p1->name,p1->sex,p1->com, p1->tel);while(p1->num1!=0){p2->next=p1;/* 将新结点连接到表尾*/p2=p1; /* p2指向新的表尾*/p1=(struct person *)malloc(N);/* p1指向新申请的结点*/scanf("%s%ld%s%s%s%s",p1->num,&p1->num1,p1->name,p1->sex,p1->com,p1-> tel);}p2->next=NULL;/* 表尾结点next域置空*/free(p1); /* 释放无效空间*/return head; }5)文件的保存函数与读取函数要保持一致:编码:for(stu=h->next;stu!=NULL;stu=stu->next)fprintf(fp,"%s %ld %s %s %s %s\n",stu->num,stu->num1,stu->name,stu->sex,stu-> com,stu->tel); /*格式化字符串写函数*/printf("\n文件已成功保存,按任意键返回!\n");getch(); /* 从键盘上输入一个字符但不会现在屏幕上*/fclose(fp); /* 将文件所指的指针FP关闭*/}fscanf(fp,"%s %ld %s %s %s %s\n",stu->num,&stu->num1,stu->name,stu->sex, stu->com,stu->tel);/*格式化字符读函数*/r->next=stu;r=stu;}r->next=NULL; /*尾指针置空*/fclose(fp);6)排序函数关键在找最大节点的位置时能记录前一节点的位置:编码:struct person *p,*pre1,*pre2,*r,*s;int count=0,i;for(s=h;s->next!=NULL;s=s->next) /*统计节点数*/{count++;}for(s=h;s->next!=NULL;s=s->next); /*循环体语句为空,找尾节点*/for(i=1;i<count;i++){pre1=h; /*pre1指向r前的一个节点*/pre2=h->next; /*pre2指向p前的一个节点*/r=pre1->next;p=pre2->next;while(p!=s)//不等于尾节点{if(p->num1>r->num1){pre1=pre2; /*指针r始终指向数据较大的节点*/r=p;}pre2=pre2->next;//依次往下查找p=p->next;}pre1->next=r->next; //释放最大的节点r->next=s->next;//给s节点附上新的节点s->next=r;}for(p=s->next,pre1=s;s->num1>p->num1;pre1=pre1->next,p=p->next);//给s节点后的进行排序h->next=s->next;//找到插入的位置s->next=p;pre1->next=s;printf("按任意键继续\n");getch();7)修改函数中要实现能对修改选项的选择:编码:while(p->next!=NULL){p=p->next; /* 继续查找*/if(strcmp(p->name,name)==0){while(choice!=0)/* 进行选择修改信息*/{printf("请输入要修改的选项:1.单位号 2.房户号 3.工作单位 4.电话号码0:退出\n");printf("请选择(0--4):");scanf("%d",&choice);if(choice==1){printf("请输入新的单位号: ");scanf("%s",p->num);}if(choice==2){printf("请输入新的房户号: ");scanf("%ld",&p->num1);}if(choice==3){printf("请输入新的工作单位: ");scanf("%s",p->com);}if(choice==4){printf("请输入新的电话号码: ");scanf("%s",p->tel);}}}return 1;}return 0;8)删除函数关键在找要删除节点的位置:编码:while(p!=NULL){if(strcmp(p->name,name)==0) /* 找到要删除的节点*/{p0->next=p->next; /*后续结点链接到前驱结点之后*/free(p);return 1;}p0=p; /* 移向指针继续查找*/p=p->next;9)添加函数关键在找到要添加的位置:编码:while(p0->next!=NULL&& p0->next->name==p->name)p0=p0->next; /* 继续查找添加的位置*/if(p0->next!=NULL&& p0->next->name==p->name){free(p);/* 释放新结点的存储空间*/return 0; /* 不添加就返回0*/}p->next=p0->next;/*后续结点连接到新结点之后*/p0->next=p; /* 新节点连接到前驱接点之后*/10)统计函数在于实现住户单元号相同与不同的情况下的记录:编码:struct person *p;sort(h);i=0,j=0,dcount=0;drcount[j]=0;for(p=h->next,d[i]=p->num,dcount=1;p!=NULL;p=p->next){count++; //统计总人数if(d[i]!=p->num)//楼号不相等则继续查找{i++;d[i]=p->num;dcount++;j++;drcount[j]=1;//该栋楼人数加为1}elsedrcount[j]++; //统计每栋住户楼的人数}五.测试数据及运行结果1.正常数据及运行结果从文件中读取信息从键盘中输入信息住户信息的删除住户信息的修改住户信息的添加2.异常测试数据及运行结果六.调试情况,设计技巧及体会1、通过这次实习,我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境,更增强了对WIN—TC和C++的使用技巧。
计算机程序设计(C语言)课程设计报告
计算机程序设计(C语言)课程设计报告计算机程序设计(C语言)课程设计报告一、引言计算机程序设计是现代信息技术领域中的核心课程之一,它涉及到计算机软件开发的方方面面。
本报告旨在总结我的计算机程序设计(C语言)课程设计经验,并对学习过程中实践的项目进行详细的分析和展示。
二、背景介绍在本课程中,我们的任务是设计和实现一个简单的学生管理系统。
该学生管理系统能够记录学生的基本信息,并提供相应的操作功能,如添加学生、删除学生、查询学生信息等。
通过课程设计,我学习到了软件开发的基本流程和方法,提高了我的代码编写和问题解决能力。
三、需求分析为了更好地完成学生管理系统的设计与实现,我们首先进行了需求分析。
根据老师和同学们的要求,系统需要具备以下主要功能:1. 添加学生信息:包括学生姓名、学号、性别、年龄等基本信息。
2. 删除学生信息:通过学号或姓名进行学生信息的删除。
3. 查询学生信息:可以通过学号或姓名进行学生信息的查询,并显示相关结果。
4. 修改学生信息:可以对学生的基本信息进行修改,如姓名、性别、年龄等。
5. 显示所有学生信息:可以显示系统中所有学生的基本信息。
6. 退出系统:提供用户退出系统的选项。
四、系统设计与实现1. 界面设计为了使用户能够直观地操作学生管理系统,我们采用了简洁明了的图形用户界面。
在命令行窗口中,通过显示菜单供用户选择相应功能,用户可以通过键入数字选择所需操作。
2. 数据结构设计为了存储学生的信息,我们设计了学生结构体,并使用链表来管理学生信息。
学生结构体包括姓名、学号、性别、年龄等成员变量,通过链表的方式将学生结构体连接起来,方便对学生信息的增删改查操作。
3. 功能实现根据需求分析,我们逐一实现了系统的各项功能。
通过在代码中定义相应的函数,并在主函数中调用这些函数,我们成功完成了学生管理系统的设计与实现。
五、项目总结通过本次计算机程序设计(C语言)课程设计,我不仅学习到了C 语言的基本语法和编程技巧,还深入理解了软件开发的过程。
西安邮电大学C语言实验报告
{ int i,j,s;
for(j=1;j<=9;j++)
{
for(i=1;i<=9;i++)
{
s=j*i;
printf("%d*%d=%d ",j,i,s);
} printf("\n");
}
}
说明:正文一律用宋体,小四号字
最终应提交以下文档:
1实验报告电子版,实验报告保存后的文件名为:班级+学号+姓名
实验三
#include"stdio.h"
#include"math.h"
main()
{int i;
float j,t,pi;
t=1,pi=1;j=1;i=1;
while(fabs(t)>=1e-7)
{j*=i;
i++;
t=1/j;
pi=pi+t;
}
printf("pi=%f\n",pi);
}
实验四
#include <stdio.h>
:
刘辉娟
专业名称
:计算Βιβλιοθήκη 科学与技术班级:计科1106
学号
:
04111201
时间
:
2011年11月20日-2011年11月30日
实验题目循环结构程序设计
一、实验目的
1.掌握for语句的使用。
2.掌握while语句的各种形式的使用。
3.掌握如何控制循环条件,防治死循环或不循环。
二、实验内容
实验一:计算s=1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+4+5……n);
C语言课程设计报告完整版
C语言课程设计实习报告学生姓名:学生学号:所在班级:任课教师:课程成绩:1.题目需求(1)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。
选手的最后得分为:去掉一个最高分和一个最低分后其余8个数的平均值。
(2)同时对评委评分进行裁判,即在十个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分差距最大)的评委。
2.需求分析根据题目要求,由于数据间单,仅涉及到简单排序及转换,程序中应提供显示、输入、输出、排序等操作,同时还可以提供键盘式选择菜单实现功能选择。
3.总体设计这个系统可分为三个模块(见图 1 ),评分、对评委测评、退出。
其中主要功能是最终得分和对评委测评两个模块。
4.详细设计主函数比较简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块用菜单方式选择;另外,菜单部分也可以写成函数。
其流程图如图 2 所示。
[程序]}#include <stdio.h> #include <math.h> main () /*主函数*/{void V ote_score();/* 声明评分函数*/void BaW();/*声明对裁判测评函数*/int n,w;do{ puts("\t\t**************************MENU****************** *******\n\n");/*选择菜单*/puts("\t\t\t\t 1.V ote and the score ");/*对歌手评分*/puts("\t\t\t\t 2.Best and worest voter");/*对裁判测评*/puts("\t\t\t\t 0.Exit ");/*退出*/puts("\n\n\t\t****************************************************\n\n"); printf("Choice your number (0-2): [ ]\b\b");scanf(" %d",&n);if(n<0 || n>2)/*对选择的数字做判断*/{ w=1;getchar ();}else w=0;}while (w==1);/*选择功能*/switch(n){case 1 : V ote_score();break;case 2 : BaW();break;case 0 : exit(0);}}void V ote_score()/*评分函数*/{i nt a[10],b[10],i,j,k,B,n,w;f loat A;B=0;p rintf("input the content :\n");f or(i=0;i<10;i++)/*输入评选内容并求的评分之和*/ {b[i]=a[i];B=B+b[i];}for (i=0;i<9;i++)/*对评分按从小到大排序*/for(j=1;j<10;j++)if(b[i]>b[j]){k=b[i];b[i]=b[j];b[j]=k;}A=(B-b[0]-b[9])/8.0;/*舍去最低分和最高分求平均分*/ printf("The final score %f .\n",A);/*输出结果*/printf(“What do you what to do?”);printf("\t\t\n********************1.MENU**********\n\n ***********2.Exit *********\n\n");/*选择菜单*/ printf("\t\t\t Choice you number:[ ]\b\b");scanf(" %d",&n);if(n<1 || n>2)/*对选择的数字做判断*/{ w=1;getchar ();}else w=0;while(w==1);/*选择功能*/switch (n){case 1: main() ;break;/*返回主函数*/case 2: exit(0);/*退出*/}}#include <math.h>void BaW()/*对裁判测评函数*/{i nt a[10],b[10],i,j,k,B,n,w;f loat A,f,c[10],d[10];B=0;p rintf("input the content :\n");f or(i=0;i<10;i++)/*输入评选内容并求的评分之和*/ {b[i]=a[i];B=B+b[i];}for (i=0;i<9;i++)for(j=1;j<10;j++)if(b[i]>b[j]){k=b[i];b[i]=b[j];b[j]=k;}A=(B-b[0]-b[9])/8.0;for(i=0;i<10;i++)/*求得各评分与平均分之差的绝对值*/ {c[i]=fabs(a[i]-A);d[i]=c[i];}for(i=0;i<9;i++)/*对所求绝对值按从大到小排序*/for(j=1;j<10;j++){i f(d[i]<d[j]){}}for(i=0;i<10;i++)/*找出最公平评委*/if(c[i]==d[9])printf("The best voter's number is %d . \n",i);for(i=0;i<10;i++)/*找出最不公平评委*/if(c[i]==d[0])printf("The worst voter's number is %d .\n" ,i);printf(“What do you what to do?”);printf("\t\t\n********************1.MENU**********\n\n ***********2.Exit *********\n\n");/*菜单*/printf("\t\t\t Choice you number:[ ]\b\b"); scanf(" %d",&n);if(n<1 || n>2)/*对选择的数字做判断*/{ w=1;getchar ();}else w=0;while(w==1);/*选择功能*/switch (n){case 1: main() ;break;/*回主菜单*/case 2: exit(0);/*退出*/}5. 上机操作1.编译、链接和运行。
c语言课程设计报告
c语言课程设计报告C语言课程设计报告。
一、设计目的。
本次课程设计的目的在于通过实际的项目实践,帮助学生巩固C语言的基础知识,提高编程能力,培养学生的实际动手能力和解决问题的能力。
二、设计内容。
1. 学生信息管理系统。
设计一个简单的学生信息管理系统,包括学生的基本信息录入、查询、修改和删除功能。
通过这个项目,学生可以学习如何使用C语言中的结构体、文件操作等知识,加深对C语言的理解。
2. 简易计算器。
设计一个简易的计算器程序,实现基本的加减乘除运算,同时具备错误输入提示和异常处理功能。
通过这个项目,学生可以学习如何使用条件语句、循环语句和函数等知识,提高对C语言的掌握程度。
3. 学生成绩管理系统。
设计一个学生成绩管理系统,包括成绩录入、统计、排名等功能。
通过这个项目,学生可以学习如何使用数组、指针等知识,提高对C语言的应用能力。
三、设计思路。
在设计过程中,我们要注重培养学生的问题分析和解决能力,鼓励他们多动手实践,多思考,多尝试。
同时,要引导学生注重代码的规范性和可读性,提高代码的质量和可维护性。
四、设计方法。
1. 理论教学与实践相结合。
在课程教学中,要注重理论知识的讲解,同时配合实际的项目练习,让学生在实践中巩固所学知识,提高编程能力。
2. 引导学生独立思考与合作交流。
在项目实践过程中,要引导学生独立思考问题,培养他们解决问题的能力,同时鼓励学生之间的合作交流,共同解决问题,促进学习效果的提高。
3. 鼓励创新与实践。
在项目设计中,要鼓励学生发挥创造力,设计出独特的程序,同时要注重实际操作,让学生通过实践检验自己的设计,不断完善和改进。
五、设计效果。
通过本次课程设计,学生将能够掌握C语言的基本语法和常用技巧,提高编程能力,培养解决问题的能力,为以后的学习和工作打下坚实的基础。
六、总结。
C语言课程设计是学生学习C语言的重要环节,通过设计实际项目,可以提高学生的动手能力和解决问题的能力,为学生今后的学习和工作打下坚实的基础。
c语言课程设计报告书3篇
c语言课程设计报告书3篇c语言课程设计报告书1我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。
在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了程序模块处理。
简单界面程序。
高级界面程序。
程序的添加修改。
用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的.语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
c语言课程设计报告.
c语言课程设计报告.一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,具备使用C语言进行程序设计的能力。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构(如数组、链表、栈和队列等)和算法(如排序、查找等)。
2.技能目标:学生能够运用C语言编写解决问题的程序,具备一定的编程实践能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,使其认识编程在实际生活中的应用和价值。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言基本语法:数据类型、运算符、表达式、语句等。
2.数据结构:数组、链表、栈、队列、树等。
3.算法:排序算法(冒泡排序、选择排序、插入排序等)、查找算法(顺序查找、二分查找等)等。
4.编程实践:使用C语言解决实际问题,培养学生的编程能力和解决问题的能力。
三、教学方法为了实现教学目标,本课程将采用以下几种教学方法:1.讲授法:教师讲解C语言的基本语法、数据结构和算法,帮助学生建立知识体系。
2.案例分析法:分析实际编程案例,让学生了解编程在实际中的应用。
3.实验法:学生动手编写程序,巩固所学知识,培养编程能力。
4.讨论法:分组讨论问题,培养学生的团队协作能力和解决问题的能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《C程序设计语言》(K&R著)。
2.参考书:《C Primer Plus》(Stephen Prata著)。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、网络等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
具体评估方法如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、团队协作等。
2.作业:占课程总评的30%,包括编程练习、算法设计等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
以上评估方式客观、公正,能够全面反映学生的学习成果。
c语言课程设计设计报告
c语言课程设计设计报告一、教学目标本课程的教学目标是让学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识,培养学生编写简单C程序的能力,使学生了解程序设计的基本思路和方法,培养学生的逻辑思维和问题解决能力。
具体来说,知识目标包括:1.理解C语言的基本语法和编程规范;2.掌握基本数据类型、运算符和表达式;3.熟悉控制结构,如条件语句、循环语句等;4.了解函数的定义和调用方法。
技能目标包括:1.能够使用C语言编写简单的程序;2.能够阅读和理解简单的C语言程序;3.能够使用调试工具对程序进行调试和优化。
情感态度价值观目标包括:1.培养学生对编程的兴趣和热情;2.培养学生克服困难、解决问题的决心和勇气;3.培养学生团队协作、共同进步的精神。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言基本语法和编程规范;2.数据类型、运算符和表达式;3.控制结构,如条件语句、循环语句等;4.函数的定义和调用方法;5.简单程序的设计和调试。
教材选用《C程序设计语言》(K&R),章节安排如下:1.第1-3章:C语言基本语法和编程规范;2.第4-5章:数据类型、运算符和表达式;3.第6-7章:控制结构;4.第8章:函数的定义和调用方法;5.课后练习和案例分析。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解基本语法、数据类型、运算符、控制结构和函数等基础知识;2.案例分析法:分析典型程序,使学生了解编程思路和方法;3.实验法:上机编程实践,培养学生的动手能力;4.讨论法:分组讨论问题,培养学生的团队协作和问题解决能力。
四、教学资源本课程所需教学资源包括:1.教材:《C程序设计语言》(K&R);2.参考书:C语言相关辅导书籍;3.多媒体资料:PPT课件、教学视频等;4.实验设备:计算机、编程环境等。
以上教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。
c语言课程设计报告设计方案
c语言课程设计报告设计方案一、课程目标知识目标:1. 让学生掌握C语言的基本语法和结构,包括变量声明、数据类型、运算符、控制结构等;2. 培养学生能够运用C语言编写简单的程序,解决问题,实现基本的输入输出功能;3. 引导学生理解函数的概念,学会定义和调用函数,提高代码的复用性和可维护性。
技能目标:1. 培养学生运用C语言进行程序设计的能力,包括分析问题、设计算法、编写代码和调试程序;2. 培养学生具备使用集成开发环境(IDE)进行C程序开发的能力;3. 培养学生通过阅读和分析C程序,提高编程技巧和问题解决能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,培养良好的编程习惯;2. 培养学生的团队协作精神,学会在编程过程中互相交流、分享经验;3. 培养学生面对编程挑战时的自信心和毅力,提高克服困难的能力。
分析课程性质、学生特点和教学要求,本课程目标将分解为以下具体学习成果:1. 学生能够独立完成C语言基础知识的复习和巩固;2. 学生能够运用所学知识,编写简单的C程序,解决实际问题;3. 学生能够通过小组合作,共同完成一个综合性的编程项目,提高团队协作能力;4. 学生在编程实践中,能够积极思考、主动探索,培养创新意识和解决问题的能力。
二、教学内容本课程教学内容依据课程目标,结合教材《C程序设计》进行选择和组织,主要包括以下几部分:1. C语言基础知识:变量声明、数据类型、常量、运算符、表达式等;- 教材章节:第1章-第3章2. 控制结构:顺序结构、分支结构(if语句)、循环结构(for、while、do-while循环);- 教材章节:第4章-第6章3. 函数:函数定义、函数调用、函数声明、递归函数;- 教材章节:第7章4. 数组:一维数组、二维数组、字符数组;- 教材章节:第8章5. 指针:指针的概念、指针变量、指针与数组、函数指针;- 教材章节:第9章6. 结构体与共用体:结构体定义、结构体数组、结构体指针、共用体;- 教材章节:第10章7. 文件操作:文件打开与关闭、文件读写、文件定位;- 教材章节:第11章教学内容安排和进度如下:1. C语言基础知识(2课时)2. 控制结构(4课时)3. 函数(2课时)4. 数组(2课时)5. 指针(4课时)6. 结构体与共用体(2课时)7. 文件操作(2课时)本课程教学内容的制定,旨在确保学生能够系统地掌握C语言编程知识,为后续课程学习打下坚实基础。
C语言课程设计报告
C语言课程设计报告一、设计目的本次课程设计旨在帮助学生熟悉C语言的基本语法和编程思想,通过设计一个简单的C语言程序,掌握C语言的基本编写技巧和调试方法,加深对C语言的理解。
二、设计内容本次C语言课程设计要求学生设计一个简易的学生信息管理系统,包括学生的基本信息录入、查询、修改和删除功能。
三、设计思路1. 需要定义一个学生信息的结构体,包括学号、姓名、年龄等基本信息。
2. 定义一个学生信息数组,用于存储学生信息。
3. 实现录入学生信息的功能,通过用户输入学生的学号、姓名、年龄等信息,并将其存储到学生信息数组中。
4. 实现查询学生信息的功能,用户输入要查询的学生学号,系统通过遍历学生信息数组找到对应的学生信息并输出。
5. 实现修改学生信息的功能,用户输入要修改的学生学号,系统通过遍历学生信息数组找到对应的学生信息,并提示用户输入新的学生姓名、年龄等信息,并将其更新到学生信息数组中。
6. 实现删除学生信息的功能,用户输入要删除的学生学号,系统通过遍历学生信息数组找到对应的学生信息,并将其从学生信息数组中删除。
四、设计步骤1. 定义一个学生信息的结构体,并在主函数中定义一个学生信息数组。
2. 实现录入学生信息的功能,通过用户输入学生的学号、姓名、年龄等信息,并将其存储到学生信息数组中。
3. 实现查询学生信息的功能,用户输入要查询的学生学号,系统通过遍历学生信息数组找到对应的学生信息并输出。
4. 实现修改学生信息的功能,用户输入要修改的学生学号,系统通过遍历学生信息数组找到对应的学生信息,并提示用户输入新的学生姓名、年龄等信息,并将其更新到学生信息数组中。
5. 实现删除学生信息的功能,用户输入要删除的学生学号,系统通过遍历学生信息数组找到对应的学生信息,并将其从学生信息数组中删除。
6. 编写主函数,实现菜单选择功能,用户可以通过选择不同的菜单选项进行录入、查询、修改和删除学生信息的操作。
五、实验成果经过设计和编码,最终实现了一个简易的学生信息管理系统,能够完成学生信息的录入、查询、修改和删除功能。
西安邮电大学
西安邮电大学(计算机学院)实验名称:词法分析器专业名称:计算机科学与技术班级:学生姓名:一.实验目的及实验环境实验目的:构造一个简单的词法分析器实验环境:vc6.0二.实验内容利用c语言构造一个简单的词法分析器,可以识别出程序中的关键字,并且输出;首先自定义一些关键字,并且给他们分别设置一个数字标识符;建立一个数组,保存每次扫描的单词,并判断两个字符串是否相等,若相等则输入其关键字,若不相等,则认为为定义的一个变量;对于一些运算操作符,则依次展开比较,我使用的就是switch语句展开推论;在这个程序中,须要对空格展开辨识,辨识时,读取至空格,则指针稳步向前移动,直至碰到下一个字符即可。
对于数字,则指出为变量的赋值;1.正常测试数据(3组)及运行结果;2.非正常测试数据(2组与)及运转结果。
1.实验过程中遇到的问题及解决办法;在实验中,关键的问题就是把字符水解出,在水解的时候,必须临时留存在一个数组中,另外的话,须要辨识空格,在遇到空格的时候,指针稳步向前读取,直到碰到下一个字符已经开始,根据字符串与否成正比,去推论关键字;六.附录:源代码(电子版)#include#includecharprog[80],token[8],ch;intsyn,p,m,n,sum;char*rwtab[6]={voidscaner(void);main(){printf(scaner();switch(syn){case11:printf(case-1:printf(default:printf(}while(syn!=0);}voidscaner(void){for(m=0;mtoken[m++]=null;ch=prog[p++];m=0;while((ch=='')||(ch=='\n'))ch=prog[p++];if(((ch='a'))||((ch='a'))){while(((ch='a'))||((ch='a'))||((ch>='0')&&(chtoken[m++]=ch;ch=prog[p++];}p--;syn=10;for(n=0;nif(strcmp(token,rwtab[n])==0){syn=n+1;break;}}elseif((ch>='0')&&(chwhile((ch>='0')&&(chsum=sum*10+ch-'0';ch=prog[p++];}p--;syn=11;}else{ switch(ch){token[m++]=ch;ch=prog[p++];if(ch=='='){ syn=22;token[m++]=ch;}else{syn=20;p--;}break;case'>':token[m++]=ch;ch=prog[p++];if(ch=='='){ syn=24;token[m++]=ch;}else{syn=23;p--;}break;token[m++]=ch;ch=prog[p++];if(ch=='+'){ syn=17;token[m++]=ch;}else{syn=13;p--;}break;case'-':token[m++]=ch;ch=prog[p++];if(ch=='-'){ syn=29;token[m++]=ch;}else{syn=14;p--;}break;case'!':ch=prog[p++];if(ch=='='){syn=21;token[m++]=ch;}else{syn=31;p--;}break;token[m++]=ch;ch=prog[p++];if(ch=='='){ syn=25;token[m++]=ch;}else{ syn=18;p--;}break; case'*':syn=15;token[m++]=ch;break; case'/':syn=16;token[m++]=ch;break; case'(':syn=27;token[m++]=ch;break; case')':syn=28;token[m++]=ch;break; case'{':syn=5;token[m++]=ch;break; case'}':syn=6;token[m++]=ch;break; case';':syn=26;token[m++]=ch;break; case'\token[m++]=ch;break; case'#':syn=0;token[m++]=ch;break; case':':syn=17;token[m++]=ch;break;default:syn=-1;break;}} token[m++]='\0';}。
c语言实习报告
西安邮电大学C语言课程设计报告题目:学生宿舍管理系统院系名称:计算机学院专业名称:软件工程班级:1205班学生姓名:邵欢学号(8位):04123157指导教师:王小银一.设计目的1. 掌握结构体的定义和使用。
2.理解链表工作原理,熟悉基本操作。
3.熟悉C语言中文件操作。
4.掌握文件的定义方法及文件指针的概念,掌握文件打开、关闭、读、写文件基本操作函数。
5掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及它们赋值的方法。
6.握函数的调用及嵌套,顺序结构、选择分支结构、循环结构及其嵌套的应用、结构体、指针以及综合应用,会使用文件的一些函数。
7.会独自分析问题解决问题,提高解决问题的能力。
8.提高分析问题和解决问题的能力,提高程序设计水平二. 设计内容1.运用结构体及链表等编辑一个简单的学生宿舍基本信息管理系统,使之能够完成学生基本信息的输入、保存、读取、查找、插入、删除、修改、排序、统计、输出、退出。
2.利用密码对系统信息进行管理。
2.执行编译操作,并根据提示调试此程序,排除所有的错误和警告,直到编译成功为止。
3.执行运行操作,逐一对每个模块进行调试,直到全部程序运行成功为止。
4.接受老师的检查并回答老师所提出的问题,知道令老师点头为止。
5.根据自己的源程序及运行情况截取相应的图片,完成实验报告。
三.概要设计1.功能模块图2.各个模块详细的功能描述。
登陆界面:需将在文件中设置好的密码与输入的密码进行比较,正确即可进入主界面,可选择要输入的信息,否则退出1.输入模块struct Node*creat_inf()进入输入信息模块,用do-while循环对学生信息进行输入。
2.保存信息模块void save_inf(struct Node*head)对信息进行保存,保存到文件中。
3.读取信息模块struct Node*read_inf()从指定文件中读取出保存的信息。
4.查找信息模块struct Node*find(struct Node*p)在已保存的信息中按学号查找对应学号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{p2=p1;
//p2 为 p1 的前驱
p1=p1->next;}
if(num==p1->num)
{if(p1==head)
head=p1->next;
//删除 head 头结点,再次产生头结点
else
p2->next=p1->next;
printf("已删除:%d\n",num);
n=n-1;}
else
二、实验内容
我设计的是“学生通讯录管理系统”,主要是针对全校学生通讯信息的管理,适用对象 可以是学校,也可以是一个院,一个班,方便学校对学生的管理和学生之间的互相联系交 流。学生的信息主要包括学生的姓名、学号、电话号码、qq 号码、住宿地址(例如 01557, 代表在 01 号宿舍楼,557 宿舍)。在编写过程中主要运用 C 语言的基本知识有:结构体的构 建和使用,指针和链表的构建,链表的建立,插入,删除等,文件的建立,保存,关闭等和 一些系统清屏函数的使用。
三、需求分析
这是一个是由 C 语言编写的一个学生通讯录管理软件,本程序在 Microsoft Visual C++ 6.0 下运行,其主要功能是实现对学生通讯信息的录入,添加,删除,保存等。这是个大众 化的软件,操作简单,占用资源少,方便了学生之间的交流和学校对学生通讯信息的管理。
四、实验的概要及部分截图
//删除学生信息函数
DEL(struct stu *head)
{struct stu *p1,*p2;
int num;
system("cls");
printf("输入要删除学生的学号:");
scanf("%d",&num);
p1=head;
while(num!=p1->num&&p1->next!=NULL)
2、实验中的心得体会
心得体会:通过这次课程设计,我对 C 语言有了更深刻的了解, 增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也 又模糊逐渐变的清晰了。在程序的运行与调试过程中出现了很多错 误,通过反复地复习课本上的相关知识,不停地修改与调试,我终 于完成了这段程序,而且有个很大的收获,c 语言程序必须要精炼, 许多人代码写得很长,但是执行起来却很浪费时间和内存空间,尤 其在大型程序,软件的编写和测试中,所以我们要尽量做到简单, 精炼,多试试是否能用一种更简单和实用的程序来代替。在调试过 程中,我认识到了 C 语言的灵活性与严谨性,同一个功能可以由不 同的语句来实现,但编写程序时要特别注意细节方面的问题,因为 一个小小的疏忽就能导致整个程序不能运行。当然我也认识到了自 己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在 以后的学习中我要集中精力、端正态度,争取把知识学得更扎实、 更全面。
printf("\t\t\t 作者:ltt
学号:04112012\n");
printf("输入要查询的学生的学号:"); scanf("%d",&num);} fflush(stdin); printf("按任意键返回主菜单..."); getchar();}
//通讯录管理系统菜单
int menu(k)
{int i;
system("cls");
printf("\t\t\t 西邮学生通讯录管理系统 \n");
}
// 显示学生信息 void xianshi(struct stu *head) {struct stu *p;
system("cls"); printf("学号\t 名字\t 电话\tqq\t 地址\t\n"); printf("-----------------------------------------\n"); p=head; while(p!=NULL) {printf(" %d\t%s\t%d\t%d\t%d\t\n",p->num,p->name,p->tel,p->qq,p->adr); p=p->next;} fflush(stdin); printf("按任意键返回主菜单...");getchar();}
1.方案设计
学生通讯录管理系统 密码登录
输
删
添
查
显
保
入
除
加
询
示
存
信
信
信
信
信
信
息
息
息
息
息
息
2.程序中数据主要是学生通讯信息,具体属于类型如下: struct stu
{ int num; char name[10]; int tel; int qq; int adr;
3、模块功能说明 第一密码模块:调用字符比较函数 strcmp(),进行管理者登录操作(密码事先设定为 04112012,可以在代码中直接修改)。 第二录入模块:利用建立的动态链表直接输入,对学生通讯信息进行录入。 第三删除模块:调用 Del (),对某一学生通讯信息进行删除操作 第四添加模块:调用 Add(),对新来学生通讯信息进行添加录入。 第五显示模块:调用 xianshi(),将录入的学生通讯信息显示在屏幕上 第六查询模块:调用 chaxun(),对学生通讯信息进行查询。 第六保存模块:调用 save(),保存输入的学生通讯信息。
参考文献:《C语言程序设计》(第二版) 王曙燕
科学出版社
:《C语言程序设计》高涛,陆丽娜 编 西安交通大学出版社
七、源程序清单
#include <stdio.h> #include <malloc.h> #include <stdlib.h> #define N sizeof(struct stu) #include <string.h> int n,k;
p2->next=NULL;
//将表尾节点 next 域置空
free(p1);
//释放无效节点
printf("输入的学生数为:%d 个!\n",n);
printf("按任意键返回主菜单...");
getchar();
return(head);}
//保存文件函数
save(struct stu *p1) {FILE *fp; char dizhi[20]; system("cls");
head=p2=(struct stu *)malloc(N); //head,p2 指向头结点
system("cls");
printf("请输入资料,输 0 退出!\n");
while(1)
{if(n==1)
head=p1;
else
p2->next=p1;
//将新结点链接到表尾
p2=p1;
//p2 指向新的表尾
// 查询学生信息 chaxun(struct stu *head) {int num; struct stu *p1; system("cls"); printf("输入要查询的学生的学号:"); scanf("%d",&num); while(num!=0)
{p1=head; while(num!=p1->num&&p1->next!=NULL) p1=p1->next; if(num==p1->num) {printf("学号\t 名字\t 电话\tqq\t 地址\t\n"); printf("-----------------------------------------\n"); printf(" %d\t%s\t%d\t%d\t%d\t\n",p1->num,p1->name,p1->tel,p1->qq,p1->adr);} else printf("%d 学生不存在!\n",num);
q = head; p=(struct stu *)malloc(N); printf("请输入添加学生的信息!"); printf("---------------------\n"); printf("请输入学生学号:\n"); scanf("%d",&p->num); printf("请输入学生姓名:\n"); scanf("%s",p->name); printf("请输入学生电话:\n"); scanf("%d",&p->tel);
所指向的文件位置
{fprintf(fp,"%d\t%s\t%d\t%d\t%d\t\n",p1->num,p1->name,p1->tel,p1->qq,p1->adr);
p1=p1->next;} fclose(fp);
//保存下一个学生信息
printf("文件已经保存!\n"); fflush(stdin); printf("按任意键返回主菜单..."); getchar(); return (0);}
struct stu
//定义结构体数组
{ int num;
//定义学生学号类型
char name[10]; //学生名字类型为字符型
int tel;