C语言课程设计

合集下载

c语言毕业设计课程设计

c语言毕业设计课程设计

c语言毕业设计课程设计一、课程目标知识目标:1. 学生能够掌握C语言的基本语法和程序结构,理解指针、数组、函数等核心概念。

2. 学生能够运用C语言进行数据结构的设计与实现,如链表、树、图等。

3. 学生能够运用C语言编写具有一定复杂度的程序,解决实际问题。

技能目标:1. 学生能够独立设计并完成一个小型的C语言项目,包括需求分析、设计、编码、测试等过程。

2. 学生能够运用所学知识,分析并解决项目中遇到的问题,提高编程能力和问题解决能力。

3. 学生能够通过课程学习,掌握C语言项目开发的基本方法和技巧,为毕业设计做好准备。

情感态度价值观目标:1. 学生在学习过程中,培养良好的编程习惯,注重代码规范和注释,提高代码质量。

2. 学生能够主动探究问题,发挥团队协作精神,共同解决项目中的难题。

3. 学生通过课程学习,认识到编程在现实生活中的应用价值,激发对计算机科学的兴趣和热情。

课程性质:本课程为毕业设计前的专业实践课程,旨在帮助学生巩固C语言知识,提高编程能力,为毕业设计奠定基础。

学生特点:学生已具备一定的C语言基础,具有一定的编程能力和问题解决能力。

教学要求:教师需结合实际项目案例,引导学生主动学习,注重理论与实践相结合,培养学生的编程兴趣和动手能力。

在教学过程中,关注学生的个体差异,给予个性化指导,确保学生能够达到课程目标。

通过课程学习,使学生具备独立完成毕业设计的能力。

二、教学内容1. C语言基础语法复习:包括数据类型、运算符、控制语句、函数等基本概念,参考教材相关章节,巩固学生基础知识。

2. 数据结构实现:教授学生运用C语言实现常见的数据结构,如链表、栈、队列、二叉树等,结合教材相关内容,讲解数据结构在实际项目中的应用。

3. 指针与数组:深入讲解指针的概念及其运用,数组与指针的关系,提高学生运用指针解决问题的能力。

4. 文件操作:介绍C语言文件操作的基本方法,包括文件的打开、读写、关闭等,结合实际案例,让学生掌握文件操作技巧。

c语言书店管理系统课程设计

c语言书店管理系统课程设计

c语言书店管理系统课程设计一、课程目标知识目标:1. 掌握C语言基础语法,如变量定义、数据类型、运算符、控制结构等;2. 学会使用数组、字符串、结构体等C语言高级特性;3. 理解并掌握文件操作在C语言中的应用;4. 了解书店管理系统的需求分析、功能模块划分及实现。

技能目标:1. 能够运用C语言编写简单的书店管理系统程序;2. 学会分析问题,运用所学知识解决问题;3. 掌握编程规范,养成良好的编程习惯;4. 提高团队协作能力,通过小组合作完成课程设计。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情;2. 培养学生的创新意识,鼓励他们勇于尝试新方法解决问题;3. 增强学生的责任感,让他们明白编程在生活中的应用和价值;4. 培养学生面对困难时的坚持和毅力,学会克服挫折。

课程性质:本课程为实践性课程,旨在培养学生的编程能力、分析问题和解决问题的能力。

学生特点:学生已经掌握了C语言的基础知识,具备一定的编程能力,但实际应用经验较少。

教学要求:结合实际应用,引导学生运用所学知识完成书店管理系统的设计与实现,注重培养学生的实践能力和团队协作能力。

通过本课程的学习,使学生能够将所学知识运用到实际项目中,提高编程水平。

二、教学内容1. C语言基础回顾:变量定义、数据类型、运算符、控制结构(选择、循环);2. 数组、字符串、结构体等高级特性及应用;3. 文件操作:文件的打开、读取、写入和关闭;4. 书店管理系统需求分析:系统功能模块划分、数据结构设计;5. 书店管理系统功能实现:用户界面设计、功能模块编程实现;- 用户注册与登录模块;- 图书信息管理模块;- 销售管理模块;- 库存管理模块;- 查询统计模块;6. 编程规范与调试技巧:代码风格、调试方法、性能优化;7. 团队协作与项目管理:分工合作、进度控制、问题解决;8. 课程总结与成果展示:项目演示、经验分享、总结反馈。

