《C语言程序的设计》大作业

合集下载

c语言大作业课程设计

c语言大作业课程设计

c语言大作业课程设计一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,能够运用C语言进行程序设计,提高学生的编程能力和逻辑思维能力。

具体分解为以下三个目标:1.知识目标:学生能够理解并掌握C语言的基本语法、数据结构和常用算法,了解C语言的编程环境和开发工具。

2.技能目标:学生能够熟练使用C语言进行程序设计,具备一定的编程能力和问题解决能力。

3.情感态度价值观目标:学生通过完成C语言程序设计,增强对计算机科学的兴趣和热情,培养良好的编程习惯和团队协作精神。

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

具体安排如下:1.C语言的基本语法:包括变量、数据类型、运算符、控制结构、函数等,共4课时。

2.数据结构:包括数组、链表、栈、队列、树等,共6课时。

3.算法:包括排序算法、查找算法、递归算法等,共4课时。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

具体安排如下:1.讲授法:用于讲解C语言的基本语法、数据结构和算法,共12课时。

2.讨论法:用于引导学生探讨编程问题,提高学生的思考和解决问题的能力,共4课时。

3.案例分析法:通过分析实际案例,使学生更好地理解和掌握C语言编程,共4课时。

4.实验法:让学生动手编写C语言程序,培养学生的编程能力和实践能力,共8课时。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《C语言程序设计》,用于引导学生学习C语言的基本语法、数据结构和算法。

2.参考书:《C Primer Plus》、《C和指针》,为学生提供更多的学习资料和参考。

3.多媒体资料:包括教学PPT、视频教程等,用于辅助教学,提高学生的学习效果。

4.实验设备:计算机、编程软件(如Visual Studio、Code::Blocks等),用于实验教学,培养学生的编程能力和实践能力。

程序设计大作业(C)

程序设计大作业(C)

学院电子信息学院点,考虑到算法的时间复杂度,采用折半查找算法,最后将程序的运行结果写入对应的文件中。

目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (4)2.1程序结构 (4)2.2主要功能 (4)2.3函数实现 (4)2.4开发日志 (4)3 程序调试及运行 (5)3.1程序运行结果 (5)3.2程序使用说明 (6)3.3程序开发总结 (6)1 摘要1.1 设计题目算法型大作业:编写查找算法的演示程序1.2 设计内容编写程序实现某班期末考试成绩及有关学生信息的查找并将查询结果写入某文件中。

其中输入可来自某文件(比如***.xls)。

注意:编写的程序必须实现以下查找功能:1.输入某同学的学号或姓名(无重名),若存在,则输出该同学的成绩;否则输出“不存在”。

2.统计不及格人数并输出不及格学生的学号和姓名。

3.统计各分数段的人数并将结果输出。

4.插入某位新同学的成绩并查询该同学的序号数,序号数的排列规则是女生在前,男生在后;按姓名汉语拼音的英文顺序(a—z)排列。

5.计算平均分并查询高于平均分和低于平均分的人数,最后输出。

6.删除某同学的信息后,查询成绩排名前5的学生学号和姓名并输出。

7.修改某同学的成绩后,查询该同学的成绩排名并输出。

(以上查询结果不仅要在屏幕上输出,而且要写入文件中保存。

)1.3 开发工具Visual C++ 6.01.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构2.2 主要功能/*一;借书问题:本问题是一个排列问题,使用穷举的方法求出小明对三人不同的借书方案的总数二;绘制杨辉三角:从杨辉三角形的特点出发而绘制出杨辉三角。

*/2.3 函数实现/*一:借书方案:从5个中取3个进行排列的方法的总数。

首先对五本书从1至5进行编号,然后使用穷举的方法假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。

c语言设计大作业

c语言设计大作业

学院航空学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (4)2.3函数实现 (4)2.4开发日志 (5)3 程序调试及运行 (6)3.1程序运行结果 (6)3.2程序使用说明 (10)3.3程序开发总结 (10)4 附件(源程序) (11)1 摘要1.1 设计题目编写七种排序算法的演示程序/快速排序;插入排序;选择排序;冒泡排序;堆排序;归并排序;基数排序。

1.2 设计内容先建立具有输入、输出和循环选择子程序功能的主函数,并在主函数中声明每个子函数,再为每一种排序算法建立一个或几个子函数。

这个程序就基本完成了。

子函数中直接定义了数组原型,通过七种算法,利用循环语句和自定义函数调用把数组a[10]按升序重新排列。

1.3 开发工具/*Visual C++ 6.0和Win32。

*/1.4 应用平台Windows XP/7 32位2 详细设计2.1 程序结构先建立具有输入、输出和循环选择子程序功能的主函数,并在主函数中声明每个子函数,接着再用一个switch分支选择对各个子函数进行引用。

再为每一种排序算法建立一个或几个子函数。

参数基本都是传递排序数组的个数和数组的头指针,没有返回值。

2.2 主要功能/*这七道程序的作用是把数组中的数从小到大排序。

他们分别使用了不同的算法,对数组a进行排列。

这七个程序能实现对一些常见的排序算法的演示,使我们对这些排序算法的原理和算法的实现过程更加熟悉,对C语言的语法结构和数据结构更加清晰。

*/2.3 函数实现1. 快速排序:就是你从数组中任取一个元素p (可随机取,现在以取第一个为例),以P作为主元,对数组进行划分,前一部分小于P,后一部分大于p,划分处理存储p ,然后分别对划分后的前一部分和后一部分使用递归调用。

