C语言程序大作业.doc
c语言大作业综合

c语言大作业综合第一章C语言简介及算法一.选择题1.一个C程序可以包含的函数。
A.一个B.多个C.若干D.任意2.下面不可以使用来编译和连接一个C 程序。
A.TurboCB.VC++C.C语言编译器D.BC3.C语言的程序一行写不下时,可以。
A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行4.C控制语句有种。
A.6B.9C.32D.345.复合语句是用一对界定的语句块。
A.{}B.[]C.()D.”6.一个C程序的执行总是从该程序的函数开始,在函数最后结束。
A.第一个、最后一个B.main、mainC.主函数、最后一个D.第一个、第一个7.C语言提供的合法的数据类型关键字A.FloatB.ignedC.integerD.Char8.在以下各组标识符中,合法的标识符是(1)A.B01B.table_1C.0_tD.k%(2)A.Fat_B.voidC.pblD.(3)A.某y_B.longdoubleC.某pD.CHAR(4)A.jB.IntC._某yD.w_y239.C语言的标识符里不能有A.大小写字母B.数字C..D.下划线二.填空题1.C程序是由构成的,一个C程序中至少包含因此,是C程序的基本单位。
2.C程序注释是由和所界定的文字信息组成的。
3.函数体一般包括和4.算法是解决问题的和的描述。
5.C程序的注释部分可以出现在程序的位置,它对程序的编译和运行作用,但是可以增加程序的第二章C语言数据类型、基本运算及简单程序设计一.选择题1.不合法的字符常量是A.‘\\t’B.“A”C.‘a’D.’\\某32’2.逻辑运算符两侧运算对象的数据类型。
A.只能是0或1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据3.下列表达式中,不满足“当某的值为偶数时值为真,为奇数时值为假”的要求。
A.某%2==0B.!某%2!=0C.(某/2某2-某)==0D.!(某%2)4.下面选项中,不是合法整型常量的是A.160B.-0某cdgC.-01D.-0某48a5.能正确表示“当某的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。
c程序设计大作业(范例)

课程设计说明书《C 程序设计大作业》 ——学生成绩管理系统班 级: 电信2009级集成班 学 生: 陈颖宏 学 号: ************ 序 号: 提交日期: 2010 年 3 月 27 日成绩评定:分 任课教师签名: 年月 日前言本课程设计题目是“学生成绩管理系统设计”,其内容是设计一个使用二进制文件方式存储数据,并且以菜单方式工作的管理系统。
设计目的是设计一个能够方便、直观地管理学生相关信息的系统。
该系统可以实现以下功能:○1能按学期、按班级完成对学生成绩的录入、修改;○2能按班级统计显示的成绩,计算学生的总分及平均分;○3能查询学生的成绩,不及格科目及学生名单;○4能按班级输出学生的成绩单。
正文1.需求分析:本程序主要用于输入、查询、统计、导入以及导出学生的成绩。
主要的输入方式是利用键盘输入,且输入的字符最好是英文及数字,输入中文时有时会出现错误。
程序的有效窗口大小一般为半个屏幕,以至于有些功能的版面出现显示方面的错误。
经测试,程序基本可以正常工作:当在主菜单输入“1”时,可以正常初始化,输入余下的菜单选项时也能按要求跳转到指定画面;各子菜单选项也都能正常运行;但是输入班级、姓名等字符时,有时会显示错误的字符。
2概要设计○1抽象数据类型的定义:学生结构体定义为struct stu,变量为student;学期数组定义为char term[7]; 班别数组定义为char banbie[20]; 学号数组定义为char no[15]; 姓名数组定义为char name[20]; 科目数组定义为int score[MAXSUB]; 总成绩变量定义为int sum; 平均成绩变量定义为float average。
○2抽象函数类型的定义:菜单选择程序“menu_select()”为int型; 初始化函数“initialize(student * [])”为void型;数据输入函数“input(student * [])”为void型;数据编辑函数“editmenu(student * [])”为void型; 数据查询查询函数“searchmenu(student * [])”为void型; 数据统计函数“total(student * [])”为void型; 数据导出函数“save(student * [])”为void型;数据导入函数“load(student * [])”为void型; 数据导出函数“output(student * [])”为void型;添加学生记录函数“add_record(student * [])”为void型;删除学生记录“delete_record(student * [])”为void型;修改学生记录函数“student * edit_record(student * [])”为void型;按学号查询函数“student * no_search(student * [])”为void型; 按姓名查询函数“student * name_search(student * [])”为void型。
C语言课程设计大作业