教学内容安排与进度:1. C语言基础回顾(1课时);2. 数组、字符串、结构体等高级特性及应用(2课时);3. 文件操作(1课时);4. 书店管理系统需求分析(1课时);5. 书店管理系统功能实现(6课时);6. 编程规范与调试技巧(1课时);7. 团队协作与项目管理(2课时);8. 课程总结与成果展示(1课时)。

c语言程序设计课程

c语言程序设计课程

c语言程序设计课程
C语言程序设计课程是计算机科学与技术专业中非常重要的一门课程。

本文将从课程内容、学习方式、实践操作等多个方面进行介绍。

一、课程内容
C语言程序设计课程主要涉及C语言的基本语法、数据类型、运算符、流程控制语句、函数、数组、指针等内容。

在学习过程中,还需要掌握算法设计、数据结构等基础知识,并且进行课程设计和实践操作。

二、学习方式
C语言程序设计课程的学习方式一般包括理论授课和实践操作两部分。

理论授课主要是讲解C语言的基本语法和相关知识点,而实践操作则是通过编写C语言程序来实现对所学知识的应用和理解。

三、实践操作
实践操作是C语言程序设计课程中非常重要的一部分。

在实践操作过程中,一般需要完成一些小项目或者课程设计。

这些小项目或者课程设计有助于学生深入理解所学知识,并且提高了学生编程的能力和实践经验。

四、课程设计
C语言程序设计课程的课程设计是一个非常重要的环节。

在课程设计过程中,学生需要根据所学知识,自主设计并编写一个小型程序
或者项目。

通过课程设计,学生可以更好地掌握C语言的运用能力,并且提高自己的编程水平。

五、总结
C语言程序设计课程是计算机科学与技术专业中非常重要的一门课程。

通过本文的介绍,我们可以了解到C语言程序设计课程的内容、学习方式、实践操作等方面。

在学习C语言程序设计课程的过程中,需要注重理论学习和实践操作,并且要注重课程设计的实践经验。

通过不断的学习和实践,我们可以更好地掌握C语言的编程技巧,并且提高自己的编程水平。

c语言课程设计案例精选

c语言课程设计案例精选

c语言课程设计案例精选
案例一:学生成绩管理系统
设计一个学生成绩管理系统,能够实现以下功能:
1. 输入学生信息(学号、姓名、性别、年龄、班级);
2. 输入学生的各科成绩(语文、数学、英语、物理、化学、生物);
3. 计算学生的总分和平均分,并按照总分从高到低排序;
4. 查询学生信息和成绩;
5. 修改学生信息和成绩;
6. 删除学生信息和成绩。

该系统采用C语言编写,使用结构体存储学生信息和成绩,使用文件存储数据。

用户可以通过菜单选择需要的功能,系统会根据用户的选择进行相应的操作。

案例二:简单的计算器
设计一个简单的计算器,能够实现加、减、乘、除四种基本运算,以及求平方、开方、求倒数等高级运算。

该计算器采用C语言编写,使用函数实现各种运算,用户可以通过菜单选择需要的运算,输入相应的数字进行计算。

在输入数字时,程序需要进行错误处理,防止用户输入非法字符或除数为0的情况。

案例三:图书管理系统
设计一个图书管理系统,能够实现以下功能:
1. 输入图书信息(书名、作者、出版社、出版日期、价格、库存数量);
2. 查询图书信息;
3. 借阅图书(需要输入借阅者的信息);
4. 归还图书;
5. 修改图书信息;
6. 删除图书信息。

该系统采用C语言编写,使用结构体存储图书信息,使用文件存储数据。

用户可以通过菜单选择需要的功能,系统会根据用户的选择进行相应的操作。

在借阅图书和归还图书时,程序需要进行库存数量的判断,防止借阅数量超过库存数量的情况。

c语言课程设计是什么

c语言课程设计是什么

