C语言课程设计报告书2——张倩
- 格式:doc
- 大小:380.50 KB
- 文档页数:35
《c语言课程设计》设计报告《c语言课程设计》设计报告河南城建学院《C语言课程设计》报告书指导教师:张娜课程名称:C语言程序设计班级:0124071 姓名:王者无疆学号:0070082011 河南城建学院、土木与材料工程系2011年1月目录一.课程设计目的二.课程设计要求 1. 分析课程设计题目的要求 2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 4. 设计完成后提交课程设计报告三.课程设计的基本过程1.程序的功能设计2.程序的数据设计3.程序的函数设计4.函数编程及调试5.整体调试6.设计总结四. 课程设计报告的内容五. 课程设计考核方式六. 进度计划第一天选择课程设计题目,分析课题的要求,编写详细设计说明第二天编程及调试第三天调试,修正,运行软件第四天写课程设计报告,检查程序及软件第五天提交课程设计报告(打印稿及电子稿)七、心得体会八、附一题一、课程设计目的课程设计是学习掌握C语言知识的重要实践环节,是在课程实验基础上进行的综合性实践教学活动。
课程设计围绕课程的整体教学目标进行,课程设计的题目具有一定的综合性和应用性,只靠个别单元的知识一般不能实现课程设计的目标,需要对课程知识进行综合运用。
要完成好课程设计,就要对课程知识进行系统学习、复习、总结、应用,达到在实践中学习知识、掌握知识、应用知识和培养能力的目的。
①通过课程设计,进一步熟悉掌握以下知识:数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等。
②通过课程设计,达到系统理解、综合运用课程知识的学习目标。
③通过课程设计,学会用C语言程序解决实际问题的方法。
④通过课程设计,掌握程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试和调试方法。
二. 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用 4. 设计完成后提交课程设计报告三.课程设计的基本过程C语言课程设计一般包括6个步骤,即程序的功能设计、程序的数据设计、程序的函数设计、函数编码及调试、程序整体调试和课程设计总结等,各个步骤都有其特定的任务。
西安郵電學院高级语言课程设计报告书系部名称电信系学生姓名张杉专业名称电子信息工程班级电子0701学号指导教师衡霞时间2008年06月09日至2008年06月20日实验题目学生成绩管理系统一、实验目的:(1)本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。
将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。
(2)C语言的实践。
掌握C语言函数的定义方法,函数的声明及函数的调用过程。
掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。
二、实验内容:(1)运用结构体数组编辑一个简单的学生成绩管理系统,使之能够完成学生成绩的创建、添加,查询、修改,删除、统计、排序等操作,并对文件进行保存和读取。
(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。
直到编译成功为止。
(3)执行运行操作,逐一对每个模块进行调试。
直到全部程序运行成功为止。
(4)请老师检查,向老师演练此程序,并能回答老师提出的相关问题。
三、需求分析:(1)根据学生成绩管理的需要,建立一个“学生信息管理系统”,系统具有输入、查询、修改、删除、统计、排序等基本功能;以方便对成绩的各项管理操作。
每一条记录包括一个学生的学号、姓名、性别,年龄,生日,成绩。
系统的各个功能模块都用函数的形式来实现;可以将学生成绩信息保存在文件中,并从文件中读取出来。
有一个清晰美观界面来调用各个功能。
本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。
本程序分为7个模块,分别为创建学生资料;添加学生的资料; 查询学生的成绩;修改学生的资料;删除学生的资料;统计学生的成绩;对学生的资料进行排序。
本程序可以处理多个学生的成绩的输入、添加、修改、排序等问题。
信息工程系课程设计报告书所属课程名称: C语言程序设计专业班级: 150311学生姓名:曾传凤学号:15031102长春工业大学人文信息学院2016年 9月 9日课程设计成绩评定表第一部分完成题目1、简单的数学计算。
编写程序,计算任意输入的3个数的和的平均值。
(1)截屏:(2)源代码://1. 简单的数学计算。
编写程序,计算任意输入的3个数的和的平均值。
#include "stdio.h"void main(){int a=0,b=0,c=0,s=0;float v;printf("三个数");scanf("%d%d%d",&a,&b,&c);printf("三个数的和为,三个数的和的平均值为");s=a+b+c;v=s/3;printf("三个数的和为%d,三个数的和的平均值为%f",s,v);}2. 题目:编写程序。
a为100,b为50,若a>b成立将a赋予给c,否则将b 赋予给c。
同时,若a<b成立将a赋予d,否则将b的三次方赋予d。
编程输出a,b,c,d的值。
(1)截屏:(2)源代码:#include "stdio.h"void main(){int a=100;int b=50;int c,d;if(a>b){c=a;d=b*b*b;}else{c=b;d=a;}printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);3.题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
(1)截屏:(2)源代码:#include "stdio.h"void main(){int a;printf("请输入学生成绩:\n ");scanf("%d",&a);if(a>=90){printf("A\n");}else if(a>60&&a<89){printf("B\n");}else{printf("C\n");}}4题目:构造一个一元二次方程,方程有两个不相等的实数解,将两个实数解输出出来。
C语言程序设计实训报告张冠森|杨磊团队|2016年12月29日目录一、设计项目 ............................................................... - 2 -二、设计目的 ............................................................... - 2 -三、程序设计框图 ....................................................... - 3 -四、各个程序模块的说明 ........................................... - 3 -五、主要函数的功能 ................................................... - 4 -六、源代码 ................................................................... - 5 -七.程序运行结果 ....................................................... - 6 -八、调试及错误解决 ................................................... - 7 -九、个人总结 ............................................................... - 7 -一、设计项目学生成绩管理系统二、设计目的为了巩固课堂所学内容,提高我的实际技能,在课程结束后进行为期一周的课程设计。
进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。
C语言程序设计第二版课程设计一、前言《C语言程序设计(第2版)》是我国首位以《C语言程序设计》为正式教材的大学生程序设计教材。
该教材以C89标准为基础,以软件工程为导向,全书由浅入深地介绍了C语言程序设计的基础知识、C语言流程控制、结构体和指针、函数、数组等难点,并详细讲解C语言在实际程序设计中的使用及方法。
本次课程设计旨在通过对该教材的实践应用,提高学生对C语言程序设计的理论和实践能力。
二、课程设计题目本次课程设计题目为《C语言程序设计实践——画一个简单的图形》。
三、课程设计目标1.掌握C语言的基本语法和流程控制语句;2.掌握C语言结构体和指针的使用方法;3.熟悉C语言函数和数组的定义和使用;4.了解C语言在图形化界面中的应用。
四、课程设计任务4.1 任务一:C语言基础1.学习《C语言程序设计(第2版)》第1章和第2章;2.熟悉C语言基础语法、变量类型及声明、数据的输入输出等基本概念。
4.2 任务二:流程控制语句1.学习《C语言程序设计(第2版)》第3章;2.熟悉C语言分支语句和循环语句的使用方法;3.理解控制语句在程序中的作用。
4.3 任务三:结构体和指针1.学习《C语言程序设计(第2版)》第4章和第5章;2.熟悉C语言结构体和指针的定义和使用方法;3.熟悉结构体和指针在程序中的应用。
4.4 任务四:函数1.学习《C语言程序设计(第2版)》第6章;2.掌握C语言函数的定义和调用方法;3.熟悉函数在程序设计中的作用。
4.5 任务五:数组1.学习《C语言程序设计(第2版)》第7章;2.掌握C语言数组的定义和使用方法;3.熟悉数组在程序设计中的应用。
4.6 任务六:图形化界面1.学习C语言图形库的使用方法;2.实现一个简单的图形界面;3.将前面学习到的知识应用到该图形界面中。
五、课程设计步骤1.学习前五个任务的内容;2.完成前五个任务对应的练习题;3.学习第六个任务的内容;4.完成第六个任务的练习题;5.实现一个简单的图形界面。
课程设计报告课程名称《C语言程序设计》课题名称班级成绩管理系统专业信息管理与信息系统班级信管1401学号201403110118姓名杨宁馨指导教师曾赛峰、赵锦元、李峰2015年7 月2 日湖南工程学院课程设计任务书课程名称《C语言程序设》课题班级成绩管理系统专业班级信管1401学生姓名杨宁馨学号201403110118指导老师曾赛峰、赵锦元、李峰审批任务书下达日期2015 年6月9 日任务完成日期2015 年7 月2日设计课题一:班级成绩管理系统一、问题描述:对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
二、功能要求:1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
2、本系统显示这样的菜单:请选择系统功能项:a、成绩录入b、成绩显示c、成绩保存d、成绩排序e、成绩修改(要求先输入密码)f、成绩统计(1)显示每门课程成绩最高的学生的基本信息(2)显示每门课程的平均成绩(3)显示超过某门课程平均成绩的学生人数g、退出系统3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生成绩保存到文件中。
三、算法提示:1、数据结构:结构体类型数组。
2、数据库结构:下表构成该系统的基本数据库。
四、测试数据:学生人数N=10课程门数M=4课程名:数学、语文、英语、政治五、其它对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
课程设计报告规范一、需求分析1、程序的功能。
2、输入输出的要求。
二、概要设计1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。
2、课题的总体数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
三、详细设计1、采用C语言定义相关的数据类型。
2、写出各模块的类C码算法。
3、画出函数的调用关系图。
四、程序测试及运行效果1、测试数据:准备典型的测试数据和测试方案2、程序运行的效果截图及说明五、小结1、程序调试中遇到的问题以及解决问题的方法。
北方民族大学课程报告课程名称:程序设计实践专业班级:软件工程(2)班学生姓名:李思良学号:20152170任课教师:王晓锋学期:2015-2016学年春季学期课程报告任务书成绩评定教师:1.需求分析经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了C语言程序设计实践课。
课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系统性质的规模较大的程序。
本次课程设计要求我们达到能独立完成一个1000行以上的程序,完成后要求实现已知半径求圆面积、已知球半径,求表面积和体积,输入两个实数、交换其值输出等30中功能。
通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉C语言开发的全过程,提高综合应用C语言的能力、编程和调试能力,为学习计算机后续课程打好专业基础。
2.概要设计模块划分:1.int diyi() 已知半径求圆面积2.int dier() 已知球半径,求表面积和体积3.void disan() 输入两个实数,交换其值输出4.void disi() 输入两个整数,求他们的平方和5.void diwu() 分段计费6.void diliu() 求一元二次方程的根7.void diqi() 判断三个整数是否能构成三角形8.void diba() 计算1~1000之间能被三整除的所有自然数之和9.void dijiu() 猴子吃桃问题10.void dishi() 输入一个正整数,求位数和位数之和11.void dishiyi() 输入一行字符,统计大小写字母,数字和其他字符12.void dishier() 输入一个四位数,将其加密后输出13.int dishisan() 用冒泡排序对10个数排序14. void dishisi() 用for,while,do~while循环实现100以内素数之和15. void dishiwu() 将大于10元小于100元的钱换成1元,2元,5元的组合16. void dishiliu() 输出99乘法口诀17. void dihsiqi() 验证哥德巴赫18. void dishiba() gcd(int m,int n) int lcm(int m,int n)求两个正整数的最大公约数和最小公倍数19. void dihsijiu() int isprime(int m) 判断素数20. void diershi() 求(m,n)以内全部素数,每行输出10个21. void diershiyi() 输出10000到99999的所有回数22. void diershier() 两个6*6矩阵的乘积23. void diershisan() void allPrimes(int m,int n) void sort(int array[],int n)对一批数进行排列,求出最大值与平均数24. int diershisi() char switchScore(int score) 输入一批学生的成绩,换成五分制25. void diershiwu() 逆序输出long reverse(long number)返回number的逆序数26. void diershiliu() 求阶乘27. void diershiqi() 用递归函数求Fibonacci数列的前40个数,每行输出8个28. int dierhsiba() 输入某年某月某日,判断这一天是这一年的第几天29. void diershijiu() 写出1000以内的所有完数30. void disanshi() void MonthDay(int year,int yearDay,int *pMonth,int *pDay)输入年和天数,输出对应的年、月、日31.void myprint() 显示菜单界面将以上30个子函数放在一个主函数内进行调用。
五邑大学课程设计报告课程名称:C语言程序设计课程设计课程编号:0800090学时:16学时学分:1学分图书信息管理系统的设计与实现姓名:梁婉琦学号: 3214002395班级: 140808班专业:电子信息工程(信息安全)学院:计算机学院指导教师:张胜利课程设计递交时间:2014年4月18日目录1.课程设计目的 (1)2.课程设计的内容 (1)3.课程设计的要求 (1)3.1.功能要求: (1)3.2.技术要求: (2)4.概要设计 (2)4.1.功能模块图 (2)4.2.功能能模块描述 (3)5.详细设计 (4)5.1.各功能模块的具体实现算法——流程图 (4)5.2.重点设计描述 (5)6.系统测试与调试 (10)7.课程设计心得体会 (11)参考资料 (11)1.课程设计目的进一步加深、巩固所学专业课程《C语言程序设计》的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。
2.课程设计的内容设计并实现一个图书信息管理系统,要求具有以下功能模块:(1)图书信息录入模块。
(2)图书信息浏览模块。
(3)图书信息查询模块。
(4)图书修改删除模块。
(5)图书借阅模块:(6)图书归还模块:(7)借阅查询模块:(8)退出系统模块。
3.课程设计的要求3.1.系统功能要求:1.图书信息录入模块:✧图书信息包括书名,编号,作者,价格,出版社,类别,原始库存,借出。
✧数据的存储可以采用结构体数组或者链表。
✧图书信息可以通过键盘逐个录入。
✧图书信息可以通过文件导入。
✧将最终数据存储在文件中2.图书信息浏览模块:✧能够浏览图书的基本信息和借阅信息。
✧将最终数据存储到文件3.图书信息查询模块:✧通过图书编号查询图书信息。
✧通过图书书名查询图书信息。
4.图书修改删除模块:✧通过图书查询选择要操作的图书。
✧选择修改或删除操作。
✧选择的图书已被借阅则不能继续操作,退出系统。
题目:《C语言课程设计》课程报告指导教师:武云姓名:张文杰院系:计算机学院班级:191122学号:201210016612013年1月6日报告正文人才中心管理系统一、题目要求1、基本信息管理:包括单位信息采集、新进人才登记、人才变动登记、人才基本信息采集、人才信息分类管理、专业信息采集、行政区域信息、人才属性信息等内容。
人才信息分类管理人才离职情况、人才基本信息、人才培训信息、人才科研信息、人才学历信息、人才工作信息、人才配偶信息、人才奖励信息等。
2、查询:包括人才信息查询,各年度职务变化查询,各行业人才专业分布查询,各单位各行业人员分部查询,各奖励等级获奖查询,各单位处分情况查询,按单位、年度统计培训情况,单位属性统计查询‘个人身份属性统计查询,年度人才获奖查询等。
二、需求分析1、根据题目要求,可知人才的基本信息应存放在文件中,所以应提供文件的读入、输出等操作;在程序中需要查询人才的相关信息等。
三、总体设计1、根据题目要求及需求分析可以将系统的设计分为如下模块。
1、主函数其中各部分模块用【程序】int main(){FILE *fp;int i=0;People peop[100];//******数据读入内存if ((fp=fopen("peop.txt","r"))==NULL){printf("erro");Sleep(5000);exit(0);}for (;i<100;i++){if (feof(fp)){break;}fscanf(fp,"%d %s %d %s\n",&peop[i].Id,&peop[i].name,&peop[i].zaizhi,&peop[i].Edu_level );}num=i;fclose(fp);//*****************int n=1,m;while(n){system("CLS");printf(" 人才管理系统\n");printf(" 1.人才基本信息; \n");printf(" 2.人才查询; \n");printf(" 3.退出保存文件; \n");scanf("%d",&m);switch (m){case 1:manager(peop);break;case 2:search(peop);break;case 3:n=0;break;}}printf("请等待写入磁盘文件。
作者张步阳学院机电学院C程序课程设计报告一课程设计目的与任务根据高教委的要求,高校学生必须具备扎实的计算机基础知识,具有较强的程序设计和软件开放能力,特别对计算机专业及相关专业的学生要求尤高。
安排此课程设计的目的,就是通过一次集中强化训练,使学生及时巩固已学的知识,补充未学的但又是必需的内容,进一步提高程序设计能力。
二课程设计内容1-运行环境windows 2000/xp VC++6.02-上机练习本人共调试运行了12道课后练习题,其中包括5.1节——5.4节各两道,5.5节一道,5.7节综合练习3道。
现将题目、设计思路、C原程序、注释、输入及运行输出结果的截屏整理成如下文档。
5.1 循环及分支5.13练习(1)用递推法计算当x=0.5时下述级数的近似值,使其误差小于某一指定的值epsilon(例如:epsilon=0.000001),即:【设计思路】由题意知表达式中的相邻两项存在下述数学关系后项=前项【程序】#include "stdafx.h"#include "stdio.h"#include<math.h>void main(){float a,b,x=0.5;int i;a=x;b=x;printf("\n当x=0.5时\n",b);for(i=1;fabs(a)>1e-6;i++) /*当表达式中的某一项a的绝对值小于0.000001时进行循环*/ {a=a*(-1)*x*x*(2*(i-1)+1)/((2*i+1)*i); /*找出级数中相邻两项之间的关系以便递推*/b=b+a; /*将级数的每一项累加起来*/}printf("\n所求级数b=%f \n",b);}【输出结果截屏】(4)用测试法求三色球问题。
若一个口袋中方有12个球,其中有3个红的,3个白的和6个黑的,从中任取8个球,问共有多少中不同的颜色搭配?【设计思路】红球的个数为x(0≤x≤3),白球的个数为y(0≤x≤3),黑球个数z=8-x-y,采用两个for 语句并嵌套,测试出所有组合方式。
C语言与数据结构课程设计报告学号 2014014099姓名张岗课程设计题目通讯录的制作2016 年 1 月目录1 需求分析1.1 功能与数据需求1.1.1 题目要求的功能1.1.2 扩展功能1.2 界面需求1.3 开发环境与运行需求2 概要设计2.1主要数据结构2.2程序总体结构2.3各模块函数说明3 详细设计3.1算法分析与设计3.2主要程序段设计4 测试5 使用说明5.1应用程序功能的详细说明5.2应用程序运行环境要求5.5输入数据类型、格式和内容限制6 总结提高6.1课程设计总结6.2开发中遇到的问题和解决方法6.3 对自己完成课设完成情况的评价6.4《C语言与数据结构课程设计》课程的意见与建议附录:程序源代码1 需求分析1.1 功能与数据需求1) 输入信息--enter( );2) 显示信息---display( );3) 查找以姓名作为关键字 ---search( );4) 删除信息---delete( );5) 存盘---save ( );6) 装入---load( ) ;1.2 界面需求1) 每条信息至包含:姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项;电话号码(TEL);2) 作为一个完整的系统,应具有友好的界面和较强的容错能力;3) 需要链表实现;4)上机能正常运行。
1.3 开发环境开发环境:测试系统:Windows7,开发工具:Dev-C++2 概要设计2.1主要数据结构//构建链表的结构体typedef struct CLUB{char NAME[20];//姓名char STREET[20];//街道char CITY[20];//城市char STATE[20];//国家char PHONE[20];//电话号码char EIP[10];//邮编struct CLUB *next;}CLUB; CLUB *headLink;2.2程序总体结构//主要函数void Enter(CLUB *t);//录入void Search(void);//查找void Display(void);//输出输入的所有信息void Delete(void);//删除信息void Save(void) ;//保存void Load(void); //从文件中的内容//界面函数void Menu(void);//显示菜单2.2各模块函数说明void CreateHeadLink(void) ;//创建void Load(void); //从文件中的内容void Menu(void);//显示菜单void InsertOneNode(CLUB *t);//增加新结点CLUB *MallocNode(void);//申请一个新结点,并将其初始化void Enter(CLUB *t);//输入void InsertOneNode(CLUB *t);//在链表的结尾处增加一个结点void Search(void);//查找void DesplayOneNode(CLUB *t);//输出一个结点的信息void Display(void);//输出输入的所有信息void Delete(void);//删除信息void ChangeInforByName(void);//修改信息void Save(void) ;//保存3 详细设计3.1算法分析与设计Enter函数:从键盘中获得数据,通过scanf将各数据放入对应的链表中Display函数:将链表中的数据输出3.2主要程序段设计4 测试5 使用说明5.1应用程序功能的详细说明先输入联系人的基本信息,可以显示录入的所有联系人的信息,可以将联系人的信息保存到CLUB.txt,当第二次运行时可以直接从CLUB.txt文件中调用5.2应用程序运行环境要求5.5输入数据类型、格式和内容限制6 总结提高6.1课程设计总结6.2开发中遇到的问题和解决方法6.3 对自己课程设计完成情况的评价附录:程序源代码#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<windows.h>#include<string.h>#include<malloc.h>typedef struct CLUBchar NAME[20];//姓名char STREET[20];//街道char CITY[20];//城市char ST A TE[20];//国家char PHONE[20];//电话号码char EIP[10];//邮编struct CLUB *next;}CLUB;CLUB *headLink; //链表表头指针void CreateHeadLink(void) ;//创建void Load(void); //从文件中的内容void Menu(void);//显示菜单void InsertOneNode(CLUB *t);//增加新结点CLUB *MallocNode(void);//申请一个新结点,并将其初始化void Enter(CLUB *t);//输入void InsertOneNode(CLUB *t);//在链表的结尾处增加一个结点void Search(void);//查找void DesplayOneNode(CLUB *t);//输出一个结点的信息void Display(void);//输出输入的所有信息void Delete(void);//删除信息void ChangeInforByName(void);//修改信息void Save(void) ;//保存int choose;//用于接收用户的选择//主函数int main(){int j;system("color 3E");printf("\n\n\n\n\n\n\n\n\n\n");printf("\t\t\t %c ",1);printf("欢迎进入通信录!\n\n");printf("正在进入,请等候");for(j=0;j<6;j++){Sleep(300);printf(".");}system("cls");CreateHeadLink();Menu();}//函数功能:从文件中读信息void Load(void){FILE *fp;CLUB *p;p=(CLUB *)malloc(sizeof(CLUB));headLink=p;p->next=NULL;fp=fopen("CLUB.txt","r");if(!fp){printf("文件不存在\n");return;}p=MallocNode();while(fscanf(fp,"%s%s%s%s%s%s\n",p->NAME,p->STREET,p-> CITY,p->ST A TE,p->PHONE ,p->EIP)>0) {InsertOneNode(p);p=MallocNode();}fclose(fp);}//函数功能:显示菜单,根据用户的输入完成相应的功能void Menu(void){CLUB *p;printf("\n\t|***********欢迎使用通信录信息管理系统****************|\n");printf("\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+ [5]按姓名修改电话簿信息 +\n");printf("\t\t+ [6]**保存所有电话簿信息 +\n");printf("\t\t+ [7]装入文件中电话簿信息 +\n");printf("\t\t+ [0]****************退出 +\n\n");printf("请输入指令:");scanf("%d",&choose);//取得用户的选择switch(choose){Display();//显示所有电话簿的信息Sleep(2000);system("cls");break;case 2:Search();//按姓名查找信息Sleep(2000);system("cls");break;case 3: //录入新信息p=MallocNode();//先申请一个新结点Enter(p);//要求用户输入信息到新结点中InsertOneNode(p);//将新结点加到链表中Sleep(2000);system("cls");break;case 4:Delete();//删除电话簿信息Sleep(2000);system("cls");break;case 5:ChangeInforByName();//按姓名修改电话簿信息Sleep(2000);system("cls");break;case 6:Save();//保存Sleep(2000);system("cls");break;case 7:Load();//装入Display();Sleep(2000);system("cls");break;case 0:Save();//保存数据后再退出free(headLink);exit(1);break;default:}Menu();//递归调用}// 函数功能:建立链表表头void CreateHeadLink(void){CLUB *p;p=(CLUB *)malloc(sizeof(CLUB));headLink=p;p->next=NULL;}// 函数功能:增加新结点void InsertOneNode(CLUB *t){CLUB *p;p=headLink;while(p->next){p=p->next;}p->next=t;}//函数功能:申请一个新结点,并将其初始化CLUB *MallocNode(void){CLUB *p;int i;p=(CLUB*)malloc(sizeof(CLUB));if(p==NULL)return NULL;for(i=0;i<20;i++)p->NAME[i]='\0';for(i=0;i<20;i++)p->STREET[i]='\0';for(i=0;i<10;i++)p->CITY[i]='\0';for(i=0;i<20;i++)p->ST A TE[i]='\0';for(i=0;i<20;i++)p->PHONE[i]='\0';for(i=0;i<20;i++)p->EIP[i]='\0';p->next=NULL;}//函数功能:录入电话簿信息void Enter(CLUB *t){printf("请输入姓名: \n");scanf("%s",t->NAME);printf("请输入街道信息:\n");scanf("%s",t->STREET);printf("请输入城市信息:\n");scanf("%s",t->CITY);printf("请输入国家信息:\n");scanf("%s",t->ST A TE);printf("请输入电话号码:\n");scanf("%s",t->PHONE);printf("请输入邮编信息:\n");scanf("%s",t->EIP);}//函数功能:在链表的结尾处增加一个结点void InsertOneNode(void){CLUB *p;p=headLink;while(p->next){p=p->next;}p->next=p;}//函数功能:根据用户输入的姓名显示电话簿的信息void Search(void){CLUB *p;char NAME[20];char flag=0;p=headLink->next;printf("请输入要查询的姓名信息:\n");scanf("%s",NAME);while(p){if(strcmp(p->NAME,NAME)==0){printf("\n 姓名\t街道\t城市\t国家\t电话号码\t邮编\n");DesplayOneNode(p);flag=1;break;}p=p->next;}if(!flag)printf("对不起,不存在姓名为 %s 的电话簿信息\n",NAME); }//函数功能:输出一个结点的信息void DesplayOneNode(CLUB *t){printf("%s\t",t->NAME);printf("%s\t",t->STREET);printf("%s\t",t->CITY);printf("%s\t",t->ST A TE);printf("%s\t",t->PHONE);printf("%s\t",t->EIP);printf("\n\t");}//函数功能:显示所有电话簿的信息void Display(void){CLUB *p;p=headLink->next;if(p==NULL){printf("现在没有电话簿信息,请先输入电话簿信息\n\n");return;}printf("\n");printf("\n\t姓名\t街道\t城市\t国家\t电话号码\t邮编\n\t\n\t");while(p){DesplayOneNode(p);p=p->next;}p=NULL;}//函数功能:根据用户输入的姓名删除void Delete(void){char NAME[20];CLUB *p,*q;char flag=0;printf("请输入要删除的姓名信息:");scanf("%s",NAME);p=headLink;q=headLink->next;while(q){if(strcmp(q->NAME,NAME)==0){p->next=q->next;free(q);flag=1;break;}p=p->next;q=q->next;}if(!flag){printf("不存在该姓名的信息\n");return;}printf("成功删除\n");}//函数功能:根据输入的姓名修改电话簿信息void ChangeInforByName(void){CLUB *p;char NAME[20];char flag=0;p=headLink->next;printf("请输入姓名:\n");scanf("%s",NAME);while(p){if(strcmp(p->NAME,NAME)==0){printf("请输入新的街道信息:\n");scanf("%s",&p->STREET);printf("请输入新的电话号码:\n");scanf("%s",&p->PHONE);printf("修改成功\n");break;}p=p->next;}}// 函数功能:保存链表数据到文件中void Save(void){CLUB *p;FILE *fp;p=headLink->next;if(p==NULL){printf("现在没有电话簿信息,请先输入电话簿信息\n\n");return;}fp=fopen("CLUB.txt","w+");if(!fp){printf("文件不存在\n");return;}while(p){fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n",p->NAME,p->STREET,p-> CITY,p->ST A TE,p->PHONE,p->EIP);p=p->next;}fclose(fp);}。
《C语言程序设计2》实验报告———函数与数组的使用一、实验目的:通过几个程序的编写,加深对数组和函数知识的理解和认识。
并掌握函数和数组在程序中的使用方法。
二、内容:1.编写程序:关于函数的程序(1):定义函数返回两个数中的最大数,在主函数中通过调用该函数求三个数中较大的数并输出。
代码:int max(int a,int b){if(a>b)return a;return b;}main(){int a,b,c,m;printf("Enter 3 integers:\n");scanf("%d%d%d",&a,&b,&c);m=max(a,b);m=max(m,c);printf("Max=%d\n",m);getch();}结果:(2)编写一个判断一个整数是否为素数的函数,并求出在2000以内的所有素数。
代码:int sushu(int);main(){int i;for(i=1;i<=2000;i++)if(sushu(i))printf("%4d ",i);getch();}int sushu(int n){int i;if(n==1)return 0;for(i=2;i<=n/2;i++)if(n%i==0)return 0;return 1;}结果:3、求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0、等于0和小于0的根,并输出结果。
从主函数输入a、b、c的值代码:#include<math.h>void TwoJie(int a,int b,int c){double x1,x2;x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a); printf("x1=%.1f ,x2=%.1f\n",x1,x2); }void OneJie(int a,int b){double x;x=-b/(2*a);printf("x1=x2=%.2f\n",x);}void NoJie( ){printf("NO Jie\n");}main(){int a,b,c;double s;printf("Input a,b,c:");scanf("%d%d%d",&a,&b,&c);s=b*b-4*a*c;if(s>0)TwoJie(a,b,c);if(s==0)OneJie(a,b);if(s<0)NoJie();getch();}结果:4、编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述统计结果。
西安郵電學院C语言课程设计报告书系部名称电子信息与工程系学生姓名张倩专业名称电子信息工程班级电子0701班学号05071013指导教师衡霞2008年06月09日至时间2008年06月20日实验题目学生信息管理系统一、实验目的:(1)本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。
将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。
(2)C语言的实践。
掌握C语言函数的定义方法,函数的声明及函数的调用过程。
掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。
二、实验内容:(1)运用结构体数组编辑一个简单的学生管理系统,使之能够完成学生信息的创建、添加,查询、修改,删除、统计、排序等操作,并对文件进行保存和读取。
(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。
直到编译成功为止。
(3)执行运行操作,逐一对每个模块进行调试。
直到全部程序运行成功为止。
(4)请老师检查,向老师演练此程序,并能回答老师提出的相关问题。
三、需求分析:(1)根据学生信息管理的需要,建立一个“学生信息管理系统”,系统具有输入、输出、查询、修改、删除、统计、排序等基本功能;以方便对信息的管理操作。
每一条记录包括一个学生的学号、姓名、成绩、性别,年龄,出生年月日,家庭住址.系统的各个功能模块都用函数的形式来实现;可以将学生成绩信息保存在文件中,并从文件中读取出来。
有一个清晰美观界面来调用各个功能。
本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。
本程序分为7个模块,分别为创建学生资料;添加学生的资料; 查询学生的成绩;修改学生的资料;删除学生的资料;统计学生的成绩;对学生的资料进行排序。
本程序可以处理多个学生的成绩的输入、添加、修改、排序等问题。
本程序的使用特别方便,每做完一个模块,下面都有提示信息。
使用环境为Tc。
(2)创建该学生成绩管理系统目的就是能够对学生基本信息进行创建、追加、查询、修改、删除、统计、排序等功能,这样可以简化许多人工做起来很复杂的问题。
譬如:“排序”,有了此程序只需将信息输入,计算机就可自动执行,省时、省力。
另外,它还可以重复使用,方便、快捷。
(3)该学生基本信息管理系统是在WIN-TC中文简体环境下运行。
该系统要测试的数据如下:输入模块:(输入5个学生的信息)查询模块:(查询Jim的基本信息)A1024(按学号即可查询)或Jim(按姓名也可查询)修改模块:(修改Linda的信息)(输入)1(修改名字)(输入)2(修改学号)(输入)3(修改成绩)(输入)4(修改性别)(输入)5(修改年龄)(输入)6(修改家庭住址)(输入)7(修改出生年月日)删除模块:(删除King的基本信息)学号即可删除)统计模块:可统计男女人数,统计各分数段人数。
排序模块:按成绩,学号,分别进行排序。
四、概要设计(2)模块功能详细说明:A、输入模块:此模块可以连续输入30个学生的资料,若学生数少于30,则可以在输入序号处输入0便可退出此模块,并把输入的信息保存到c:\\students文件中。
B、输出模块:此模块中先打开c:\\students文件中的学生信息,后输出要学生信息.c.更新模块:此模块包括添加,修改,删除模块.修改模块:此模块中可以修改学生的任何一个信息。
修改完毕后输入y可以继续修改,输入n则退出此模块。
删除模块:此模块中用到的删除原理为覆盖要删除的学生的资料。
过程简述,先输入要删除的学生的学号,系统找到此学生的信息后给它复制下一个学生的信息,给下一个学生的纪录复制下下一个学生的信息,一直到最后一个学生的信息复制给倒数第二个学生的信息为止。
然后文件中的学生总数减一含了三个小模块.添加模块:此模块中先打开c:\\students统计文件中的学生,后输入要添加的学生的学号,系统确认此学号在c:\\students不存在时开始纪录新学生的资料,便清楚使用者。
D. 查询模块:此模块中使用者可以用三种方式查询学生成绩。
分别为(1)按学号查询(2)按姓名查询。
在这里以按学号查询为列:先选择按学号查询,输入要查询的学生的学号,系统确认此学号在c:\\stud存在后读取信息并在屏幕上输出学生纪录。
F、排序模块:此模块用的为指针。
在此模块中可以按两种方法进行排序,分别为(1)按成绩排序(2)按学号排序(3)按序号排序输出时分别以从大到小和从小到大从小到大的循序进行输出。
G、此模块较简单,统计文件c:\\students中的男和女的学生个数和各成绩段的人数。
五、详细设计及运行结果(1)各个模块的程序流程图添加模块:.排序模块:(3)主要函数之间相互调用如下:主函数的调用:main(){int choice;sum=read_message();bioskey(0);printf("press any key to continue:\n");getch();do{system("cls");printf("\n\n\n ************** student manage system **************\n\n");printf(" 1.input message\n\n");printf(" 2.output message\n\n");printf(" 3.renew message\n\n");printf(" 4.inquire message\n\n");printf(" 5.sort message\n\n");printf(" 6.count message\n\n");printf(" 0.exit the system\n\n");printf(" please select the choice");scanf("%d",&choice);switch(choice){case 1: input_message();break;case 2: output_message();break;case 3: renew_message();break;case 4: inquire_message();break;case 5: sort_message();break;case 6: count_message();break;case 0: break;}}while(choice!=0);save_message(sum);printf("\n- message has saved!-(file name:students.txt) \n");}六、调试情况,设计技巧及体会( 1 )、调试中的问题:a. 刚开始没有那个初始化函数,程序运行后没有输入任何数据就试得去执行显示功能,结果output_message显示的是一些乱码!加入初始化函数后,这种现象也随之消失。
b. 在输入函数中设了最大值,可以输入30个学生的成绩信息,当输入数字‘0’时停止,并保存信息。
c. 在没有输入任何信息的情况下,不能执行查询、修改、删除、统计、排序功能。
d. 有时候,忘记定义就直接调用,使得出错。
e. 定义的成绩是浮点型的,但输入数据的时候却忘记输成整型,导致输入和输出均错误。
最后,将定义的成绩改为整型才正确。
我这时候才真正体会到了一致性的重要。
检查程序很多遍但却始终不知道输入的数据有错,很令人头疼。
( 2 )对自己程序的总结与评价:本程序是由C语言的基本单位—函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。
本程序分为7个模块,分别为(1)输入学生资料。
(2)输出学生的资料(3)更新学生的成绩(4)查询学生的资料(5)排序学生的资料(6)统计学生的成绩(7)退出信息管理系统。
本程序可以处理多个学生的信息的输入、添加、修改、排序等问题。
本程序的使用特别方便,每做完一个模块,下面都有提示信息。
使用环境为Tc。
此程序的不足之处在学生基本信息方面还不够完善, 另一方面就是在运行此程序时,需要执行操作的提示语不够具体和完善.改进方法: 可以在学生基本信息的结构体中添加更多的学生信息,像是多输入几门课的成绩,删除的时候,应多加一个按照序号删除,查询时也应加入一个按照序号查询,使得学生信息更加完善,应用的时候更加的方便,快捷。
此外,还可以在编程时加一些必要的提示语,用printf(“”); 语句直接可输入.(3)、在设计过程中的感受:首先经过两周的编程实习,并在后一段的报告总结,我对C语言这门科有新的认识,本人实在是获益不浅!要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。
这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验。
其次, 通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。
同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!再则, 因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作用,C语言程序对我们来说比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。
(4)测试数据:输入模块:序号:01姓名:mary学号:a1005成绩:89年龄:19性别:女家庭住址fangdong:出生年月日:1988-9-16序号:02姓名:jim学号:a1021成绩:76年龄:18性别:男家庭住址linhe:出生年月日:1989-6-12序号:03姓名:ham学号:a1012成绩:68年龄:18性别:男家庭住址kongtou:出生年月日:1989-1-23序号:04姓名:susan学号:a1025成绩:78年龄:18性别:女家庭住址kongtou:出生年月日:1989-6-30 输出:输入要修改的学号:a1021 你想修改哪一项?1.姓名2.学号3.成绩4.年龄5.性别6.家庭住址7.出生年月日:请选择(1~7)3按学号查询:1.统计男女人数:男的:2女的:2统计成功!按任意键返回!2.统计各分数段人数:90分以上:080分以上:170分以上:260分以上:360分以下:无统计成功!按任意键返回!排序模块:程序运行:主函数1.输入模块:2.输出模块:3.更新模块:1).插入模块:3).修改模块:1)按学号查询:2)按姓名查询:5.排序模块:1)按学号排序:2)按成绩排序:3)按序号排序:6.统计模块:1)统计男女:2)统计成绩:7.退出模块七、源程序清单:#include<stdio.h>#include<string.h>#define MAX 30#define PAGE 5#define PRINT1 printf("-------------------------------------------------------------\n")#define PRINT2 printf("num--name--number--score--age--sex--address--birthday(year-m onth-day)\n")#define PRINT3 printf("%d,%s,%s,%d,%d,%s,%s,%d-%d-%d\n",stud[i].num,stud[i].name,st ud[i].number,stud[i].score,stud[i].age,stud[i].sex,stud[i].address,s tud[i].birthday.year,stud[i].birthday.month,stud[i].birthday.day)int sum;struct DATE{int year;int month;int day;};struct stud{int num;char name[21];char number[10];int score;int age;char sex[11];char address[27];struct DATE birthday;}stud[MAX];save_message(int sum){ FILE *fp;int i;if((fp=fopen("students.txt","wb"))==NULL){printf( "read file wrong!\n");return;}for(i=0;i<sum;i++)if(fwrite(&stud[i],sizeof(struct stud),1,fp)!=1)printf("write file wrong!\n");fclose(fp);}input_message(){int i=0,s=MAX;system("cls");printf("\n\n enter the students' messages (not more than %d)\n",s);printf("----------------------------------------------------------\n");do{printf("\n the %dth student ",i+1);printf("\n student's num:");scanf("%d",&stud[i].num);if(stud[i].num==0) break;printf("\n student's name:");scanf("%s",stud[i].name);printf("\n student's number:");scanf("%s",stud[i].number);printf("\n student's score:");scanf("%d",&stud[i].score);printf("\n student's age:");scanf("%d",&stud[i].age);printf("\n student's sex:");scanf("%s",stud[i].sex);printf("\n student's address:");scanf("%s",stud[i].address);printf("\n student's birthday:");scanf("%d-%d-%d",&stud[i].birthday.year,&stud[i].birthday.month,&stu d[i].birthday.day);i++;}while(i<MAX);printf("\n --%d students message have been input!--\n",i);sum=i;printf("\n press any key return to menu!");bioskey(0);}int read_message(){ FILE *fp;int i=0;if((fp=fopen("students.txt","rb"))==NULL){printf("\n\n**there is no message,press any key to menu and input message!*****\n");return;}while(feof(fp)!=1){fread(&stud[i],sizeof(struct stud),1,fp);if(stud[i].num==0) break;else i++;}fclose(fp);return ;}output_message(){int i=0,j=0,page=1;system("cls");printf("\n\n ------student message list------ the %dth page\n\n",page);PRINT2;PRINT1;do{if(stud[i].num!=0){j++;if(j%PAGE!=0){PRINT3;PRINT1;}else{PRINT3;PRINT1;if(stud[i+1].num!=0){printf("press any key to continue!");bioskey(0);system("cls");printf("\n\n ----------students message list--------- the %dth pages\n\n",++page);PRINT2;PRINT1;}}}i++;}while(stud[i].num!=0);printf("press any key to menu!");bioskey(0);}insert_message(){int i=sum,j,flag=0;char choice;system("cls");printf("\n\n add a new student\n");printf("--------------------------------------------------\n");do{stud[i].num=++sum;printf("\n the new student's num:%d",stud[i].num); printf("\n the new student's name :");scanf("%s",stud[i].name);printf("\n the new student's number:");scanf("%s",stud[i].number);printf("\n the new student's score:");scanf("%d",&stud[i].score);printf("\n the new student's age:");scanf("%d",&stud[i].age);printf("\n the new student's sex:");scanf("%s",stud[i].sex);printf("\n the new student's address:");scanf("%s",stud[i].address);printf("\n the new student's birthday:");scanf("%d %d %d", &stud[i].birthday.year,&stud[i].birthday.month,&stud[i].birthday.day );printf("\n Do you want to continue? (Y/N)");choice=getch();if (choice=='y'||choice=='Y'){ printf("\n continue!\n");i++;flag=1;}else flag=0;}while(flag==1);printf("\n press any key to menu!");bioskey(0);}delete_message(){ char delete_number[10];int i;system("cls");printf(" please input the number you want to delete:");scanf("%s",delete_number);for(i=0;i<sum;i++){if(strcmp(stud[i].number,delete_number)==0){ for(;i<sum;i++)stud[i]=stud[i+1];sum=sum-1;printf(" the message has been deleted!");}else printf("the student is not exist!");}}revise_message(){int i=0;int choice,flag;char revise_number[10];do{system("cls");printf("\n input the student's number you want to revise:");scanf("%s",revise_number);for(i=0;i<sum;i++)if(strcmp(stud[i].number,revise_number)==0){printf("\n --students message--\n");PRINT1;PRINT2;PRINT3;printf("\n which one do you want to revise?\n");printf("\n \n");printf("\n 2.number\n");printf("\n 3.score\n");printf("\n 4.sex\n");printf("\n 5.age\n");printf("\n 6.address\n");printf("\n 7.birthday\n");printf("\n please select your choice:");scanf("%d",&choice);switch(choice){ case 1:printf("\n revised name:");scanf("%s",stud[i].name);break;case 2:printf("\n revised number:");scanf("%s",stud[i].number);break;case 3:printf("\n revised score:");scanf("%d",&stud[i].score);break;case 4:printf("\n revised age:");scanf("%d",&stud[i].age);break;case 5:printf("\n revised sex:");scanf("%s",stud[i].sex);break;case 6:printf("\n revised address:");scanf("%s",stud[i].address);break;case 7:printf("\n revised birthday:");scanf("%d %d %d",&stud[i].birthday.year,&stud[i].birthday.month,&stu d[i].birthday.day);}PRINT1;PRINT2;PRINT3;break;}if(i ==sum){printf("\n the student is not exist!");bioskey(0);}printf("\n\n Do you want to continue to revise? (Y/N)"); choice=getch();if(choice=='Y'||choice=='y'){flag=1;printf("\n continue!\n");}else flag=0;}while(flag==1);printf("\n press any key return to menu!");bioskey(0);}renew_message(){ int choice;do{system("cls");printf("\n\n\n ******************renew the student message***************\n\n");printf(" 1.insert message\n\n");printf(" 2.delete message\n\n");printf(" 3.revise message\n\n");printf(" 0.return to menu\n\n");printf(" please select your choice:");scanf("%d",&choice);switch(choice){case 1: insert_message();break;case 2: delete_message();break;case 3: revise_message();break;case 0:break;}}while(choice!=0);}inquire_number(){int i,choice,j=0;char inquire_number[10];system("cls");printf("\n input required number :");scanf("%s",inquire_number);for(i=0;i<sum;i++)if(strcmp(stud[i].number,inquire_number)==0){printf("\n --students message--\n");PRINT1;PRINT2;PRINT3;}else j++;if(j==sum) printf("\n the student not exist!");bioskey(0);}inquire_name(){int i,choice,j=0;char inquire_name[10];system("cls");printf("\n input the inquired name:");scanf("%s",inquire_name);for(i=0;i<sum;i++)if(strcmp(stud[i].name,inquire_name)==0 && stud[i].num!=0){printf("\n --students message--\n");PRINT1;PRINT2;PRINT3;}else j++;if(j==sum) printf("\n the student not exist!");bioskey(0);}inquire_message(){ int choice;do{system("cls");printf("\n\n\n **************inquire the students' message****************\n\n");printf(" 1.inquire number\n\n");printf(" 2.inquire name\n\n");printf(" 0.return to menu\n\n");printf(" please select your choice:");scanf("%d",&choice);switch(choice){case 1: inquire_number();break;case 2: inquire_name();break;case 0: break;}}while(choice!=0);}count_sex(){ struct stud *p,*q[MAX];int m_num=0,f_num=0,i;system("cls");p=stud;for(i=0;i<sum;i++)q[i]=p++;for(i=0;i<sum;i++){if(strcmp(q[i]->sex,"male")==0||strcmp(q[i]->sex,"MALE")==0)m_num++;elsef_num++;}printf("\n the male:%d",m_num);printf("\n the female:%d",f_num);printf("count successfully .press any key to menu\n");bioskey(0);}count_score(){ struct stud *p,*q[MAX];int a=0,b=0,c=0,d=0,e=0;int i;system("cls");p=stud;for(i=0;i<sum;i++)q[i]=p++;for(i=0;i<sum;i++){ if(q[i]->score>=90) a++;if(q[i]->score>=80) b++;if(q[i]->score>=70) c++;if(q[i]->score>=60) d++;else e++;}printf("\nthe more than 90 students:%d\n",a);printf("\nthe more than 80 students:%d\n",b);printf("\nthe more than 70 students:%d\n",c);printf("\nthe more than 60 students:%d\n",d);printf("\nnot passed students:%d\n",e);printf("count successfully. press any key to menu!");bioskey(0);}count_message(){ int choice;do{system("cls");printf("\n\n\n *******************count the students' message**************\n\n");printf(" 1.count sex\n\n");printf(" 2.count score\n\n");printf(" 0.return to menu\n\n");printf(" please select your choice:"); scanf("%d",&choice);switch(choice){case 1: count_sex();break;case 2: count_score();break;case 0: break;}}while(choice!=0);}sort_number(){struct stud *p,*q[MAX];int i,j,k;system("cls");printf("\n sort number\n");printf("----------------------------------------------------------------\n");printf("\n sort num name number score age sex address birthday\n");p=stud;for(i=0;i<sum;i++)q[i]=p++;for(i=0;i<sum;i++){k=i;for(j=i+1;j<sum;j++)if(strcmp(q[k]->number,q[j]->number)>0)k=j;if(k!=i){p=q[i];q[i]=q[k];q[k]=p;}}for(i=0;i<sum;i++)printf("\n%d %d %s %s %d %d %s %s %d %d %d\n",i+1,q[i]->num,q[i]->na me,q[i]->number,q[i]->score,q[i]->age,q[i]->sex,q[i]->address,q[i]->birthday.year,q[i]->birthday.month,q[i]->birthday.day);bioskey(0);}sort_score(){struct stud *p,*q[MAX];int i,j,k;system("cls");printf("\n sort score\n");printf("-----------------------------------------------------------------\n");printf("\n sort num name number score age sex address birthday\n");p=stud;for(i=0;i<sum;i++)q[i]=p++;for(i=0;i<sum;i++){k=i;for(j=i+1;j<sum;j++)if(q[k]->score<q[j]->score)k=j;if(k!=i){ p=q[i];q[i]=q[k];q[k]=p;}}for(i=0;i<sum;i++)printf("\n%d %d %s %s %d %d %s %s %d %d %d\n",i+1,q[i]->num,q[i]->na me,q[i]->number,q[i]->score,q[i]->age,q[i]->sex,q[i]->address,q[i]->birthday.year,q[i]->birthday.month,q[i]->birthday.day);bioskey(0);}sort_num(){struct stud *p,*q[MAX];int i,j,k;system("cls");printf("\n sort num\n");printf("----------------------------------------------------------------\n");printf("\n sort num name number score age sex address birthday\n");p=stud;for(i=0;i<sum;i++)q[i]=p++;for(i=0;i<sum;i++){k=i;for(j=i+1;j<sum;j++)if(q[k]->num>q[j]->num )k=j;if(k!=i){p=q[i];q[i]=q[k];q[k]=p;}}for(i=0;i<sum;i++)printf("\n%d %d %s %s %d %d %s %s %d %d %d\n",i+1,q[i]->num,q[i]->na me,q[i]->number,q[i]->score,q[i]->age,q[i]->sex,q[i]->address,q[i]->birthday.year,q[i]->birthday.month,q[i]->birthday.day);bioskey(0);}sort_message(){ int choice ;do{system("cls");printf("\n\n\n *****************student sort message**************\n\n");printf(" 1.sort number\n\n");printf(" 2.sort score\n\n");printf(" 3.sort num\n\n");printf(" 0.return to menu\n\n");printf(" please select your choice:");scanf("%d",&choice);switch(choice){case 1: sort_number();break;case 2: sort_score();break;case 3: sort_num();break;case 0: break;}}while(choice!=0);}main(){int choice;sum=read_message();bioskey(0);printf("press any key to continue:\n");getch();do{system("cls");printf("\n\n\n ************** student manage system **************\n\n");printf(" 1.input message\n\n");printf(" 2.output message\n\n");printf(" 3.renew message\n\n");printf(" 4.inquire message\n\n");printf(" 5.sort message\n\n");printf(" 6.count message\n\n");printf(" 0.exit the system\n\n");printf(" please select the choice");scanf("%d",&choice);switch(choice){case 1: input_message();break;case 2: output_message();break;case 3: renew_message();break;case 4: inquire_message();break;case 5: sort_message();break;case 6: count_message();break;case 0: break;}}while(choice!=0);save_message(sum);printf("\n- message has saved!-(file name:students.txt) \n");}。