郑州大学课程报告课程名称: C语言程序设计专业班级:(15)班学生姓名:谢*学号:***任课教师:赵**学期: 2012-2013-2课程报告任务书成绩评定教师:一. 需求分析1,具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。
2,数据包括:人名、工作单位、电话号码和E-MAIL地址。
3,可对记录中的姓名和电话号码进行修改。
4,可增加和删除记录。
5,可显示所有的保存记录。
6,可按人名或电话号码进行查询。
分析建议采用结构体数组和文件系统实现。
结构体成员包括人名、工作单位、电话号码和E-MAIL地址。
根据题目的要求程序应该采用结构体数组和文件系统实现。
应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。
二、概要设计(1).程序的模块组成及各个函数的功能:程序的模块组成:主函数:main();输出数据函数:printf();读取数据函数:scanf();显示记录函数:Display();删除记录函数:shanchu();查找记录函数:chaxun();自定义清屏函数:system(“cls”);自定义输入函数:input();字符输入函数:getchar();修改数据函数:xiugai();保存数据函数:baocun();排序数据函数:paixu();各函数的主要功能:输出数据函数:随时输出数据;读取数据函数:读取输入的数据信息;显示菜单函数:显示可供选择的主菜单;显示记录函数:显示通讯录所有输入的信息;删除记录函数:显示要删除的通讯录所有输入的信息;查找记录函数:显示要查询的通讯录所有输入的信息;自定义清屏函数:清除前面运行留下的信息;自定义输入函数:输入通讯录的成员;;字符输入函数:从终端输入一个字符,遇回车键返回;修改数据函数:修改通讯录的成员信息;保存数据函数:保存通讯录的成员信息;排序数据函数:排序通讯录的成员信息;(2)程序中的抽象数据类型的定义:用户的状态结构用户{姓名:电话;年龄;邮箱:地址;(3)总体流程图根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。
C语言程序设计大作业

学年学期:20xx - 20xx 学年 1 学期课程名称:C语言程序设计综合训练课程学分:2分考核形式:大作业任课教师:xx题目:学生成绩统计程序学院:xx学院__________________________________ 专业班级:xx_______________________________________ 学号:_______ 学生姓名:提交日期:目录目录 (2)引言 (3)1. 学生成绩管理系统 (4)1.1系统简介 (4)1.2相关代码及知识点介绍 (4)2. 添加学生成绩功能 (5)3. 查找学生成绩功能 (6)4. 排序学生成绩功能 (7)5. 展示学生成绩功能 (9)6. 删除学生成绩功能 (10)7. 附页代码 (11)引言C语言是一种比较常见的计算机语言,许多大型应用软件都是用C语言编写而成的。
其简洁紧凑,灵活方便,数据结构丰富。
在一定程度上,C语言比汇编语言更实用,具有结构化语句,实现了结构化编程,使程序编写变得更容易、更快捷,可以编写出各种类型的程序。
同时,C语言是一门实践性强的学科,在学习的过程中,利用所学知识,编写一些与生活、学习相关的应用程序来提高程序编写能力,增强学习兴趣。
本次使用C语言设计一个学生成绩管理系统,可以实现学生成绩的添加,查找,排序及展示。
在作业中使用的是函数的模块化设计,将四个程序使用四个函数来实现。
与此同时,增加用户界面的交互,可供用户选择想要的功能,实现增删查排等操作。
1. 学生成绩管理系统1.1系统简介该系统主要实现学生成绩的添加,查找,排序,展示和删除五个功能,添加学生成绩主要有6个输入值组成,其中包括学号,姓名,语文,数学,英语,政治等。
查找学生成绩主要通过学号查询。
对学生成绩进行排序,可以分别通过学号,语文,数学,英语,政治,平均分,总分等进行排序。
第四项功能是对学生成绩以表格的形式进行展示。
删除学生成绩是按照学号对表格中的数据进行删除。
大学C语言程序设计大作业题目

1数据处理系统一、软件开发目的该软件主要是使用C语言设计开发数据处理程序,实现对数据的排序、查找、插入、计算、输出等功能。
二、数据结构定义一个11*10的二维数组。
三、软件功能说明1.生成100个随机数:调用库函数rand()或random()产生100个随机数,并存储在二维数组中的前十行。
2.选择法排序:用选择法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
3.冒泡法排序:用冒泡法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
4.插入法排序:用插入法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
5.查找数据:输入待查找数据, 在二维数组中逐个查找,若找到输出数据所在位置的行列号,若无该数值则输出“无此数”。
6.转换二进制:将数组中数据转换为二进制并转存到另一数组中输出。
7.转换为素数之和:对于原数组中的数进行判断:若为偶数,则表示成两个素数的和,并输出。
8.插入数据:输入一个数,将该数插入原数组中,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。
9.删除数据输入一个数,若原数组中存在该数,则删除该数,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。
10.退出系统,结束任务。
四、软件验收标准1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
系统菜单功能项:1生成100个随机数2选择法排序3冒泡法排序4插入法排序5查找数据6转换二进制7转换为素数之和8插入数据9删除数据10退出系统注意:要求每执行一个具体的功能之后,程序将重新显示菜单。
2.系统要有一定的可靠性、稳定性,能够实现各功能模块。
2图书借阅管理系统一、软件开发目的该软件主要是使用C语言设计开发一个简单的图书借阅管理系统,实现对图书的借书,还书的管理和数据统计。
C语言大作业

学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (3)2.3函数实现 (4)2.4开发日志 (4)3 程序调试及运行 (5)3.1程序运行结果 (5)3.2程序使用说明 (6)3.3程序开发总结 (6)4 附件(源程序) (6)1 摘要1.1 设计题目(1)数学型大作业4.歌星大奖赛。
(2)数学型大作业6. 高次方数的尾数.1.2 设计内容(1)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分,选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
(2)求13的13次方的最后三位数。
1.3 开发工具开发工具为Microsoft Visual C++ 6.0.1.4 应用平台Windows XP32位。
2 详细设计2.1 程序结构(1)整体包括一个主函数和一个自定义函数,首先在主函数中输入10个分数,在输出函数中调用自定义函数,在调用过程中向自定义函数传递实参。
在自定义函数中实现了平均分的计算。
然后返回到主函数输出。
(2)程序整体上是用到一个主函数和一个自定义函数。
程序先运行主函数,然后在主函数中调用自定义函数Thr,Thr函数实现了求13的13次方的最后三位尾数。
调用Thr函数时将实参(13,13)传递到自定义函数的形参中,从而实现了对问题的求解。
2.2 主要功能(!)该程序主要用于求解去除最高分和最低分的平均分。
该功能的实现是在自定义的函数中实现的,即用选择法先对10个分数进行排序,排序中用的是选择法,即从第i+1至第n个数中选出比第i个数小的,然后和其交换,如都大于第i个数,则不进行交换。
从而实现从小到大的排序。
然后只计算第2至第n-1个数的平均值,计算结果即为最后得分。
(2)该程序的主要功能为实现高次方数的尾数的求解。
高次方数的结果一般较大,超过了计算机的内存,由乘法的运算性质知其最后的尾数只与每次最后三位的乘积有关,于是每次只运行最后三位的乘积即可,然后截取即可,这样就避免了内存不足这一缺陷,程序便可得到正确的结果。
经典C语言程序100例(word文档版)
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}=========================================================== 【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=*0.1;bonus2=bonus1+*0.75;bonus4=bonus2+*0.5;bonus6=bonus4+*0.3;bonus10=bonus6+*0.15;if(i<=)bonus=i*0.1;else if(i<=)bonus=bonus1+(i-)*0.075;else if(i<=)bonus=bonus2+(i-)*0.05;else if(i<=)bonus=bonus4+(i-)*0.03;else if(i<=)bonus=bonus6+(i-)*0.015;elsebonus=bonus10+(i-)*0.01;printf("bonus=%d",bonus);}=========================================================== 【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
程序设计大作业(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语言大作业
学院目录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大作业 Microsoft Word 文档
学生成绩管理系统每位学生至少包括学号,姓名,班级和四门课程的成绩和奖惩程序功能:1统计每个班每门课程平均成绩,最高分,最低分2对该专业所有学生进行排名,排名原则:按所有成绩之和进行排名同时要求参与排名的学生每门功课都及格若有不及格的不参与排名3评出专业优秀者与班级优秀者。
专业优秀者评选条件:专业总成绩排名前十,并且所有科目不低于85。
班级优秀者评选条件:所有课程不低于85或者有两门(包括两门)以上单科成绩是班级第一,并且在奖惩栏备注。
备注:编写程序时要有备注信息,即每个模块实现功能,以及引用变量的作用也可以在C++下完成,再此环境下注释采用中文所有结果均以文件形式保存。
#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#define N 75 /*专业学生总数*/struct student{int cl;char xh[20];char name[20];float mark[4]; /*四门成绩:数学成绩:mark[0] ,英语成绩:mark[1],计算机成绩:mark[2],物理成绩:mark[3]*/}stu[N];struct rank{char name[20];float mark;}gread[100];FILE *fp;float high[3][4]={0};void menu(){printf("********************************\n");printf("**提示:请输入的总人数不超过100人**\n");printf("1.输入学生成绩\n");printf("2.统计每个班每门课程平均成绩,最高分,最低分\n");printf("3.学生成绩的专业排名(不含有不及格科目的学生)\n");printf("4.专业评选结果\n");printf("5.班级评选结果\n");printf("0.退出程序\n");printf(" 请选择0-5:");printf("********************************\n");}void input() /*学生信息输入函数*/{int i;for(i=0;i<N;i++){ printf("请输入学生信息\n");printf("请输入班级(1,2,3),学号,姓名,数学成绩,英语成绩,计算机成绩,物理成绩:\n");scanf("%d%s%s%f%f%f%f",&stu[i].cl,stu[i].xh,stu[i].name,&stu[i].mark[0],&stu[i].mark[1],&st u[i].mark[2],&stu[i].mark[3]);}}void statistics() /*统计每个班每门课程平均成绩,最高分,最低分*/{ float sum[3][4]={0},low[3][4]={100,100,100,100,100,100,100,100,100,100,100,100};float ave[3][4];int i,j;int num[3]={0};for(i=0;i<N;i++){switch(stu[i].cl){ case 1: sum[0][0]+=stu[i].mark[0]; /*一班数学成绩总和*/sum[0][1]+=stu[i].mark[1];/*一班英语成绩总和*/sum[0][2]+=stu[i].mark[2];/*一班计算机成绩总和*/sum[0][3]+=stu[i].mark[3];/*一班物理成绩总和*/if(high[0][0]<stu[i].mark[0]) high[0][0]=stu[i].mark[0];if(high[0][1]<stu[i].mark[1]) high[0][1]=stu[i].mark[1];if(high[0][2]<stu[i].mark[2]) high[0][2]=stu[i].mark[2];if(high[0][3]<stu[i].mark[3]) high[0][3]=stu[i].mark[3];if(low[0][0]>stu[i].mark[0]) low[0][0]=stu[i].mark[0];if(low[0][1]>stu[i].mark[1]) low[0][1]=stu[i].mark[1];if(low[0][2]>stu[i].mark[2]) low[0][2]=stu[i].mark[2];if(low[0][3]>stu[i].mark[3]) low[0][3]=stu[i].mark[3];num[0]++;break;case 2: sum[1][0]+=stu[i].mark[0]; /*二班数学成绩总和*/sum[1][1]+=stu[i].mark[1];/*二班英语成绩总和*/sum[1][2]+=stu[i].mark[2]; /*二班计算机成绩总和*/sum[1][3]+=stu[i].mark[3];/*二班物理成绩总和*/if(high[1][0]<stu[i].mark[0]) high[1][0]=stu[i].mark[0];if(high[1][1]<stu[i].mark[1]) high[1][1]=stu[i].mark[1];if(high[1][2]<stu[i].mark[2]) high[1][2]=stu[i].mark[2];if(high[1][3]<stu[i].mark[3]) high[1][3]=stu[i].mark[3];if(low[1][0]>stu[i].mark[0]) low[1][0]=stu[i].mark[0];if(low[1][1]>stu[i].mark[1]) low[1][1]=stu[i].mark[1];if(low[1][2]>stu[i].mark[2]) low[1][2]=stu[i].mark[2];if(low[1][3]>stu[i].mark[3]) low[1][3]=stu[i].mark[3];num[1]++;break;case 3: sum[2][0]+=stu[i].mark[0];sum[2][1]+=stu[i].mark[1];sum[2][2]+=stu[i].mark[2];sum[2][3]+=stu[i].mark[3];if(high[2][0]<stu[i].mark[0]) high[2][0]=stu[i].mark[0];if(high[2][1]<stu[i].mark[1]) high[2][1]=stu[i].mark[1];if(high[2][2]<stu[i].mark[2]) high[2][2]=stu[i].mark[2];if(high[2][3]<stu[i].mark[3]) high[2][3]=stu[i].mark[3];if(low[2][0]>stu[i].mark[0]) low[2][0]=stu[i].mark[0];if(low[2][1]>stu[i].mark[1]) low[2][1]=stu[i].mark[1];if(low[2][2]>stu[i].mark[2]) low[2][2]=stu[i].mark[2];if(low[2][3]>stu[i].mark[3]) low[2][3]=stu[i].mark[3];num[2]++;break;}}for(i=0;i<3;i++)for(j=0;j<4;j++)ave[i][j]=sum[i][j]/num[i];for(i=0;i<3;i++){ printf("班级:%d \n",i+1);fprintf(fp,"班级:%d \n",i+1);for(j=0;j<4;j++){ ave[i][j]=sum[i][j]/num[i];printf("平均成绩:math\tenglish\tcomputer\tphysics\n");printf("平均成绩:%.2f\t%.2f\t%.2f\t%.2f\n",ave[i][0],ave[i][1],ave[i][2],ave[i][3]);printf("最高分:math\tenglish\tcomputer\tphysics\n");printf("最高分:%.2f\t%.2f\t%.2f\t%.2f\n",high[i][0],high[i][1],high[i][2],high[i][3]);printf("最低分:math\tenglish\tcomputer\tphysics\n");printf("最低分:%.2f\t%.2f\t%.2f\t%.2f\n",low[i][0],low[i][1],low[i][2],low[i][3]);fprintf(fp,"平均成绩:math\tenglish\tcomputer\tphysics\n");fprintf(fp,"平均成绩:%.2f\t%.2f\t%.2f\t%.2f\n",ave[i][0],ave[i][1],ave[i][2],ave[i][3]);fprintf(fp,"最高分:math\tenglish\tcomputer\tphysics\n");fprintf(fp,"最高分:%.2f\t%.2f\t%.2f\t%.2f\n",high[i][0],high[i][1],high[i][2],high[i][3]);fprintf(fp,"最低分:math\tenglish\tcomputer\tphysics\n");fprintf(fp,"最低分:%.2f\t%.2f\t%.2f\t%.2f\n",low[i][0],low[i][1],low[i][2],low[i][3]);}}}void ranking() /*专业学生成绩排名从高到低去(除不及格的)排名*/{int i,j;int t=0;float n;char ch[20];for(i=0;i<N;i++)for(j=0;j<4;j++){ if(stu[i].mark[j]<60) break;else{gread[t++].mark=stu[i].mark[0]+stu[i].mark[1]+stu[i].mark[2]+stu[i].mark[3];strcpy(gread[t].name,stu[i].name);}}for(i=0;i<t-1;i++)for(j=0;j<t-1-i;j++)if(gread[j].mark>gread[j+1].mark){n=gread[i+1].mark;strcpy(ch,gread[i+1].name);gread[i+1].mark=gread[i].mark;strcpy(gread[i+1].name,gread[i].name);gread[i].mark=n;strcpy(gread[i].name,ch);}for(t-1;t>=0;t--){ printf("Performance ranking results(high to low):\n");fprintf(fp,"Performance ranking results(high to low):\n");printf("%s\t%.2f\t%d\n",gread[i].name,gread[i].mark,i+1);fprintf(fp,"%s\t%.2f\t%d\n",gread[i].name,gread[i].mark,i+1);}}void apraised1() /*专业优秀选奖*/{struct reward1{char name[20];float mark[4];int flag;}stu1[10];int i,j,k;for(i=0;i<10;i++)stu1[i].flag=1;for(i=0;i<10;i++){ strcpy(stu1[i].name,gread[i].name);for(j=0;j<N;j++)if(strcmp(stu1[i].name,stu[j].name)==0)for(k=0;k<4;k++)stu1[i].mark[k]=stu[j].mark[k];}for(i=0;i<10;i++)for(j=0;j<4;j++)if(stu1[i].mark[j]<85) stu1[i].flag=0;for(i=0;i<10;i++)if(stu1[i].flag==1){printf("奖励%s\n",stu1[i].name);fprintf(fp,"奖励%s\n",stu1[i].name);}}void apraised2() /*班级优秀评选*/{ int i,m1=0,n1=0,m2=0,n2=0,m3=0,n3=0,l1=0,l2=0,l3=0,k;charreward1[10][20],reward2[10][20],reward3[10][20],reward4[10][20],reward5[10][20],reward6[10] [20];for(i=0;i<N;i++)switch(stu[i].cl){case1:if(stu[i].mark[0]>=85&&stu[i].mark[1]>=85&&stu[i].mark[2]>=85&&stu[i].mark[3]>=85) strcpy(reward1[m1++],stu[i].name);elsefor(k=0;k<4;k++){if(stu[i].mark[k]==high[0][k]) l1++;if(l1>=2) strcpy(reward2[n1++],stu[i].name);}case2:if(stu[i].mark[0]>=85&&stu[i].mark[1]>=85&&stu[i].mark[2]>=85&&stu[i].mark[3]>=85) strcpy(reward3[m2++],stu[i].name);elsefor(k=0;k<4;k++){if(stu[i].mark[k]==high[1][k]) l2++;if(l2>=2) strcpy(reward4[n2++],stu[i].name);}case3:if(stu[i].mark[0]>=85&&stu[i].mark[1]>=85&&stu[i].mark[2]>=85&&stu[i].mark[3]>=85) strcpy(reward5[m3++],stu[i].name);elsefor(k=0;k<4;k++){if(stu[i].mark[k]==high[2][k]) l3++;if(l3>=2) strcpy(reward6[n3++],stu[i].name);}}printf("一班\t");printf("每门成绩不低于85分:");for(i=0;i<m1;i++)printf("%s\n",reward1[i]);printf("至少有两门单科第一:");for(i=0;i<n1;i++)printf("%s\n",reward2[i]);fprintf(fp,"一班\t");fprintf(fp,"每门成绩不低于85分:");for(i=0;i<m1;i++)fprintf(fp,"%s\n",reward1[i]);fprintf(fp,"至少有两门单科第一:");for(i=0;i<n1;i++)fprintf(fp,"%s\n",reward2[i]);printf("二班\t");printf("每门成绩不低于85分:");for(i=0;i<m2;i++)printf("%s\n",reward3[i]);printf("至少有两门单科第一:");for(i=0;i<n2;i++)printf("%s\n",reward4[i]);fprintf(fp,"二班\t");fprintf(fp,"每门成绩不低于85分:");for(i=0;i<m2;i++)fprintf(fp,"%s\n",reward3[i]);fprintf(fp,"至少有两门单科第一:");for(i=0;i<n2;i++)fprintf(fp,"%s\n",reward4[i]);printf("三班\t");printf("每门成绩不低于85分:");for(i=0;i<m3;i++)printf("%s\n",reward5[i]);printf("至少有两门单科第一:");for(i=0;i<n3;i++)printf("%s\n",reward6[i]);fprintf(fp,"三班\t");fprintf(fp,"每门成绩不低于85分:");for(i=0;i<m3;i++)fprintf(fp,"%s\n",reward5[i]);fprintf(fp,"至少有两门单科第一:");for(i=0;i<n3;i++)fprintf(fp,"%s\n",reward6[i]);}void main(){ int choice;fp=fopen("学生信息","w");while(1){ menu();scanf("%d",&choice);switch(choice){ case 1: input(); break;case 2: statistics(); break;case 3: ranking(); break;case 4: apraised1(); break;case 5: apraised2(); break;case 0: exit(0); break;}}fclose(fp);}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连理工大学C程序设计(大作业)总结报告学生成绩录入处理系统
学生姓名:罗
专业班级:
学号:
联系电话:
Email :
完成日期:2015年 5 月29日
一、设计任务
我的程序设计是一个学生成绩录入及处理的程序,该程序包括多种功能,能够满足大多数的学生成绩管理处理。
主要能够实现的目的主要有:
第一.学生姓名学号既包括三门成绩等信息的录入,并保存到文件d://score.txt。
第二.对每个学生的成绩进行求平均分及按平均分排序的数字处理。
第三.对输入错误的学生信息加以修改重新排序保存。
第四.增加学生信息,重新排序,加以保存。
第五.按每个学生的平均分进行表格化和图形化处理。
第六.实现某位同学的信息查找,包括姓名,学号,每科成绩及平均分。
以上功能全都可以实现,但是注意录入信息的要求,下面会有注释。
二、程序设计与实现
1.结构框图
下图描述预期实现题目的设计方案或功能设计的组成结构。
绘制成框图,如图所示是我设计的成绩信息管理程序设计的结构图示:
2.功能模块设计及其流程图
(1) 数据描述与存储
该学生信息统计系统设计一个全局结构体变量,将学生的姓名,学号,各科成绩及平均分保存在结构体,然后供设计各种程序调用,以完成修改,增加,排序和数据显示的功能。
学生成绩数据以二进制存储在d://score.txt文件,可以利用程序随时进行增加和修改,同时它会自动排序。
的描述题目所使用的核心数据,如;结构体类型定义及结构体成员含义说明。
并说明所使用的数据存储方法,指定文件的路径和文件名,保存数据的格式和读数据的目的。
(2) 结构体定义及介绍
typedef struct rec /*定义一个结构体类型*/
{ char name[20]; /*第一个元素为学生姓名,20个字节*/
short number; /*第一个元素为学生学号,2个字节(输入注意不要超出)*/
short score[M]; /*(M为全局3)依次定义三门科目分数:数,英,机*/
float average; /*定义浮点型平均数,保留2位小数,有函数计算赋值*/ }score;
score stu[N]; /*(N为全局100)定义全局总数100个学生信息以录入*/
(3)对于该程序的一点说明
1.学号在0~32768之间,请录入前对学号做好数据处理。
2.该系统的成绩满分为一百分制,如有某科成绩不符合应提前处理。
3.录入退出后,同样的数据不需两次输入,可直接运行程序处理及查看。
4.保存退出后请勿删除文件,数据会丢失。
5.柱状图的分辨率在十位数。
(4) 主要函数功能基变量说明
(4) 主要函数及其流程图
此处描述所有自定义函数的函数名,函数功能,参数说明及算法描述。
画出主要函数规范流程图。
例如,将每个函数按如下方式的说明(strcom()流程图如图2所示)。
函数原型1
void correct() /*针对输错的学生信息进行重新输入*/
假如某位学生信息输入错误,用此功能函数就可以用正确信息将错误信息覆盖,从而获得正确信息。
没有参数传递,在函数中利用循环全部信息中查找出该学生,直接利用全局变量,将该学生新信息重输以达目的。
函数原型2
void add() /*增加信息*/
如有想要输入新的学生或漏输,用此功能可以将某些学生的信息录入,当然,增加后总数不得超过100。
没有参数的传递,直接在以前的数据后面增加,然后对所有学生排序,做到所有数据同等处理。
函数原型3
void loadscore() /*加载学生信息*/
这儿之所以提起这个函数,是因为我在刚开始理解利用过程中,有点赘余出错。
该函数是加载函数,如果你是输入后不关闭用时是可以不用这个函数的,因为在你关闭之前所有的信息依然保存在全局结构体内。
然而,当你关闭以后再利用时必须要用这个函数将你写在文件中的信息读入结构体,再从结构体打印到屏幕。
函数原型4 ……….
(5) 个性化设计
该函数不难,但方法思维较好,进行介绍和结构图示:
函数原型void histograma_all() /*以排序后的平均成绩按柱状图查看*/
利用*的连续输入模拟柱状图,求十位数,按每增加1输出两个**,连续输入则组成柱状图。
最后在柱状图后面打印学生平均成绩。
三、设计效果
下图是录入12个学生后显示的排名结果:
下图是柱状图显示排名结果:
下图是查找界面:
四、结束语
该系统能改顺利完成学生成绩录入,学生成绩排名,学生增修后重新排名,在以表格和柱状图显示,和某同学的信息查询,能够以较好的界面和提示完成录入及数据处理,显示等。
在录入,修改,增加,排名,保存,加载,浏览等一系列部分的小问题,但通过多次修改还是能找到错误所在,最终完善整个程序。
但该程序也存在卓多局限,例如分数制,输入负数无错误提醒,平均分相同排序相同等,但是,只要继续修改,相信我能突破这些局限。
12周课很快,程序这门课,应该以概念加实践平衡学习。
最深的感触就是每次找到错误后的顿悟和你作业的成就感。