c语言课程设计是什么一、教学目标本课程旨在通过C语言的学习,让学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,培养学生编程思维和解决问题的能力。

同时,通过编程实践,使学生能够运用C语言编写简单的程序,提高学生的动手能力和创新能力。

在教学过程中,注重培养学生的自主学习能力、团队协作能力和沟通表达能力,使学生在学习C语言的同时,也能够提升自身的综合素质。

二、教学内容教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。

具体包括:1.C语言的基本语法和编程规范;2.数据类型、变量和常量的使用;3.运算符和表达式的应用;4.控制结构(条件语句、循环语句等)的编程;5.函数的定义和调用;6.数组、指针和字符串的基本操作;7.结构体、共用体和枚举类型的使用;8.文件操作和错误处理。

三、教学方法为了提高教学效果,将采用多种教学方法相结合的方式进行教学。

主要包括:1.讲授法:通过讲解C语言的基本概念和编程方法,使学生掌握C语言的基本知识;2.案例分析法:通过分析典型程序案例,使学生理解编程思路和方法;3.实验法:安排上机实验,让学生动手编写程序,巩固所学知识;4.小组讨论法:学生进行小组讨论,培养学生的团队协作能力和沟通能力。

四、教学资源为了支持教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C程序设计语言》(K&R);2.参考书:《C Primer Plus》、《C和指针》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络环境等;5.在线资源:编程、论坛、开源项目等。

通过以上教学资源的支持,为学生提供丰富的学习体验,提高学生的学习效果。

五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。

评估内容包括平时表现、作业、考试等。

具体评估方式如下:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和参与程度;2.作业:布置适量的编程作业,评估学生的编程能力和实践能力;3.考试:包括期中和期末考试,主要评估学生对C语言知识的掌握程度和编程能力;4.项目:小组项目,让学生结合所学知识解决实际问题,评估学生的综合应用能力。

C语言课程设计题目边框

C语言课程设计题目边框

C语言课程设计题目边框一、课程目标知识目标:1. 学生能理解C语言中二维数组的运用,掌握通过二维数组打印边框的基本方法。

2. 学生能够运用循环控制结构,实现不同形状和尺寸边框的打印。

3. 学生理解并掌握C语言中格式化输出,能够精确控制边框字符的布局。

技能目标:1. 学生能够编写出结构清晰、逻辑严密的C语言代码,完成边框的打印任务。

2. 学生通过本课程的学习,培养解决问题的能力,特别是在面对几何排列问题时,能够运用编程思维进行求解。

3. 学生能够通过调试程序,找出并修正代码中的错误,提高程序调试能力。

情感态度价值观目标:1. 学生通过课程实践,增强对计算机编程的兴趣,激发深入学习C语言的积极性。

2. 学生在学习过程中,培养合作精神,学会在团队中共享信息和资源,共同解决问题。

3. 学生能够在编程实践中体会编程之美,培养逻辑思维和审美观念。

课程性质分析:本课程为C语言程序设计实践课,通过设计边框打印题目,将理论知识与实际操作相结合,提高学生的实践能力。

学生特点分析:考虑到学生为高中生,具备一定的逻辑思维能力和问题解决能力,但对于C语言的掌握程度不同,课程设计需兼顾不同层次的学生需求。

教学要求分析:课程要求学生能够主动参与,动手实践,注重个体差异,教学中将提供适当的引导和帮助,确保每位学生都能在原有基础上得到提升。

通过具体的边框打印任务,将课程目标分解为可观察、可衡量的学习成果,以便于教学设计和评估。

二、教学内容1. 二维数组的概念及使用方法,参考教材第三章数组部分。

- 二维数组的声明与初始化。

- 二维数组的访问与遍历。

2. 循环控制结构,参考教材第二章循环控制部分。

- for循环的使用。

- while循环的使用。

- do-while循环的使用。

3. 格式化输出,参考教材第二章输出部分。

- printf函数的使用。

- 格式化输出控制字符。

4. 边框设计题目实践,结合教材实例进行拓展。

- 设计不同尺寸和形状的边框。

c语言界面课程设计

c语言界面课程设计