最后将数组划分为小数组,通过局部的有序合并,解决问题。

C语言大作业

C语言大作业

学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (10)2.3函数实现 (10)2.4开发日志 (17)3 程序调试及运行 (18)3.1程序运行结果 (18)3.2程序使用说明 (19)3.3程序开发总结 (20)4 附件(源程序) (20)1 摘要1.1 设计题目A题算法型:折半查找算法演示程序B题空间桁架结构节点位移求解1.2 设计内容A题:本程序是一个演示折半查找算法的演示程序。

当用户输入查找数据表列和要查找的数据时,程序会演示折半法查找该数的详细过程,并且支持多次查找、错误提示等功能。

B题:空间桁架结构节点位移求解1.3 开发工具Code Blocks 12.11(内置MinGW)1.4 应用平台Windows 7 64位2 详细设计2.1 程序结构A题:程序功能模块:本程序主要包含六大模块:程序说明模块、输入模块、排序模块、折半法查找模块、选择模块和程序退出模块。

工程文件结构:本程序的工程含有6个文件,其中main.cpp、print_stars.cpp、judge.cpp、sort.cpp、putout.cpp5个cpp 文件和include.h1个头文件(参见下图),两者共同存在于工程“折半法查找演示程序”中。

其中main.cpp 文件包含了程序的主体部分,程序说明模块、输入、排序、折半查找、选择、程序退出模块按线性排列。

其中输入、排序模块执行一次,这般查找、选择模块可多次执行,直到程序退出模块执行。

六大模块说明:(1) 程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。

此部分模块主函数源代码如下:int a[N];/*存储要查找的数表,用户输入*/int i,n,num,count;/*count为折半次数计数器,n为数表数据个数,num存储所查数据*/int top,bottom,mid;char c;/*存储选择函数中的输入的字符y或n*/int flag=1;/*折半法循环标志变量*/int loc=-1;/*存储所查找数据位置*/double k=0;p_s(76);puts("\n");/*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n");puts("\n");/*程序欢迎语*/p_s(13);printf("制作者:Haidong Chen***");/*作者信息*/p_s(4);printf("**Email:1562353594@");/*电子邮件*/p_s(11);puts("\n");p_s(76);puts("\n");/*再次引用p_s函数,程序说明部分结束*/附:print_star.cpp文件源代码#include<stdio.h>void p_s(int k){int i;for(i=1;i<=k;i++)/*连续输出ka个'*'*/printf("*");}(2) 输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。

c程序设计课程设计作业

c程序设计课程设计作业

c程序设计课程设计作业一、教学目标本课程的教学目标是使学生掌握C程序设计的基本概念、语法和编程技巧,培养学生具备基本的程序设计能力和问题解决能力。

具体包括以下几个方面:1.知识目标:学生需要掌握C程序设计的基本语法、数据类型、运算符、控制结构、函数、数组、指针等基本概念,了解结构体、共用体、位字段等数据结构,以及文件操作、调试技巧等编程实践知识。

2.技能目标:学生需要能够运用C语言编写简单的程序,解决实际问题,具备基本的程序调试和优化能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生独立思考、创新意识和团队合作能力。

二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言基本语法和数据类型:变量、常量、数据类型、运算符、表达式等。

2.控制结构:顺序结构、选择结构、循环结构等。

3.函数:函数的定义和声明、参数传递、返回值、局部变量和全局变量等。

4.数组和指针:一维数组、多维数组、字符串、指针的概念和应用等。

5.数据结构:结构体、共用体、位字段、链表、栈和队列等。

6.文件操作:文件的打开、关闭、读写、定位等操作。

7.编程实践:调试技巧、代码优化、算法分析等。

三、教学方法为了达到教学目标,本课程将采用以下几种教学方法:1.讲授法:通过讲解和演示,使学生掌握C语言的基本概念和语法。

2.案例分析法:通过分析实际案例,引导学生运用C语言解决实际问题。

3.实验法:安排上机实验,让学生动手编写程序,培养编程能力和实践能力。

4.讨论法:学生进行小组讨论,促进学生之间的交流与合作,提高学生的创新意识和团队合作能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《C程序设计语言》(K&R)、《C Primer Plus》等。

2.参考书:《C专家编程》、《C陷阱与缺陷》等。

3.多媒体资料:教学PPT、视频教程、在线课程等。

4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)、网络资源等。

C与C程序设计语言大作业项目开发

C与C程序设计语言大作业项目开发

《C与C++程序设计语言》大作业项目开发一、作业要求A 选择“二、作业内容”中的任意一题作为大作业项目开发任务。

注意:1.提倡采用团队(1~3人)合作精神完成大作业的项目开发(目标是为了更好地完成如下第2~3点),但在大作业报告中必须详细指出各自负责完成的项目部分。

如:计划与需求分析、软件设计(概要设计与详细设计)、编码与测试、文档内容的编制(大作业的项目开发报告)等。

(若发现抄袭者被抄袭者均得零分)。

2.不要求选做题多,要求的是高质量完成大作业项目开发。