c语言界面课程设计一、教学目标本课程的教学目标是使学生掌握C语言界面编程的基础知识和技能,能够运用C语言进行简单的界面设计和程序开发。

具体目标如下:1.知识目标:•掌握C语言的基本语法和数据类型。

•理解函数的定义和调用。

•学习常用的界面库函数和图形库函数。

2.技能目标:•能够编写简单的C语言界面程序。

•能够使用界面库和图形库进行界面设计和程序开发。

•能够调试和修复程序中的错误。

3.情感态度价值观目标:•培养学生对计算机编程的兴趣和热情。

•培养学生解决问题的能力和创新思维。

•培养学生的团队合作意识和沟通能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法和数据类型、函数的定义和调用、界面库函数和图形库函数的使用。

具体内容如下:1.C语言的基本语法和数据类型:•变量和常量的定义和使用。

•数据类型的分类和特点。

•运算符的分类和用法。

2.函数的定义和调用:•函数的定义和声明。

•函数的参数传递和返回值。

•函数的调用和调用方式。

3.界面库函数和图形库函数的使用:•界面库函数的分类和功能。

•图形库函数的分类和功能。

•示例程序的分析和编写。

三、教学方法本课程的教学方法包括讲授法、讨论法、案例分析法和实验法。

具体方法如下:1.讲授法:通过教师的讲解和演示,向学生传授C语言界面编程的基本知识和技能。

2.讨论法:通过小组讨论和问题解答,促进学生之间的交流和合作,培养学生的解决问题的能力和创新思维。

3.案例分析法:通过分析真实的案例程序,使学生更好地理解和掌握C语言界面编程的方法和技巧。

4.实验法:通过编写和调试程序,使学生亲身体验和掌握C语言界面编程的实践技能。

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

具体资源如下:1.教材:选用合适的C语言界面编程教材,为学生提供系统的学习资料。

2.参考书:提供相关的参考书籍,为学生提供更多的学习资源。

3.多媒体资料:制作课件和教学视频,为学生提供直观的学习材料。

c语言程序课程设计棋盘

c语言程序课程设计棋盘

c语言程序课程设计棋盘一、课程目标知识目标:1. 让学生掌握C语言中的数组知识,并能运用数组创建和操作棋盘。

2. 理解和掌握循环结构在棋盘程序中的应用,如嵌套循环用于遍历棋盘。

3. 学习使用函数对棋盘程序进行模块化设计,理解模块间的关系和调用方式。

技能目标:4. 能够编写简单的C语言程序,实现基本的棋盘游戏逻辑,例如棋子的移动、位置的判断等。

5. 培养学生的逻辑思维能力,通过编程解决棋盘游戏中遇到的问题。

6. 提高学生的问题分析能力,使其能够通过算法设计处理棋盘游戏中的特定问题。

情感态度价值观目标:7. 培养学生对编程和算法设计的兴趣,激发学生在信息技术领域的探究欲望。

8. 强调团队协作的重要性,通过小组合作完成棋盘程序的设计,培养学生的沟通和团队协作能力。

9. 培养学生的创新意识,鼓励学生提出和实现独特的棋盘游戏规则和功能。

课程性质:本课程设计以实践性为主,结合理论知识的讲解,注重培养学生的实际操作能力和编程思维。

学生特点:考虑到学生为高中年级,具备一定的逻辑思维能力和问题解决能力,但编程经验可能有限。

教学要求:通过棋盘程序的设计,将复杂问题分解为若干个小问题,引导学生循序渐进地掌握C语言编程和应用,同时注重激发学生的学习兴趣和创新能力。

教学过程中应注重个体差异,提供个性化的指导和反馈,确保每位学生都能实现既定的学习目标。

二、教学内容本节教学内容围绕C语言程序设计,结合棋盘游戏项目,主要包括以下部分:1. C语言基础知识回顾:数组的使用、数据类型、变量声明与赋值。

- 教材章节:第3章 数组和第5章 数据类型与表达式。

2. 控制结构:循环结构的使用,重点讲解嵌套循环在棋盘遍历中的应用。

- 教材章节:第4章 控制结构。

3. 函数与模块化设计:介绍如何将棋盘程序拆分为函数模块,实现代码复用和模块化。

- 教材章节:第6章 函数。

4. 棋盘程序设计:a. 棋盘的初始化:创建二维数组表示棋盘,并进行初始化。

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

课程设计的内容1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。

此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息2)信息查询:要求:查询时可实现按姓名查询、按学号查询3)成绩统计:要求: A 输入任意的一个课程名(如数学)和一个分数段(如60--70 ),统计出在此分数段的学生情况。

4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档二、课程设计的要求与数据1、进一步掌握和利用C 语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S 图表示算法;6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告, 课程设计报告的内容应包括以下6 个部分:1)需求分析:包括设计题目、设计要求以及系统功能需求分析;2)总体设计:包括系统总体设计框架和系统功能模块图;3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4)调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);5)总结:课程设计完成了哪些功能,有没有什么扩展功能还有哪些地方需要改进课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;6)附录:主要源程序代码,含必要的注释。

3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。

目录1设计目的与要求.................................................... P4 2总体设计.......................................................... P4 3详细设计.......................................................... P5 功能模块设计 .................................................. P53.1.1 XX功能模块(可选) ..................................... P5丫丫功能模块(可选).................................. P6ZZ功能模块(可选) .................................. P7数据结构设计 ............................................ P84调试分析..................................................... P9结构体 .................................................. P9链表 .................................................... P115遇到的问题及解决方法分析......................................... P12 6总结.............................................................. P13 7源文件........................................................... P13链表........................................................ P13 结构体...................................................... P281、目的与要求一目的:编制一程序实现对学生成绩的管理,让自己既动手又动脑,独立实践,将课本上的理论知识和实际应用问题进行有机结合,项锻炼自己分析、解决实际问题的能力,提高自身目开发及程序调试能力。

二要求:1整个系统均用C 语言实现;2、利用指针、结构体、链表来实现学生成绩的数据结构设计;3、系统具有输入、显示、查询(查询时可实现按姓名查询、按学号查询)、删除、排序、插入,保存、读取基本功能;4、系统的各个功能模块都用函数的形式来实现;5、学生信息数据要以文件的形式保存,能实现学生信息数据的维护。

此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息;6、可以输入任意的一个课程名(如数学)和一个分数段(如60--70 ),统计出在此分数段的学生情况;7、能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果;8、可自动增加新功能模块;9、可以将学生信息从文件中读取出来。

2 总体设计1、主函数main()利用if-else,While 循环语句和switch() 实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

2、菜单选择函数void menu();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的13 大功能,根据每个功能前面的序号进行选择。

等执行完每一个函数功能后,按任‘0'键回到主界面也要通过这个函数提示来实现!3、自定义函数void printstart() 、void Wrong()、void Nofind() 、void printc() 、voidprin te(Node *p)用void Wrong()来提示输入错误,用void Nofind()提示没有找到学生资料,用void printc() 来输出中文,用void prin te(Node *p) 来输出中文。

3详细设计功能模块设计3.1.1排序数学成绩功能模块函数void Maths(Link I)该函数用于对数学成绩进行降序,II=(Li nk)malloc(sizeof(Node)) 用于做新的链表连接,如果原链表为空的话,返回;不为空的话,p=I->next ;建立接点用于保存信息,对指定链表地址进行排序。

流程图如图所示:3.1.2显示学生资料功能模块函数void Disp(Link l)该函数负责显示学生资料,这是一个不返回值函数。

算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。

然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。

重复执行此步聚直到p指针指向NULL为止。

流程图如图所示:函数void Del(Link I)该函数用于有选择地删除学生资料,如果原来的链表为空的话,会返回;不为空的话,选择用按哪种类型删除,如果按学号删除,就输入学号,后判断是否取得地址,取得就执行删除;按名字删除就输入名字,运行同学号一样。

流程图如图所示:原来链表是否为空提示没有P 指向下一结点p=p->n ext资料可以输出p指向的结点,即学生信息显示return P 指向下一结点p=p->n ext---------------- 1 ---3.1.3删除资料功能模块数据结构设计(可选)一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。

一个结构体变量的指针就是该变量所占据的内存段起始地址。