例如大作业开发项目的功能得到扩充、更具有实用性,以及多种算法解的优劣分析等问题。

3.提倡创新思维、扩充题目的功能或目标,撰写大作业报告。

例如:在大作业第1题中,添加计时测试功能。

添加类似“九九表”的运算,其结果值在0~81的乘法运算。

添加本次测试n套题功能。

添加本次测试加、减和乘法(或混合运算)可选择性功能。

等等类似的功能扩充问题。

4.允许提交更有意义、更有兴趣的自选题,但提交报告必须符合大作业模板包括的要求。

B 所有提交的大作业(如下1.和2.的压缩文件为:学号_姓名_项目简称.rar)包括:1.源程序清单及.h等文件和文件夹(“38060413_姓名_项目简称”大作业项目工程文件夹)。

2.大作业项目开发报告(38060413_姓名_项目简称.docx)中包含以下内容:a) 计划与需求分析(针对大作业项目展开)b) 算法及程序说明:算法及程序功能分析、设计目标与设计方法、算法原理性说明、使用流程图或N-S图和UML图(必须包含)等描述算法。

(可附加必要的注释)。

c) 测试报告:算法及程序完成后,测试算法及程序的测试数据及程序代码、输入集与输出集、算法及程序是否正确的结论;注意,若算法及程序不正确,则应包含错误症状、原因分析以及改正步骤。

d) 部分重要源程序清单及.h代码。

e) 用户帮助手册:供使用算法及程序的用户阅读,指导用户如何使用你的算法及程序。

c++程序设计大作业

c++程序设计大作业C++程序设计大作业是一项重要的任务,通常要求学生设计和实现一个较为复杂的程序。

下面我将从多个角度来回答关于C++程序设计大作业的问题。

首先,大作业的主题和要求可能因学校和课程而异。

有些教授可能会给出具体的题目,而其他教授可能鼓励学生自由选择一个项目。

无论是哪种情况,你都需要理解并满足作业的要求。

在开始设计大作业之前,你需要明确程序的目标和功能。

这可能涉及到分析问题、确定输入输出、设计算法和数据结构等。

确保你充分理解问题,并考虑如何用C++语言实现解决方案。

接下来,你需要考虑程序的整体结构和模块划分。

良好的程序设计应该具有模块化、可维护和可扩展的特点。

你可以将程序划分为多个函数或类,每个函数或类负责完成特定的任务。

同时,要注意模块之间的接口设计,确保它们能够有效地协同工作。

在编写代码之前,你可以先进行一些设计和规划。

可以画出程序的流程图或者类图,帮助你更好地理解程序的结构和逻辑。

此外,你还可以编写伪代码,以便更清晰地表达算法和思路。

在实际编写代码时,要遵循良好的编码规范和风格。

这包括使用有意义的变量和函数命名、适当的缩进、注释等。

良好的代码风格可以使你的程序更易读、易懂,并且方便他人阅读和维护。

在完成代码编写后,你需要进行测试和调试。

编写一些测试用例来验证程序的正确性,并逐步排除可能存在的bug。

可以使用调试工具来帮助你定位和修复错误。

最后,完成大作业后,你可以进行一些额外的优化和改进。

这可能包括提高程序的性能、优化算法、改进用户界面等。

但要注意,在进行优化之前,确保程序已经正确运行。

总结起来,C++程序设计大作业需要你全面考虑问题,从多个角度进行设计和实现。

你需要理解问题、设计算法和数据结构、划分模块、编写代码、进行测试和调试,并最终完成一个高质量的程序。

希望这些回答能对你有所帮助。

C语言程序设计课程设计大作业-学生成绩管理系统

C语言程序设计课程设计大作业-学生成绩管理系统计算机科学学院计算机科学与应用系C程序设计报告成绩管理系统设计学生姓名:* *学号:1004681082班级:计科102指导老师:* *报告日期:2011--02--161.题目与要求1)问题提出本人计划编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。

2)本系统涉及的知识点单链表、结构体、函数、循环、指针、选择3)功能要求(1)建立学生信息,每个学生的信息包括:学号、姓名、成绩。

(2)求出每个学生的总分和平均分。

(3)查找:根据学号、姓名、成绩、总分、平均分中任一项查询该生的基本信息。

(4)排序:根据学号或总分将学生的信息按照一定的顺序进行排序。

(5)根据需要修改学生的基本信息。

(6)根据实际情况删除某生的信息。

(7)根据实际情况插入某生的信息。

(8)输出。

2.功能设计1)算法设计(1)利用switch语句设计如图所示的主菜单。

请输入选项编号1——查找2——排序3——学生信息的修改4——链表的删除5——链表的插入6——链表的输出7——退出图1 学生信息管理系统主菜单(2)选择1后,调用查找函数search,进入查找函数后利用switch语句实现如图所示的查找子菜单。

该菜单中每个选项调用一个函数(除选项10外)。

查找菜单请输入选项编号1——按学号查找2——按姓名查找3——按C语言分数查找4——按高数分数查找5——按英语分数查找6——按总分查找7——按平均分查找8——总分前三名9——不及格者10——班级成绩情况11——退出图2 查找子菜单(3)选项2后,调用排序函数arrange,进入查找函数后利用switch语句实现如图所示的查找子菜单。

该菜单中每个每个选项调用一个函数(除3外)。

排序菜单输入选项编号1——按学号排序2——按总分排序3——退出图3 排序子菜单(4)选择3后,调用修改函数correct,修改某个学生的信息。

(5)选择4后,调用删除函数del,根据需要删除某个学生的信息。

VC程序设计课程考核大作业

1、设计要求(1)建立一个多文档的应用项目(项目名称为学生姓名拼音首字母缩写),并将视图类设置为表单类视图。

(2)在该表单中采用编辑框和旋转按钮输入点的横、纵坐标值。

(3)对框架窗口进行切分。

(4)使得左边窗格输入点的坐标值后,右边窗格将在该点处显示一个小方块。

若在右边窗格中任意单击鼠标,则相应的小方块移动到当前鼠标位置处,同时左边编辑框的内容也会随之发生改变。

2、设计步骤及部分代码2.1创建表单应用程序,设计表单(1)用MFC AppWizard创建一个多文档应用程序:Qwl,在向导的第六步中选择视图的基类为CformView。

(2)打开表单模板资源,参看下表,调整表单模板大小,并依次添加如下表所示的控件。

表2.1(3)打开MFC ClassWizard的Member Variables标签,在Class name中选择CQwlView,选中所需控件ID号,双击鼠标,依次为下列控件添加成员变量。

表2.22.2添加CQwlDoc和CQwlView类代码(1)在CQwlDoc类中添加public : CPoint m_ptRect;用来记录小方块的位置。