可以设一个指针变量,用来指向一结构体变量,此时指针变量的值是结构体的起始地址。

指针量变也可以用来指向一结构体数组中的元素。

struct student{char num[10];/* 学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/* 最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;6 总结经过一个多星期的C 语言课程设计,感觉自己收获不少!首先是:要达到这样的功能,使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本,使C 语言的知识强化了不少。

其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数和不返回值函数两者在主函数中的调用是不同的更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。

这个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。

相信这次的课程设计使我的C语言知识扎实了很多。

由于这是第一次进行设计,写文档,难免会写得不好!7 源程序7. 1 链表#include ""#include ""#include ""int shoudsave=0; /* */struct student{char num[10];/* 学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/* 最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf("********************************************************* ***********************");printf("\t1 登记学生资料\t\t\t\t\t2删除学生资料\n");printf("\t3 查询学生资料\t\t\t\t\t4修改学生资料\n");printf("\t5 显示学生资料\t\t\t\t\t6统计学生资料\n");printf("\t7 排序语文成绩\t\t\t\t\t8排序数学成绩\n");printf("\t9 排序英语成绩\t\t\t\t\t1选出分段分数\n");printf("\t11 保存学生资料\t\t\t\t\t12 帮助信息\t\t\n");printf("\t0 退出系统\t\t\t\t\t\t\t\n");*********\n"}void printstart(){printf(" ------------------------------\n");}void Wrong(){printf("\n=====> 提示: 输入错误 !\n"); }void Nofind(){printf("\n=====> 提示: 没有找到该学生 !\n");}void printc() /* 本函数用于输出中文 */{printf(" 学号 \t 姓名 \t 性别\n");}void printe(Node *p)/* 本函数用于输出英文 */{printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->,p->,p->,p->,p->,p->,p->,p->;Node* Locate(Link l,char findmess[],char nameornum[]) /* 合要求的接点,并返回该指针 */{Node *r;语文成绩 数学成绩 英语成绩 总分 平均分 该函数用于定位连表中符if(strcmp(nameornum,"num")==0) /* 按学号查询*/{r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0)return r;r=r->next;}}else if(strcmp(nameornum,"name")==0) /* 按姓名查询*/ {r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0)return r;r=r->next;}}return 0;void Add(Link l) /* 增加学生*/{Node *p,*r,*s;char num[10];r=l;s=l->next;while(r->next!=NULL)r=r->next; /* 将指针置于最末尾*/while(1){printf(" 请你输入学号( 以'0' 返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0)break;while(s){if(strcmp(s->,num)==0){printf("=====> 提示: 学号为'%s' 的学生已经存在, 若要修改请你选择'4 修改'!\n",num); printstart();printc();printe(s);printstart();return;s=s->next;}p=(Node *)malloc(sizeof(Node)); strcpy(p->,num);printf(" 请你输入姓名:"); scanf("%s",p->;getchar();printf(" 请你输入性别:"); scanf("%s",p->;getchar();printf(" 请你输入语文成绩:"); scanf("%d",&p->;getchar();printf(" 请你输入数学成绩:"); scanf("%d",&p->;getchar();printf(" 请你输入英语成绩:"); scanf("%d",&p->;getchar();p->=p->+p->+p->;p->=p-> / 3;/* 信息输入已经完成*/p->next=NULL;r->next=p;r=p;shoudsave=1;}}void Qur(Link l) /* 查询学生*/{int sel;char findmess[20];Node *p;if(!l->next){printf("\n=====> 提示: 没有资料可以查询!\n");return;}printf("\n=====>1 按学号查找\n=====>2 按姓名查找\n"); scanf("%d",&sel);if(sel==1)/* 学号*/{printf(" 请你输入要查找的学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printstart();printc();printe(p);printstart();}elseNofind();}else if(sel==2) /* 姓名*/{printf(" 请你输入要查找的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) {printf("\t\t\t\t 查找结果\n"); printstart();printc();printe(p);printstart();}elseNofind();}elseWrong();void Del(Link l) /* 删除*/{int sel;Node *p,*r;char findmess[20];if(!l->next){printf("\n=====> 提示: 没有资料可以删除!\n");return;}printf("\n=====>1 按学号删除\n=====>2 按姓名删除\n");scanf("%d",&sel);if(sel==1){printf(" 请你输入要删除的学号:"); scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);shoudsave=1;}elseNofind();}else if(sel==2){printf(" 请你输入要删除的姓名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n=====> 提示: 该学生已经成功删除!\n"); shoudsave=1;}elseNofind();}elseWrong();void Modify(Link l){Node *p;char findmess[20];if(!l->next){printf("\n=====> 提示: 没有资料可以修改!\n"); return;}printf(" 请你输入要修改的学生学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num");if(p){printf(" 请你输入新学号( 原来是%s):",p->;scanf("%s",p->;printf(" 请你输入新姓名(原来是%s):",p->;scanf("%s",p->;getchar();printf(" 请你输入新性别(原来是%s):",p->; scanf("%s",p->; printf(”请你输入新的语文成绩(原来是%4分)p->;scanf("%d",&p->;getchar();printf(" 请你输入新的数学成绩(原来是%4分):",p->;scanf("%d",&p->;getchar();printf(”请你输入新的英语成绩(原来是%4分)p->;scanf("%d",&p->;p->=p->+p->+p->;p->=p->3;printf("\n=====> 提示: 资料修改成功!\n"); shoudsave=1;}elseNofind();}void Disp(Link l){int count=0;Node *p;p=l->next;if(!p){printf("\n=====> 提示: 没有资料可以显示!\n"); return;}printf("\t\t\t\t 显示结果\n");printstart();printc();printf("\n");while(p)printe(p);p=p->next;}printstart();printf("\n");}void Tongji(Link l){Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分数最高的接点*/ Node *r=l->next;if(!r){printf("\n=====> 提示: 没有资料可以统计!\n");return ;}pm=pe=pc=pt=pa=r;while(r!=NULL){if(r->>=pc->pc=r;if(r->>=pm->pm=r;if(r->>=pe->pe=r;if(r->>=pt->pt=r; if(r->>=pa-> pa=r;r=r->next;}printf(" ------------------- 统计结---------------------- \n");printf(" 总分最高者:\t%s %d 分\n",pt->,pt->;printf(" 平均分最高者:\t%s %d 分\n",pa->,pa->;printf(" 英语最高者:\t%s %d 分\n",pe->,pe->;printf(" 数学最高者:\t%s %d 分\n",pm->,pm->;printf(" 语文最高者:\t%s %d 分\n",pc->,pc->;printstart();}void Chinese(Link l){Link ll;Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node)); /*用于做新的连表*/ ll->next=NULL;if(l->next==NULL)return ;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息*/ s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL && rr->next->>=p-> rr=rr->next;if(rr->next==NULL)rr->next=s;else{ s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n=====> 提示: 排序已经完成!\n");}{Link ll;Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表*/ ll->next=NULL;if(l->next==NULL){printf("\n=====> 提示: 没有资料可以排序!\n");return ;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息*/ s->data=p->data; s->next=NULL;rr=ll;while(rr->next!=NULL && rr->next->>=p->rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n=====> 提示: 排序已经完成!\n");}void English(Link l) /* 对英语排序*/{Link ll;Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表*/ ll->next=NULL;if(l->next==NULL){printf("\n=====> 提示: 没有资料可以排序!\n");return ;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息*/ s->data=p->data;s->next=NULL; rr=ll;while(rr->next!=NULL && rr->next->>=p-> rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n=====> 提示: 排序已经完成!\n"); }void select(Link l){int i;int j,k;Node *pc = l;文 2. 数学 3. 英语"); scanf("%d",&i); if(i==1)scanf("%d",&j);printf(" 请输入筛选分数的下限:"); scanf("%d",&k);printf(" ----------------------------------------------------------- \n"); printf(" 学号\t 姓名\t 性别分平均分\n");printstart();while(r!=NULL){if(k<=(r->&&(r-><j)printe(r);r=r->next;}}else if(i==2)printf(" 请输入筛选分数的上限:");scanf("%d",&j);printf(" 请输入筛选分数的下限:");scanf("%d",&k);筛选结语文成绩数学成绩英语成绩\n"); printf(" 学号\t ----------- 姓名\t 性别分平均分\n");printstart();while(r!=NULL){if(k<=(r->&&(r-><j) printe(r);r=r->next;}}else if(i==3){printf(" 请输入筛选分数的上限:");scanf("%d",&j);printf(" 请输入筛选分数的下限:");scanf("%d",&k);printf(" ------------------\n"); printf(" 学号\t ----------- 姓名\t 性别分平均分\n"); 语文成绩数学成绩英语成绩筛选结语文成绩数学成绩英语成绩printstart();while(r!=NULL){if(k<=(r->&&(r-><j) printe(r);r=r->next;}}elseWrong();}void Save(Link l){FILE* fp;Node *p;int flag=1,count=0;fp=fopen("c:\\student","wb");if(fp==NULL){printf("\n=====> 提示: 重新打开文件时发生错误!\n"); exit(1);p=l->next;while(p){ if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next;count++;}else{flag=0;break;}}if(flag){printf("\n=====> 提示:文件保存成功.(有%4条记录已经保存.)\n",count); shoudsave=0;}fclose(fp);}void main(){Link l;/* 连表*/FILE *fp; /* 文件指针*/ int sel;char ch;char jian;int count=0;Node *p,*r;printf("\t\t\t\t 学生成绩管理系统\n \t\t\t 06 自动化 2 班蔡晓庆49\t\t\t\t\n");l=(Node*)malloc(sizeof(Node));l->next=NULL;r=l;fp=fopen("C:\\student","wb");loop:menu();printf(" 请你选择操作:");scanf("%d",&sel);if(sel==0){if(shoudsave==1){ getchar();printf("\n=====> 提示:资料已经改动, 是否将改动保存到文件中(y/n)\n"); scanf("%c",&ch); if(ch=='y'||ch=='Y')Save(l);}return;}switch(sel){case 1:Add(l);goto loop;break; /*case 2:Del(l);goto loop;break;/*case 3:Qur(l);goto loop;break;/* case 4:Modify(l);goto loop;break;/* case 5:Disp(l);goto loop;break;/* case 6:Tongji(l);goto loop;break;/* case 7:Chinese(l);goto loop;break;/* case 8:Maths(l);goto loop;break;/* case 9:English(l);goto loop;break;/* case 10:select(l);goto loop;break;/* case 11:Save(l);goto loop;break;/* case 12:printf("\t\t\t========== default: Wrong();getchar();break;}7. 2 结构体#include<> #include<>#include<>struct student{char class_0[20];char num [20];char name[20];float math;float c_prog;float eng;float polity;float sport;float ave;}stu[1000];char j,h;/* 函数声明 */void luru();void chaxun();void charu();void tongji();void xiugai();void shanchu();void paixu();void tuichu(); FILE *fp; 录入学生成绩 printf("\t\t3. 统计输出成绩\n"); printf("\t\t4. 查询学生成绩 \n");增加学生 */删除学生 */查询学生 */ 修改学生 */ 显示学生 */ 统计学生 */ 语文排序 */ 数学排序 */ 英语排序 */ 选择分段分数 */ 保存学生 */ 帮助信息 ==========\n");goto loop;break;\n");printf("\t\t5.插入学生成绩 \n"); printf("\t\t6. 修改学生成绩 \n");printf("\t\t7.删除学生成绩 \n"); printf("\t\t8. 退出管理系统\n"); int n;printf(" 请选择功能 \n\n");scanf("%d",&n);system("cls");switch(n){case 1:printf("\t\t 录入学生成绩 \n\n");luru();goto loop;case 2:printf("\t\t 排序学生成绩 \n\n");paixu();goto loop;case 3:tongji();goto loop;case 4:printf("\t\t 查询学生成绩\n\n"); chaxun();goto loop;case 5:printf("\t\t 插入学生成绩\n\n");charu();goto loop;case 6:printf("\t\t 修改学生成绩\n\n");xiugai();goto loop;case 7:printf("\t\t 删除学生成绩\n\n"); shanchu();goto loop;case 8:printf("\t\t 程序退出。

相关文档
最新文档