在CQwlDoc类的构造函数中设置初值:m CQwlDoc::CQwlDoc(){m _ptRect.x= m_ptRect.y=0;}(2)为CQwlView添加自定义数据成员:public : BOOL m_bEditOK;在CQwlView构造函数中设置初值:m_bSpinOK=FALSE;(3) 打开MFC ClassWizard的Message Maps标签为IDC_EDIT1和IDC_Edit2添加EN_CHANGE的消息映射,使它们的映射函数名都设为OnChangeEdit,并添加下列代码:void CQwlView::OnChangeEdit(){if (!m_bEditOK)return;//使CEx_RectView类视图初始显示时不执行该函数下面代码。

C语言程序设计课程大型作业答辩

• {4,0} /*hot spot*/
设置鼠标的移动范围
SetMouseArea(int x0,int y0,int x1,int y1) { union REGS regs;
regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1; int86(0x33,&regs;&regs); regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1; int86(0x33,&regs,&regs); }
鼠标简介
鼠标系统实际上由两个主要元素组成: 鼠标机制和称作鼠标驱动程序的内存驻 留程序。鼠标驱动程序提供与鼠标通信 所需的全部低级支持。此外,它自动维 持鼠标光标位置和发现是否按下了某个 键。一旦装入驱动程序,鼠标就可以被 随后执行的任意程序使用。
鼠标简介续
可以通过PC中断33H访问鼠标和鼠标驱 动程序的各种功能。所选择的特定函数 依赖于中断时AX寄存器的值。三个其它 寄存器(BX、CX和DX)用于把各种参数 传送给鼠标例程。同样,鼠标函数使用 这四个寄存器把鼠标的位置和按钮的状 态返回给调用函数。
取得字节某一位的值
int getbit(unsigned char byte,int bit) { if(bit<0||bit>7)
return 0; return (byte>>bit)&0x1; } 函 数 getbit 用 于 得 出 一 个 字 节 中 每 个 位 (bit)是0还是1。
显示24点阵的汉字
• 提交开发文档,说明程序的主要模块及功能、 主要数据结构及意义、程序采用的核心算法及 实现方式、小组成员的分工及完成情况
C语言高级实验班小组登记表格 小组名称
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南昌大学软件学院C语言程序设计工程实训大作业班级:09软件技术(2)班学号:8001509107姓名:吴承增指导老师:危建国2010年12月10日系统说明书1.问题描述:该程序包内容包括以下的模块,均用子函数完成:(1)主菜单(2)输入若干条记录并保存文件(指学生的信息)(3)学生信息录入、修改、删除、查询、存储。

(4)学生信息的浏览及排序(冒泡排序算法)。

(5)学生成绩的录入、修改。

(6)统计及格和优秀人数(7)退出系统2.程序设计和程序流程图:解决方案:主函数流程图:各部分功能的流程图:录入学生成绩流程图:统计功能流程图如图3所示:图3 统计模块流程图冒泡排序流程图:排序学生信息流程图:删除学生成绩信息流程图:3.系统的基本功能(主要数据和函数功能描述):char xh[15]; //以字符串数组形式存储学生学号char name[25]// 以字符串数组形式存储学生姓名char sex[5]; //性别float sxcj; //数学成绩float yycj; //英语成绩float Cyycj; //C语言成绩float ave; //平均成绩float sum; //总成绩#define N 4 //宏定义学生#define MAX 60 //学生最大个数int nCOUNT=0; //记录当前学生个数struct student //定义结构体学生int ScoreNew() //录入学生成绩int average() //求平均数int xsxscj() //显示输入学生信息、将学生打印到屏幕上int xsxsxx() //显示学生信息int xhcjpx() //按学生学号排序学生信息int sxcjpx()按数学成绩排序学生信息int yycjpx()按英语成绩排序学生信息int Cyypx() //按C语言成绩排序学生信息int zcjpx()按总成绩排序学生信息int pxxsxx()//排序学生信息int axhcx() //按学号查询int axmcx() //按姓名查询int SearchStud() //查询学生成绩信息int zjxsxx() //增加学生信息int xgxsxx() //修改学生信息int scxsxx() //删除学生信息int gxxscj() //更新学生信息int tjxscj() //统计学生成绩int save() //保存到文件((fp=fopen("stu_list.txt","wb"))==NULL) //以只读方式打开文件stu_list.txt (fwrite(&str[i],sizeof(struct student),1,fp)!=1) //创建文件并以二进制形式打开int xswj() //显示文件信息int main() //主函数mainmemu4.拟采用开发平台:Visual C++,Borland C++等。

实验分析与结论:成绩录入函数按次序录入系统中现存所有学生的所有科目上,每录入一个学生的成绩,首先显示其姓名和学号,然后依次输入英语、高数和C语言成绩。

各科成绩初始化为0.修改学生信息函数调用函数对需要修改信息的学生进行查找,找到后返回该学生所对应的下标值n,将用户录入的新值存入数组中.删除学生信息函数调用SeachStud()函数对需要删除信息的学生进行查找,找到后返回该学生所对应的下标值n,用数组中第n个后面的元素依次向前覆盖,学生总数减1,即nCount-1。

需要强调的是,数组是静态存储分配方式,在声明时,系统已经给数组分配了其标注的全部内在空间,而且直到本段代码运行结束都不会改变。

所以,不可能将数组中不用的元素所占用的空间释放掉。

本函数从后向前覆盖,删除学生信息,由于每个数组的读写的循环次数都不是以其长度为准的。

而是以nCount值的大小来进行的,因此nCount—可以保证不会读到最后一个无效数据。

收获与体会:学生成绩档案管理系统具备了数据的输入和成绩分类分析的功能。

它能进行单独的一次数据处理。

学习过循环结构以后,结合所学的知识点,增加系统重复处理数据的能力,既检验对知识的实际应用能力,又把系统的功能进一步充实。

刚开始很难下手,请教同学和老师后慢慢入手。

渐渐地写点程序。

本次对学生成绩档案管理系统编写程序让我更加熟悉宏定义,函数调用,数组,排序等运用以及switch语句,if语句,while语句。

这次编程让我对C语言的综合编程能力的掌握,培养学生的逻辑思维能力,最终达到学生能完全独立编制、调试程序的能力。

程序代码:/*purpose: 结构体输出author: 凌风叶子Wuchengzengcreated: 2010/11/11 11:11:11*/#include<stdio.h>#include<stdlib.h>#include<time.h>#include<conio.h>#include<string.h>#include <fstream.h>//#include<windows.h>#define N 4 //宏定义学生#define MAX 60 //学生最大个数int nCOUNT=0; //记录当前学生个数int p;//int save();//int duquwj();//int xiugaiwj();//char cStudNo[60][13]={"8001509060","8001509061"}; //char cStudName[80][13]={"承增","叶子"};struct student{char xh[15]; //学号char name[25]; //姓名char sex[5]; //性别float sxcj; //数学成绩float yycj; //英语成绩float Cyycj; //C语言成绩float ave; //平均成绩float sum; //总成绩}str[MAX];//struct student[MAX];int ScoreNew() //录入学生成绩{int average(); //求平均数int i=0;char ch;system("cls");do{printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("\t\t================================================\n");printf(" \t\t-------------- 录入学生信息---------------\n");printf("\t\t================================================\n");printf(" \t\t请录入第%d学生信息\n",i+1);printf("\n \t\t输入学生学号: ");scanf("%s",str[i].xh);fflush(stdin);printf("\n \t\t输入学生姓名: "); fflush(stdin);scanf("%s",str[i].name);printf("\n \t\t输入学生性别: "); fflush(stdin);scanf("%s",str[i].sex);printf("\n \t\t输入学生数学成绩: "); fflush(stdin);scanf("%f",&str[i].sxcj);printf("\n \t\t输入学生英语成绩: "); fflush(stdin);scanf("%f",&str[i].yycj);printf("\n \t\t输入学生C语言成绩: "); fflush(stdin);scanf("%f",&str[i].Cyycj);i++;nCOUNT=i;printf("\n \t\t是否继续输入?(Y/N)"); fflush(stdin);ch=getch();system("cls");}while(ch!='n'&&ch!='N');average();printf("\n");system("cls");return 0;}int average() //求平均数{int i;for(i=0;i<nCOUNT;i++){str[i].sum=str[i].sxcj+str[i].yycj+str[i].Cyycj;str[i].ave=str[i].sum/3;}return 0;}//将学生打印到屏幕上int xsxscj() //显示输入学生信息{int i;average();system("cls");printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("\t\t================================================\n");printf(" \t\t------------ 显示学生成绩信息-----------\n");printf("\t\t================================================\n");printf(" ----------------------------------------------------------------------------\n");printf(" 学号姓名性别数学英语C语言总成绩平均成绩\n");printf(" ----------------------------------------------------------------------------\n");for(i=0;i<nCOUNT;i++){printf(" %s",str[i].xh);printf("\t%s",str[i].name);printf("\t%s",str[i].sex);printf("\t%.1f",str[i].sxcj);printf("\t%.1f",str[i].yycj);printf("\t%.1f",str[i].Cyycj);printf("\t%.1f",str[i].sum);printf("\t%.1f\n",str[i].ave);}fflush(stdin);system("pause");system("cls");return 0;}int xsxsxx() //显示学生信息{int xswj();int q;system("cls");printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("\t\t================================================\n");printf(" \t\t-------------- 显示学生信息---------------\n");printf("\t\t================================================\n");printf(" \t\t-------------- 显示输入学生信息---------------1\n");printf(" \t\t-------------- 显示文件学生信息---------------2\n");printf(" \t\t-------------- 按0 返回! --------------00\n");printf(" \t\t请选择功能键: ");scanf("%d",&q);switch(q){case 0:printf("\n exit\n");q=0;break;case 1: xsxscj();break;case 2: xswj();break;default :printf(" \t\t输入错误!\n");system("pause");break;}system("cls");return 0;}int xhcjpx() //按学生学号排序学生信息{struct student t;int i,j;average();for(j=0;j<nCOUNT;j++)for(i=0;i<nCOUNT-j;i++){if(str[i].sxcj<str[i+1].sxcj){t=str[i];str[i]=str[i+1];str[i+1]=t;}}printf(" Input ENTER again !\n");system("pause");xsxscj();return 0;}int sxcjpx() //按数学成绩排序学生信息{struct student t;int i,j;average();for(j=0;j<nCOUNT;j++)for(i=0;i<nCOUNT-j;i++){if(str[i].sxcj<str[i+1].sxcj){t=str[i];str[i]=str[i+1];str[i+1]=t;}}printf(" Input ENTER again !\n");system("pause");xsxscj();return 0;}int yycjpx() //按英语成绩排序学生信息{int i,j;average();for(j=0;j<nCOUNT;j++)for(i=0;i<nCOUNT-j;i++){if(str[i].yycj<str[i+1].yycj){t=str[i];str[i]=str[i+1];str[i+1]=t;}}printf(" Input ENTER again !\n");system("pause");xsxscj();return 0;}int Cyypx() //按C语言成绩排序学生信息{int i,j;average();for(j=0;j<nCOUNT;j++)for(i=0;i<nCOUNT-j;i++){if(str[i].Cyycj<str[i+1].Cyycj){t=str[i];str[i]=str[i+1];str[i+1]=t;}}printf(" Input ENTER again !\n");system("pause");xsxscj();return 0;}int zcjpx() //按总成绩排序学生信息{int i,j;average();for(j=0;j<nCOUNT;j++)for(i=0;i<nCOUNT-j;i++){if(str[i].sum<str[i+1].sum){t=str[i];str[i]=str[i+1];str[i+1]=t;}}printf(" Input ENTER again !\n");system("pause");xsxscj();return 0;}int pxxsxx() //排序学生信息{int q;system("cls");while(q){printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("\t\t================================================\n");printf(" \t\t----------------排序学生信息--------------\n");printf("\t\t================================================\n");printf(" \t\t--------------- 按学生学号排序-----------1\n");printf(" \t\t--------------- 按数学成绩排序-----------2\n");printf(" \t\t--------------- 按英语成绩排序-----------3\n");printf(" \t\t--------------- 按C语言成绩排序-----------4\n");printf(" \t\t----------------按总成绩排序--------------5\n");printf(" \t\t------------------- 按0 返回! ---------------00\n");printf("\t\t================================================\n");printf(" \t\t请选择功能键:");scanf("%d",&q);switch(q){case 00:printf("\n exit\n");q=0;break;case 1: xhcjpx();break;case 2: sxcjpx();break;case 3: yycjpx();break;case 4: Cyypx() ;break;case 5: zcjpx() ;break;default :printf(" \t\t输入错误!\n");system("pause");break;}system("cls");}return 0;}int axhcx() //按学号查询{int i;char xuehao[12];average();printf(" \t\t请输入学生学号:");fflush(stdin);scanf("%s",xuehao);for(i=0;i<=nCOUNT;i++){if(!strcmp(str[i].xh,xuehao)){printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("----------------------------------------------------------------------------\n");printf(" 学号姓名性别数学英语C语言总成绩平均成绩\n");printf("----------------------------------------------------------------------------\n");printf(" %s",str[i].xh);printf(" %s", str[i].name);printf(" %s", str[i].sex);printf(" %.1f",str[i].sxcj);printf(" %.1f",str[i].yycj);printf(" %.1f",str[i].Cyycj);printf(" %.1f",str[i].sum);printf(" %.1f\n",str[i].ave);system("pause");return i;}}printf("\n \t\t此学生不存在或输入错误!\n");fflush(stdin);system("pause");return 0;}int axmcx() //按姓名查询{int i;char stre[20];average();printf(" \t\t请输入学生姓名: ");fflush(stdin);gets(stre);for(i=0;i<nCOUNT;i++){if(!strcmp(str[i].name,stre)){printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("-----------------------------------------------------------------------------\n");printf(" 学号姓名性别数学英语C语言总成绩平均成绩\n");printf("-----------------------------------------------------------------------------\n");printf(" %s",str[i].xh);printf(" %s",str[i].name);printf(" %s",str[i].sex);printf(" %.1f",str[i].sxcj);printf(" %.1f",str[i].yycj);printf(" %.1f",str[i].Cyycj);printf(" %.1f",str[i].sum);printf(" %.1f\n",str[i].ave);system("pause");return i;}}printf("\n \t\t此学生不存在或输入错误!\n");fflush(stdin);system("pause");return 0;}int SearchStud() //查询学生成绩信息{int q;system("cls");while(q){printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("\t\t================================================\n");printf(" \t\t-------------- 查询学生信息---------------\n");printf("\t\t================================================\n");printf(" \t\t---------------- 按学号查询----------------1\n");printf(" \t\t---------------- 按姓名查询----------------2\n");printf(" \t\t------------------ 按0 返回! ----------------00\n");printf("\t\t================================================\n");printf(" \t\t请选择功能键: ");scanf("%d",&q);switch(q){case 00:printf("\n exit\n");q=0;break;case 1: axhcx();break;case 2: axmcx();break;default :printf(" \t\t输入错误!\n");system("pause");break;}system("cls");}return 0;}int zjxsxx() //增加学生信息{char ch;int i;i=nCOUNT;do{system("cls");printf(" \t\t \n");printf(" \t\t请录入新增加学生信息\n");printf("\n \t\t请录入第%d学生信息\n",i+1);printf("\n \t\t输入学生学号: ");scanf("%s",str[i].xh);fflush(stdin);printf("\n \t\t输入学生姓名: ");fflush(stdin);gets(str[i].name);printf("\n \t\t输入学生性别: ");fflush(stdin);gets(str[i].sex);printf("\n \t\t输入学生数学成绩: ");fflush(stdin);scanf("%f",&str[i].sxcj);printf("\n \t\t输入学生英语成绩: ");fflush(stdin);scanf("%f",&str[i].yycj);printf("\n \t\t输入学生C语言成绩: ");fflush(stdin);scanf("%f",&str[i].Cyycj);printf("\n \t\t增加成功!\n");i++;nCOUNT=i;printf("\n \t\t是否继续增加?(Y/N)");fflush(stdin);ch=getch();system("cls");}while(ch!='n'&&ch!='N');printf("\n");return 0;}int xgxsxx() //修改学生信息{int i;char xuehao[12];printf(" \t\t请输入要修改的学生学号:");fflush(stdin);scanf("%s",xuehao);for(i=0;i<nCOUNT;i++){if(!strcmp(str[i].xh,xuehao)){printf("\n \t\t请输入要修改学生信息:\n");printf("\n \t\t输入学生学号: ");scanf("%s",str[i].xh);fflush(stdin);printf("\n \t\t输入学生姓名: ");gets(str[i].name);fflush(stdin);printf("\n \t\t输入学生性别: ");fflush(stdin);gets(str[i].sex);printf("\n \t\t输入学生数学成绩: ");fflush(stdin);scanf("%f",&str[i].sxcj);printf("\n \t\t输入学生英语成绩: ");fflush(stdin);scanf("%f",&str[i].yycj);printf("\n \t\t输入学生C语言成绩: ");fflush(stdin);scanf("%f",&str[i].Cyycj);printf("\n \t\t修改成功!\n");system("pause");return i;}}printf("\n \t\t要修改学生的信息不存在!\n");fflush(stdin);system("pause");system("cls");return 0;}int scxsxx() //删除学生信息{int i;char xuehao[14];char ch;printf(" \t\t请输入要删除学生的学号: ");fflush(stdin);scanf(" %s",xuehao);printf(" \t\t是否删除?(Y/N)");ch=getch();if(ch!='N'||'n'){for(i=0;i<nCOUNT;i++){if(!strcmp(str[i].xh,xuehao)){if(i==nCOUNT)nCOUNT-=1;else{str[i]=str[nCOUNT-1];nCOUNT-=1;}printf("\n \t\t删除成功!\n");system("pause");return i;}}printf("\n \t\t要删除的学生信息不存在!\n");fflush(stdin);system("pause");}system("cls");return 0;}int gxxscj() //更新学生信息{int q;system("cls");while(q){printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("\t\t================================================\n");printf(" \t\t-------------- 更新学生信息--------------\n");printf("\t\t================================================\n");printf(" \t\t-------------- 增加学生信息--------------1\n");printf(" \t\t-------------- 修改学生信息--------------2\n");printf(" \t\t-------------- 删除学生信息--------------3\n");printf(" \t\t-------------- 排序学生信息--------------4\n");printf(" \t\t----------------- 按0 返回! ----------------00\n");printf(" \t\t请选择功能键: ");scanf("%d",&q);switch(q){case 0:printf("\n exit\n");q=0;break;case 1: zjxsxx();break;case 2: xgxsxx();break;case 3: scxsxx();break;case 4: pxxsxx();break;default :printf(" \t\t输入错误!\n");system("pause");break;}system("cls");}return 0;}float shuxue() //数学平均成绩{int i;float ave,sum=0;for(i=0;i<nCOUNT;i++)sum=sum+str[i].sxcj;ave=sum/nCOUNT;return ave;}float yingyu() //英语平均成绩{int i;float ave,sum=0;for(i=0;i<nCOUNT;i++)sum=sum+str[i].yycj;ave=sum/nCOUNT;return ave;}float Cyuyan() //C语言平均成绩{int i;float ave,sum=0;for(i=0;i<nCOUNT;i++)sum=sum+str[i].Cyycj;ave=sum/nCOUNT;return ave;}int tjxscj() //统计学生成绩{int i,strt[3][5]={0};system("cls");for(i=0;i<nCOUNT;i++){if(str[i].sxcj>=90)strt[0][0]++;if(str[i].sxcj>=80&&str[i].sxcj<90)strt[0][1]++;if(str[i].sxcj>=70&&str[i].sxcj<80)strt[0][2]++;if(str[i].sxcj>=60&&str[i].sxcj<70)strt[0][3]++;if(str[i].sxcj<60)strt[0][4]++;if(str[i].yycj>=90)strt[1][0]++;if(str[i].yycj>=80&&str[i].yycj<90)strt[1][1]++;if(str[i].yycj>=70&&str[i].yycj<80)strt[1][2]++;if(str[i].yycj>=60&&str[i].yycj<70)strt[1][3]++;if(str[i].yycj<60)strt[1][4]++;if(str[i].Cyycj>=90)strt[2][0]++;if(str[i].Cyycj>=80&&str[i].Cyycj<90)strt[2][1]++;if(str[i].Cyycj>=70&&str[i].Cyycj<80)strt[2][2]++;if(str[i].Cyycj>=60&&str[i].Cyycj<70)strt[2][3]++;if(str[i].Cyycj<60)strt[2][4]++;}printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("\t\t================================================\n");printf(" \t\t-------------- 统计学生信息--------------\n");printf("\t\t================================================\n");printf(" \t\t \n");printf(" ----------------------------------------------------------------------------\n");printf(" 课程优秀良好中等及格不及格平均成绩\n" );printf(" ----------------------------------------------------------------------------\n");printf(" 数学\t %d\t %d\t %d\t %d\t %d\t%.1f\n",strt[0][0],strt[0][1],strt[0][2],str t[0][3],strt[0][4],shuxue());printf(" 英语\t %d\t %d\t %d\t %d\t %d\t%.1f\n",strt[1][0],strt[1][1],strt[1][2],str t[1][3],strt[1][4],yingyu());printf(" C语言\t %d\t %d\t %d\t %d\t %d\t%.1f\n",strt[2][0],strt[2][1],strt[2][2],str t[2][3],strt[2][4],Cyuyan());printf(" ----------------------------------------------------------------------------\n");system("pause");system("cls");return 0;}//二级菜单(储存管理)/*int savers() //保存学生人数{FILE *fp;if((fp=fopen("StuNum.txt","wb"))==NULL) {printf(" \t\t文件创建失败!\n");return 0;}if(fprintf(fp,"%d",nCOUNT+p)!=1)printf(" \t\t文件写入错误!\n");fclose(fp); //关闭文件return 0;}int duqurs() //读取学生人数{FILE *fp;if((fp=fopen("StuNum.txt","rb"))==NULL){p=0;return 0;}fscanf(fp,"%d",&p);fclose(fp); //关闭文件return 0;}int duquwj() //读取文件{int i=0;FILE *fp; // 定义文件指针if((fp=fopen("stu_list.txt","rb"))==NULL)return 0;for(i=0;i<p;i++)fread(&str[i],sizeof(struct student),1,fp);duqurs();fclose(fp); //关闭文件return 0;}int xiugairs() //修改文件中的学生人数{FILE *fp; // 定义文件指针if((fp=fopen("stu_list.txt","wb"))==NULL){printf(" \t\t文件创建失败!\n");return 0;}if(fprintf(fp,"%d",p)!=1)printf(" \t\t文件写入错误!\n");fclose(fp); //关闭文件return 0;}int xiugaiwj() //修改文件信息{FILE *fp; // 定义文件指针int i;if((fp=fopen("stu_list.txt","wb"))==NULL){printf(" \t\t文件创建失败!\n");return 0;}for(i=0;i<p;i++)if(fwrite(&str[i],sizeof(struct student),1,fp)!=1) printf(" \t\t文件写入错误!\n");xiugairs();fclose(fp); //关闭文件return 0;}int save() //保存文件{FILE *fp; // 定义文件指针//char ch;int i;//printf(" \t\t是否保存到文件?(Y/N))");//ch=getch();//if(ch!='n'&&ch!='N')//{if((fp=fopen("stu_list.txt","wb"))==NULL) //以只读方式打开文件stu_list.txt{printf(" \t\t文件创建失败!\n");return 0;}for(i=0;i<nCOUNT;i++) //总的记录量就是我们学生人数if(fwrite(&str[i],sizeof(struct student),1,fp)!=1) //创建文件并以二进制形式打开printf(" \t\t文件写入错误!\n");//system("pause");//exit(00);savers();fclose(fp); //关闭文件// }//else exit(00);//system("pause");return 0;}*/int xswj() //显示文件信息{int i=0;FILE *fp;if((fp=fopen("stu_list.txt","rb"))==NULL) //以只读方式打开文件stu_list.txt{printf("磁盘文件还未存在,请先创建!");system("pause");return 0;}system("cls");printf(" \t\t 设计者:吴承增班级:软件技术092班\n");printf("\t\t================================================\n");。

相关文档
最新文档