河南科技大学C语言课程设计设计报告 含源代码
- 格式:docx
- 大小:15.89 KB
- 文档页数:10
c语言课程设计报告详细版一、课程目标知识目标:1. 掌握C语言的基本语法和结构,包括变量声明、数据类型、运算符、表达式和语句。
2. 理解并能运用控制结构,如顺序、选择和循环结构进行程序设计。
3. 学会使用数组、函数和指针进行程序开发,并能理解它们在解决复杂问题中的应用。
4. 熟悉基本的输入输出操作,文件操作以及简单的错误处理机制。
技能目标:1. 能够编写简单的C程序,解决实际问题,展现出逻辑思考和问题解决的能力。
2. 能够阅读和分析C程序代码,理解程序的结构和执行过程。
3. 能够使用调试工具检查和修正程序中的错误,提高程序的稳定性和可靠性。
4. 能够通过小组合作,完成一个综合性的项目,培养团队协作和项目管理的初步技能。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发探究计算机科学的热情,形成主动学习和终身学习的习惯。
2. 培养学生的创新思维和批判性思维,鼓励尝试不同的解决方案,勇于面对编程中的挑战。
3. 增强学生的信息意识和责任感,理解程序在现实生活中的应用和影响,认识到编程对社会发展的贡献。
4. 通过项目实践,培养学生的集体荣誉感,加强沟通能力,形成良好的团队合作精神。
课程性质分析:本课程为高年级的C语言程序设计,旨在通过项目驱动的教学方法,使学生在实践中掌握C语言的编程技能,并能够在日常生活和学习中应用。
学生特点分析:学生具备一定的逻辑思维能力,对计算机编程有一定兴趣,但个体差异较大,需要针对不同层次的学生设计不同难度和类型的教学活动。
教学要求:1. 结合实际案例进行教学,强调理论知识与实践操作的结合。
2. 注重培养学生的实际编程能力和问题解决能力,鼓励学生自主探索和协作学习。
3. 通过形成性评价和总结性评价相结合的方式,全面评估学生的学习成果。
二、教学内容1. C语言基础- 变量与数据类型- 运算符与表达式- 输入输出函数- 顺序结构程序设计2. 控制结构- 选择结构(if-else)- 循环结构(for、while、do-while)3. 函数与数组- 函数定义与调用- 数组的使用- 二维数组4. 指针与字符串- 指针的概念与使用- 指针与数组- 字符串处理函数5. 文件操作与错误处理- 文件的打开与关闭- 文件的读写操作- 简单错误处理6. 综合项目实践- 项目需求分析- 功能模块划分- 编程实现与调试- 项目展示与评价教学内容安排与进度:第一周:C语言基础第二周:控制结构第三周:函数与数组第四周:指针与字符串第五周:文件操作与错误处理第六周至第八周:综合项目实践教材章节关联:《C程序设计》第一章至第五章,涵盖课程教学内容中的所有知识点,为综合项目实践打下基础。
《程序设计实践实验报告》姓名学号班级教师开设学期2015-2016学年第3学期开设时间2016.6.27—2016.7.15报告日期2016.7.3评分计算机与信息工程学院目录1.题目(黑体二号加粗) (1)1.1问题描述及要求(黑体四号加粗,1.15倍行距) (1)1.2总体设计 (1)1.3 详细设计 (1)1.4 运行结果截图 (7)1.5源程序 (12)2.日志 (23)1.题目(黑体二号加粗)1.1问题描述及要求(黑体四号加粗,1.15倍行距)学生基本信息输入、输出、插入、删除、排序、查询、数据保存及打开。
1.2总体设计系统功能实现流程图11.3 详细设计1.3.1 函数设计:1.检查重复(学号):能:将输入的学号与文件中已存在的学号信息进行比对,若出现重复则提醒用户输入错误,重新输入。
2.记录数据组数函数:用全局变量记录所有数据的组数,通过对文件的一个个读取来给全局变量赋值。
3.主函数:建立输出界面模板,利用switch-case函数,通过输入的数调用相应的函数来实现所要的功能。
1.3.2 系统功能实现:1.输入函数:建立一个二进制文件,打开,给全局变量赋值确定要输入的组数。
输入学号,判断是否正确,再判断是否重复,若不满足条件则用goto语句返回,满足则通过循环边输入数据边保存数据,关闭文件。
系统功能具体实现图 12.输出函数:打开文件,输出模板,用循环输出文件里保存的数据。
系统功能具体实现图 23.成绩查询:打开文件,输入所要查询的学号,通过循环将输入的学号和文件里的学号一个个比较,若文件里有该学生的数据,则从文件数据里找出该学生数据并输出,否则无输出。
系统功能具体实现图 34.数据排序:打开文件,用循环先将原来的数据全部输出,然后再根据平均成绩作为比较,用冒泡法进行排序,用循环将排序后的数据边保存边输出。
系统功能具体实现图 45.修改数据:输入要修改的学号,用循环找出相对应的一组数据,若找到,则输出这组数据,否则报错并跳出。
XX学院C语言课程设计报告课程名称: C语言课程设计课程编号:报告题目:学生姓名: 学号:专业成绩: 任课教师:评阅日期:C语言课程设计报告一、 C语言课程设计的目的C语言的教学是学生根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
具体来说:1.进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、课程设计报告正文(1)课程设计题目的原文;假定民航机场共有n个航班:航班号、起始站、终点站、飞机号、飞机时间、乘员定额、余票量。
试设计一民航订票系统,使之能提供下列服务:航班信息录入功能(文件保存)完成航班信息浏览功能;查询航线(至少一种查询方式)。
(2)题目的分析(需求分析);任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中)浏览:航班信息浏览功能需要提供显示操作;查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选择菜单以实现功能选择。
要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、预售票总数、已售票数。
(3)整体设计与模块划分;根据需求分析,该程序可分为以下四大模块:(4)代码设计;包括——各功能模块的流程图;重要模块中关键部分的代码分析;关键函数的算法设计和分析;等等;A.主函数(1)分析:主函数的功能比较简单,形式比较简洁,主要功能为:在系统中没有程序所要的文件时,为程序建立一个所许的文件;调用菜单函数。
XX学院C语言课程设计报告课程名称: C语言课程设计课程编号:报告题目:学生姓名: 学号:专业成绩: 任课教师:评阅日期:C语言课程设计报告一、 C语言课程设计的目的C语言的教学是学生根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
具体来说:1.进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、课程设计报告正文(1)课程设计题目的原文;假定民航机场共有n个航班:航班号、起始站、终点站、飞机号、飞机时间、乘员定额、余票量。
试设计一民航订票系统,使之能提供下列服务:航班信息录入功能(文件保存)完成航班信息浏览功能;查询航线(至少一种查询方式)。
(2)题目的分析(需求分析);任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中)浏览:航班信息浏览功能需要提供显示操作;查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选择菜单以实现功能选择。
要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、预售票总数、已售票数。
(3)整体设计与模块划分;根据需求分析,该程序可分为以下四大模块:(4)代码设计;包括——各功能模块的流程图;重要模块中关键部分的代码分析;关键函数的算法设计和分析;等等;A.主函数(1)分析:主函数的功能比较简单,形式比较简洁,主要功能为:在系统中没有程序所要的文件时,为程序建立一个所许的文件;调用菜单函数。
C语言课程设计报告-1012一、实验目的C语言是一种编程灵活,特色鲜明的程序设计语言。
C语言除了学习必须的基本知识,如概念,方法和语法规则之外,更重要的是进行实训,以提高学习者的动手和编程能力,这是学习语言的最终目的。
结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《高级语言程序设计任务书》,以在实训过程中给学生提供帮助。
达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能; 2.让学生扎实掌握C程序设计语言的相关知识;3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。
二、设计要求根据实验内容的要求自由选定题目。
编写程序要求遵循如下基本要求: , 模块化程序设计, 锯齿型书写格式, 必须上机调试通过2.1分屏处理数据系统随机产生1000个数,并分屏显示(每行显示10个数字,每页显示10行),而且在每一屏的下方显示本屏中数据的最大值、最小值和平均值。
提示:循环显示,在分屏点上输出press an y key to continue…,通过getch()函数让用户以按回车键的方式进入下一屏。
利用随机函数产生1000个随机数,每次屏幕上显示100个随机数,分十次显示,通过按回车键的方式进入下一屏。
输入数据类型是整型,格式是%d,每页100个数字,最大数字是100.3开始随机函数产生100个整数并打印比较得出该页最大值和最小值,并计算出平均值在下方打印出最大值,最小值和平均值否循环次数>10是结束42.2掷骰子游戏两人玩骰子,游戏规则如下:1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。
2) 将每人每次的分值累加计分3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。
《C语言程序设计》课程设计报告(2011— 2012学年第 1 学期)专业:计算机科学与技术班级:姓名学号:指导教师:成绩:计算机科学与技术系2011 年12月31日目录一、课程设计的目的与要求 (3)二、方案实现与调试 (3)2.1 掷骰子游戏 (3)2.2 汽车加油 (6)2.3 大优惠 (8)2.4 金币 (9)2.5小型通讯录设计 (12)三、课程设计分析与总结 (14)附录程序清单 (14)一、课程设计的目的与要求(含设计指标)(1)实验目的C语言是一种编程灵活,特色鲜明的程序设计语言。
C语言除了学习必须的基本知识,如概念,方法和语法规则之外,更重要的是进行实训,以提高学习者的动手和编程能力,这是学习语言的最终目的。
结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。
达到如下目的:1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;2.让学生扎实掌握C程序设计语言的相关知识;3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。
(2)设计要求根据实验内容的要求自由选定题目。
编写程序要求遵循如下基本要求:●模块化程序设计●锯齿型书写格式●必须上机调试通过二、方案实现与调试2.1掷骰子游戏•2.1.1 题目内容的描述两人玩骰子,游戏规则如下:1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。
2) 将每人每次的分值累加计分3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。
4) 结束条件:当双方都掷10次或经过5次后一方累计分数为另一方的两倍。
最后显示双方分数并判定优胜者。
•2.1.2输入数据类型、格式和内容限制和输出数据的说明输入数据类型:整型数格式:srand(time(0));输入数=rand()%6+1;内容限制:产生最多十次随机数输出数据说明:掷骰子的获胜者•2.1.3主要模块的算法描述2.1.4调试过程及实验结果出现的问题:每次循环产生的随机数相同。
一:系统功能基本功能:图书的录入,删除,查找,和导入导出等。
图书属性:书号,书名,第一作者,版次,出版年等。
菜单功能:1.Input Records(输入若干条记录)从键盘一次输入一本书的信息,存放到结构体数组中,然后显示。
提示信息,确认是否输入下一条记录。
2.Display All Records(显示所有记录)按顺序显示所有记录,每屏显示10条记录,按<Enter>键继续显示下一屏。
3.Delete a Record(按书名查找,删除一本书)输入待删除书的书名,显示该书名的所有书目,提示输入待删除书目的书号,提示是否删除,确认后,删除该书。
4.Sort(排序)以书名为升序排列数组5.Insert a record(插入一条记录)以书名为序排列的数组中插入一条记录,插入后,数组仍然有序。
输出插入成功后的信息。
6.Query(查找并显示一个记录)输入书名,查找并显示包含该书名的所有图书信息7.Add Records from a Text File(从文件读入图书信息到结构体数组中)用户可事先建立一个文本文件Dictory.txt。
存放所有图书信息,文件格式如下:21182 高等数学刘浩荣 5 同济大学出版社 20137300 物理化学王德明 2 化学工业出版社 2015 8.Write to a Text File将数组中的全部记录写入文件Records.txt中,要求格式与Dictory.txt相同。
0.Quit(退出图书管理系统)新增加菜单功能:9.Change a record修改某一条记录的值a.Menu显示菜单b.Clear Screen清屏c.Pause按暂停,按任意键继续二:数据结构Typedef struct{char ISBN[10];//书号char book[30];//书名char author[20];//作者Int edition;//版本号char press[50];//出版社名int year;//出版年}Bookinfo;三:函数调用关系四:主要算法及实现插入算法排序算法五:源程序(含注释)#include<stdio.h>#include<string.h>#include<stdlib.h>#define NUM 100typedef struct //定义结构体数组{char ISBN[10]; //书号char book[30]; //书名char author[20]; //作者int edition; //版本号char press[50]; //出版社名int year; //出版年}Bookinfo;int Input(Bookinfo dictList[],int n) //从键盘输入数据,存入结构体数组dictList{char c1,c2;do{c1=getchar();printf("Please input ISBN:\n");gets(dictList[n].ISBN);printf("Please input book:\n");gets(dictList[n].book);printf("Please input author:\n");gets(dictList[n].author);printf("Please input press:\n");gets(dictList[n].press);printf("Please input edition:\n");scanf("%d",&dictList[n].edition); printf("Please input year:\n");scanf("%d",&dictList[n].year);n+=1;printf("是否输入下一条?确认(y)|取消(n)\n");//提示信息c1=getchar();}while((c2=getchar())=='y');return(n); //返回值为新的记录数量}void Display(Bookinfo dictList[],int n) //显示所有记录,每10个暂停一次,输入回车继续显示{int i=0,j;char input,c;printf("%-10s%-23s%-18s%-8s%-15s%-4s\n","ISBN","book","author","edition"," press","year");c=getchar();do{j=10; //每10个循环一次do{printf("%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book, dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year) ;i++;j--;}while(j && i<n);if(i==n) break; //若数据全部输出,则跳出循环,scanf("%c",&input);}while(input=='\n'); //输入回车,执行循环}int delete(Bookinfo dictList[],int n,char *ISBN) //只删除书号为ISBN的第一条记录{int i,j;for(i=0;i<n;i++){if(!strcmp(dictList[i].ISBN,ISBN)) //strcmp()函数判断两个字符串是否相等{for(j=i;j<n-1;j++)dictList[j]=dictList[j+1]; //将目标值右面的数据全部左移一位return(n-1);//删除后记录数减少1}}return(n);}int Delete_a_record(Bookinfo dictList[],int n)//删除某一条记录{int i,j=0;char book[30],isbn[10],s,c;c=getchar();printf("请输入待删除的书目的书名\n");gets(book); //获取书名字符串printf("%-10s%-23s%-18s%-8s%-15s%-4s\n","ISBN","book","author","edition"," press","year");for(i=0;i<n;i++){if(!strcmp(dictList[i].book,book)){ //找到同名的数据,并输出printf("%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book, dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year);j++;}}if(j>0){printf("请输入待删除的书目的书号\n");gets(isbn); //获取要删除的数据的书号printf("确实要删除该记录?是(y)|否(n)\n"); //提示删除if((s=getchar())=='y'){for(i=0;i<n;i++){if(!strcmp(dictList[i].ISBN,isbn)){//调用delete函数删除printf("删除成功!\n");return(delete(dictList,n,dictList[i].ISBN)); }}printf("未找到待删除记录!\n");//删除成功后记录减1}else{printf("已取消删除!\n"); //取消删除后记录数不变return n;}}elseprintf("未找到待删除记录!\n");}void Sort_by_name(Bookinfo dictList[],int n)//选择法按书名升序排列{int i,j,p;Bookinfo t;for(i = 0;i<n-1;i++){p=i;for(j=i+1;j<n;j++)if(strcmp(dictList[p].book,dictList[j].book)>0)p=j;if(p!=i){t = dictList[p];dictList[p] = dictList[i];dictList[i] = t;}}}int insert(Bookinfo dictList[],int n,Bookinfo *s)//按书名顺序插入记录{int i,j;Sort_by_name(dictList,n);for(i=0;i<n-1;i++){if(strcmp((*s).book,dictList[0].book)<0){for(j=n;j>0;j--)dictList[j]=dictList[j-1];dictList[0]=*s;return(n+1);}else if(strcmp((*s).book,dictList[i].book)>=0 && strcmp((*s).book,dictList[i+1].book)<=0){for(j=n;j>i+1;j--)dictList[j]=dictList[j-1];dictList[i+1]=*s; //放在i和i+1之间或者放在最后一个return(n+1);}}dictList[n]=*s;return(n+1);}int Insert_a_record(Bookinfo dictList[],int n)//出现问题,调用该函数时总是全部显示记录?{int k;char c;Bookinfo s;//输入数据c=getchar();printf("Please input ISBN:\n");gets(s.ISBN);printf("Please input book:\n");gets(s.book);printf("Please input author:\n");gets(s.author);printf("Please input press:\n");gets(s.press);printf("Please input edition:\n");scanf("%d",&s.edition);printf("Please input year:\n");scanf("%d",&s.year);k=insert(dictList,n,&s); //根据insert的返回值是否大于n判断插入成功与否 if(k>n){printf("插入成功!\n");return(k);}else{printf("插入失败!\n");return(n);}}int Query(Bookinfo dictList[],int n,char *book)//查询并显示书名为book的记录{int i,count=0;printf("%-10s%-23s%-18s%-8s%-15s%-4s\n","ISBN","book","author","edition"," press","year");for(i=0;i<n;i++){if(!strcmp(dictList[i].book,book)){printf("%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book, dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year) ;count++;}}if(count)return count; //查询成功,返回个数else return -1; //未找到,返回-1}void Query_a_record(Bookinfo dictList[],int n){int i;char book[30],c;c=getchar();printf("请输入待查找的书名\n"); //输入书名gets(book);if((i=Query(dictList,n,book))>0) printf("共找到%d条记录\n",i); //若查到数据,Query函数的返回值为正数else printf("未找到所查找的记录\n");}int AddfromText(Bookinfo dictList[],int n,char *filename){int i;Bookinfo s;FILE *p;p=fopen(filename,"r");fscanf(p,"%d",&i); //先读取文件第一行的记录数while(i--){fscanf(p,"%s%s%s%d%s%d\n",s.ISBN,s.book,s.author,&s.edition,s.press,&s.yea r); //读取记录的具体值n=insert(dictList,n,&s); //插入到dictList数组中}fclose(p);printf("读取成功!\n");return(n);}void WritetoText(Bookinfo dictList[],int n,char *filename){FILE *p2;int i;p2=fopen(filename,"w");for(i=0;i<n;i++) //按格式写入文件fprintf(p2,"%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].b ook,dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].y ear);fclose(p2);printf("写入成功!\n");}void Display_main_menu() //显示菜单,另外添加了三个功能,显示菜单,清屏,暂停{printf("------------------------------\n1.Input records\n2.Display All Records\n3.Delete a Record\n4.sort\n5.Insert a Record\n6.Query\n7.Add Records from a Text File\n8.Write to a Text File\n9.Change a record\n0.Quit\n\nTIPS\ta.Menu\n\tb.ClearScreen\n\tc.Pause\n------------------------------\nGive your choice:\n"); }void Change_a_record(Bookinfo dictList[],int n)//修改某一记录的值{int i;char book[30],ISBN[30],c;c=getchar();printf("请输入待修改图书的书名\n");gets(book);if((i=Query(dictList,n,book))>0)//确认找到待修改记录{printf("共找到%d条记录\n请输入待修改图书的书号\n",i); gets(ISBN);for(i=0;i<n;i++){if(!strcmp(dictList[i].ISBN,ISBN)){printf("请更新书号为%s的图书数据\n",ISBN);//开始修改printf("Please input ISBN:\n");gets(dictList[i].ISBN);printf("Please input book:\n");gets(dictList[i].book);printf("Please input author:\n");gets(dictList[i].author);printf("Please input press:\n");gets(dictList[i].press);printf("Please input edition:\n");scanf("%d",&dictList[i].edition);printf("Please input year:\n");scanf("%d",&dictList[i].year);printf("修改完成!\n");}}}else printf("未找到相关记录\n");}main(){static int n=12;char filename1[30],filename2[30],c;//创建初始结构体数组,应不少于十个Bookinfo books[NUM]={{"97814842","python Language","gnus Lie land",2,"Berkeley",2014},{"97871190","history of Chinese","Goa qua",2,"Beijing",2009},{"97814129","public communication","Ronald E.Rice",3,"London",2013},{"97836422","cultural composition","Yang Pan",2,"pardon",2012},{"97801240","analyzing the social","Jennifer beck",1,"Walt",2013},{"78016958","recored servicing","Scottish Qua",1,"Chinese",2004},{"01354851","management guide","Ferdinand K. Levy",1,"Englewood",1969}, {"1096-424","macroeconomics","Dusk ",2,"Gog",1977},{"04448649","competitive economics","Ki Hang Kim",2,"Amsterdam",1983}, {"08531419","guide to banking","Robin Pr",7,"London",1973},{"01311606","guide to banking","Jerry S.Rosen",2,"Englewood",1972},{"97875100","dirt pricing dynamic","Pamela La",1,"World book",2013}}; Display_main_menu(); //显示菜单while(c=getchar()) //持续获取输入,并用switch语句调用相应函数{switch(c){case '0':exit(1);break;case '1':n=Input(books,n);break;case '2':Display(books,n);break;case '3':n=Delete_a_record(books,n);break;case '4':Sort_by_name(books,n);break;case '5':n=Insert_a_record(books,n);break;case '6':Query_a_record(books,n);break;case '7':printf("请输入文件名\n");scanf("%s",filename1);n=AddfromText(books,n,filename1);break;case '8':printf("请输入文件名\n");scanf("%s",filename2);WritetoText(books,n,filename2); break;case '9':Change_a_record(books,n);break; case 'a':Display_main_menu();break;case 'b':system("cls");break;case 'c':system("pause");break;}}}六:程序执行(包含典型测试数据)------------------------------1.Input records2.Display All Records3.Delete a Record4.sort5.Insert a Record6.Query7.Add Records from a Text File8.Write to a Text File9.Change a record0.QuitTIPS a.Menub.Clear Screenc.Pause------------------------------Give your choice:→1Please input ISBN:→4296Please input book:→明朝那些事Please input author:→当年明月Please input press:→浙江出版社Please input edition:→2Please input year:→2011是否输入下一条?确认(y)|取消(n)→n→2ISBN book author edition press year 97814842 python Language gnus Lie land 2 Berkeley 2014 97871190 history of Chinese Goa qua 2 Beijing 2009 97814129 public communication Ronald E.Rice 3 London 2013 97836422 cultural composition Yang Pan 2 pardon 2012 97801240 analyzing the social Jennifer beck 1 Walt 2013 78016958 recored servicing Scottish Qua 1 Chinese 2004 01354851 management guide Ferdinand K. Levy 1 Englewood 1969 1096-424 macroeconomics Dusk 2 Gog 1977 04448649 competitive economics Ki Hang Kim 2 Amsterdam 1983 08531419 guide to banking Robin Pr 7 London 1973→<Enter>01311606 guide to banking Jerry S.Rosen 2 Englewood 1972 97875100 dirt pricing dynamic Pamela La 1 World book 2013 4296 明朝那些事当年明月 2 浙江出版社2011→3请输入待删除的书目的书名→明朝那些事ISBN book author edition press year 4296 明朝那些事当年明月 2 浙江出版社2011请输入待删除的书目的书号→4296确实要删除该记录?是(y)|否(n)→y删除成功!→4→2ISBN book author edition press year 97801240 analyzing the social Jennifer beck 1 Walt 2013 04448649 competitive economics Ki Hang Kim 2 Amsterdam 1983 97836422 cultural composition Yang Pan 2 pardon 2012 97875100 dirt pricing dynamic Pamela La 1 World book 2013 08531419 guide to banking Robin Pr 7 London 1973 01311606 guide to banking Jerry S.Rosen 2 Englewood 1972 97871190 history of Chinese Goa qua 2 Beijing 2009 1096-424 macroeconomics Dusk 2 Gog 1977 01354851 management guide Ferdinand K. Levy 1 Englewood 1969 97814129 public communication Ronald E.Rice 3 London 2013 →<Enter>97814842 python Language gnus Lie land 2 Berkeley 2014 78016958 recored servicing Scottish Qua 1 Chinese 2004 →5Please input ISBN:→84772281Please input book:→english learningPlease input author:→tomPlease input press:→AllaPlease input edition:→2Please input year:→2016插入成功!→6请输入待查找的书名→recored servicingISBN book author edition press year 78016958 recored servicing Scottish Qua 1 Chinese 2004 共找到1条记录→7请输入文件名→Dictory.txt读取成功!→2ISBN book author edition press year 97801240 analyzing the social Jennifer beck 1 Walt 2013 04448649 competitive economics Ki Hang Kim 2 Amsterdam 1983 97836422 cultural composition Yang Pan 2 pardon 2012 97875100 dirt pricing dynamic Pamela La 1 World book 2013 84772281 english learning tom 2 Alla 2016 08531419 guide to banking Robin Pr 7 London 1973 01311606 guide to banking Jerry S.Rosen 2 Englewood 1972 97871190 history of Chinese Goa qua 2 Beijing 2009 1096-424 macroeconomics Dusk 2 Gog 1977 01354851 management guide Ferdinand K. Levy 1 Englewood 1969 →<Enter>97814129 public communication Ronald E.Rice 3 London 2013 97814842 python Language gnus Lie land 2 Berkeley 2014 78016958 recored servicing Scottish Qua 1 Chinese 2004 1182 高等数学刘浩荣 5 同济大学出版社20137300 物理化学王德明 2 化学工业出版社2015→8请输入文件名→output.txt写入成功!→9请输入待修改图书的书名→物理化学ISBN book author edition press year 7300 物理化学王德明 2 3 2015共找到1条记录请输入待修改图书的书号→7300请更新书号为7300的图书数据Please input ISBN:→7300Please input book:→物理化学Please input author:→王德明Please input press:→化学工业出版社Please input edition:→3Please input year:→2016修改完成!→0Process returned 1 (0x1) execution time : 431.535 sPress any key to continue.。
c语言课程设计报告本文将从以下几个方面来介绍我的C语言课程设计报告:设计目的、设计方法、设计过程、设计结果以及结论。
设计目的本次C语言课程设计的目的是熟悉C语言的基本语法,掌握C 语言的编写方法,并通过设计一个小型的程序来将所学的知识应用到实际中,提高自己的编程水平。
设计方法首先,我阅读了C语言的基本语法,学习了控制流程语句、函数、数组、指针等等知识点。
紧接着,我参考了一些经典的C语言程序,比如“猜数字”、“汉诺塔”等等,学习了这些程序的设计思路。
然后,我选定了一个题目——一个简单的计算器程序,通过这个程序的设计,来练习并应用我所学的C语言知识。
设计过程首先,我在Dev-C++集成开发环境中创建了一个新项目,然后分别编写了程序的界面、输入模块、计算模块和输出模块。
程序的界面主要使用了C语言中的输出语句,将计算器的各个按钮、数字及对应的运算符输出到控制台窗口。
输入模块主要使用了C语言中的scanf函数,得到用户输入的数字和符号,并将其存储在相应的变量中。
计算模块则采用了C语言中的if-else语句,根据不同的符号执行相应的计算操作,最后将结果存储在一个变量中。
输出模块再次使用了输出语句,将计算结果输出到控制台窗口。
设计结果最终,我的计算器程序实现了加、减、乘、除四种基本运算,用户可以通过程序界面输入数字和符号,计算器程序会自动进行计算,并将结果输出到控制台窗口。
该程序易于操作,界面简洁明了,计算结果准确可靠,达到了我预期的效果。
结论通过这次C语言课程设计,我掌握了C语言的基本语法和编写方法,加深了对计算机编程的理解,提高了自己的编程水平。
同时,我也感受到了编程带来的乐趣和成就感,我将继续努力掌握更多的编程知识,在以后的学习和实践中取得更好的成绩。
C语言课程设计实习报告学生姓名:学生学号:所在班级:任课教师:课程成绩:1.题目需求(1)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。
选手的最后得分为:去掉一个最高分和一个最低分后其余8个数的平均值。
(2)同时对评委评分进行裁判,即在十个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分差距最大)的评委。
2.需求分析根据题目要求,由于数据间单,仅涉及到简单排序及转换,程序中应提供显示、输入、输出、排序等操作,同时还可以提供键盘式选择菜单实现功能选择。
3.总体设计这个系统可分为三个模块(见图 1 ),评分、对评委测评、退出。
其中主要功能是最终得分和对评委测评两个模块。
4.详细设计主函数比较简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块用菜单方式选择;另外,菜单部分也可以写成函数。
其流程图如图 2 所示。
[程序]}#include <stdio.h> #include <math.h> main () /*主函数*/{void V ote_score();/* 声明评分函数*/void BaW();/*声明对裁判测评函数*/int n,w;do{ puts("\t\t**************************MENU****************** *******\n\n");/*选择菜单*/puts("\t\t\t\t 1.V ote and the score ");/*对歌手评分*/puts("\t\t\t\t 2.Best and worest voter");/*对裁判测评*/puts("\t\t\t\t 0.Exit ");/*退出*/puts("\n\n\t\t****************************************************\n\n"); printf("Choice your number (0-2): [ ]\b\b");scanf(" %d",&n);if(n<0 || n>2)/*对选择的数字做判断*/{ w=1;getchar ();}else w=0;}while (w==1);/*选择功能*/switch(n){case 1 : V ote_score();break;case 2 : BaW();break;case 0 : exit(0);}}void V ote_score()/*评分函数*/{i nt a[10],b[10],i,j,k,B,n,w;f loat A;B=0;p rintf("input the content :\n");f or(i=0;i<10;i++)/*输入评选内容并求的评分之和*/ {b[i]=a[i];B=B+b[i];}for (i=0;i<9;i++)/*对评分按从小到大排序*/for(j=1;j<10;j++)if(b[i]>b[j]){k=b[i];b[i]=b[j];b[j]=k;}A=(B-b[0]-b[9])/8.0;/*舍去最低分和最高分求平均分*/ printf("The final score %f .\n",A);/*输出结果*/printf(“What do you what to do?”);printf("\t\t\n********************1.MENU**********\n\n ***********2.Exit *********\n\n");/*选择菜单*/ printf("\t\t\t Choice you number:[ ]\b\b");scanf(" %d",&n);if(n<1 || n>2)/*对选择的数字做判断*/{ w=1;getchar ();}else w=0;while(w==1);/*选择功能*/switch (n){case 1: main() ;break;/*返回主函数*/case 2: exit(0);/*退出*/}}#include <math.h>void BaW()/*对裁判测评函数*/{i nt a[10],b[10],i,j,k,B,n,w;f loat A,f,c[10],d[10];B=0;p rintf("input the content :\n");f or(i=0;i<10;i++)/*输入评选内容并求的评分之和*/ {b[i]=a[i];B=B+b[i];}for (i=0;i<9;i++)for(j=1;j<10;j++)if(b[i]>b[j]){k=b[i];b[i]=b[j];b[j]=k;}A=(B-b[0]-b[9])/8.0;for(i=0;i<10;i++)/*求得各评分与平均分之差的绝对值*/ {c[i]=fabs(a[i]-A);d[i]=c[i];}for(i=0;i<9;i++)/*对所求绝对值按从大到小排序*/for(j=1;j<10;j++){i f(d[i]<d[j]){}}for(i=0;i<10;i++)/*找出最公平评委*/if(c[i]==d[9])printf("The best voter's number is %d . \n",i);for(i=0;i<10;i++)/*找出最不公平评委*/if(c[i]==d[0])printf("The worst voter's number is %d .\n" ,i);printf(“What do you what to do?”);printf("\t\t\n********************1.MENU**********\n\n ***********2.Exit *********\n\n");/*菜单*/printf("\t\t\t Choice you number:[ ]\b\b"); scanf(" %d",&n);if(n<1 || n>2)/*对选择的数字做判断*/{ w=1;getchar ();}else w=0;while(w==1);/*选择功能*/switch (n){case 1: main() ;break;/*回主菜单*/case 2: exit(0);/*退出*/}5. 上机操作1.编译、链接和运行。
C++课程设计报告书(学生成绩管理系统)一、题目描述<用面向对象程序设计(OOP)方法实现一个简易的学生成绩管理系统,具备以下功能:1)用户注册2)用户登录3)成绩录入、修改、插入、删除4)成绩查询5)成绩简要统计6)图形界面、全英文注释>二、源代码(代码超过20页时附主要源代码)#include<iostream>#include<iomanip>#include<conio.h>#include<fstream>#include<string>using namespace std;class Teacher_T //教师类{public:void Display();//进入界面void Register();//注册void Login();//登录};Teacher_T Tea1; //生成教师类对象class Student_T//学生类{private:string name,sex;int num;float math,eng,cpt,pol; //成绩public:void Display1();void Register1();void Login1();void Seache();};Student_T Stu1;//生成对象class T //教师操作类{public:void choose();//教师操作主页面void T_input();//输入学生信息void T_insert();//插入学生信息void T_modification();//修改学生信息void T_grade();//实现成绩的统计void T_cancel();//删除学生信息void T_seache();//查询学生信息private:int a;//控制下面若干函数的分支string name,sex;int num;float math,eng,cpt,pol; //成绩};T t1; //生成类void T::choose() //教师主操作界面{ system("cls");cout<<"教师综合系统>>"<<endl;cout<<endl<<endl<<endl<<endl;do{cout<<" "<<endl;cout<<" "<<endl;cout<<" *************☇⊙●★☆☇**************** "<<endl;cout<<" * * "<<endl;cout<<" * 1 输入成绩 * "<<endl;cout<<" * 2 插入成绩 * "<<endl;cout<<" * 3 修改成绩 * "<<endl;cout<<" * 4 删除成绩 * "<<endl; cout<<" * 5 统计成绩 * "<<endl;cout<<" * 6 查询成绩 * "<<endl;cout<<" * 7 退出系统 * "<<endl;cout<<" * * "<<endl;cout<<" *************☇⊙●★☆☇**************** "<<endl<<endl;cout<<" 请输入需要的数字:";cin>>a;switch(a){case 1:t1.T_input();break; //当选择输入时进入T_input()case 2:t1.T_insert();break; //当选择插入时进入T_insert()case 3:t1.T_modification();break; //当选择修改时进入T_modification()case 4:t1.T_cancel();break; //当选择删除时进入T_cancel()case 5:t1.T_grade();break;case 6:t1.T_seache();case 7:exit(0); //退出系统}}while(a!=8);}void T::T_input() //输入函数{ system("cls");cout<<"教师综合系统>>输入"<<endl;cout<<endl<<endl<<endl<<endl;do{cout<<" **输入学生成绩**"<<endl<<endl<<endl;cout<<" 请输入学生数据"<<endl;cout<<" 请输入学生姓名:";cin>>name; //输入姓名cout<<" 请输入学生学号:";cin>>num; //输入学号cout<<" 请输入学生性别(m/f):";cin>>sex; //输入性别cout<<" 请输入学生成绩:"<<endl;cout<<" 高数成绩:";cin>>math; //输入高数成绩cout<<" 大英成绩:";cin>>eng; //输入大英成绩cout<<" 电脑成绩:";cin>>cpt; //输入电脑成绩cout<<" 政治成绩:";cin>>pol; //输入政治成绩cout<<" *************************************"<<endl;cout<<" 1 确定"<<endl;cout<<" 2 取消"<<endl;cout<<" *************************************"<<endl;cout<<" "<<endl;cout<<" 请选择数字:";cin>>a;switch(a){case 1:{ //存文件ofstream outfile("Data.txt",ios::app);outfile<<name<<"\t"<<num<<"\t"<<sex<<"\t"<<math<<"\t"<<eng<<"\t"<<cpt<<"\t"<<pol<<"\t";outfile.close();choose(); };break;case 2:choose();break;}}while(a!=1);}void T::T_insert() //教师操作插入功能{ system("cls");cout<<"教师综合系统>>插入"<<endl;cout<<endl<<endl<<endl<<endl;int c;do{cout<<" **输入学生成绩**"<<endl<<endl<<endl;cout<<" 请输入学生数据"<<endl;cout<<" 请输入学生姓名:";cin>>name; //输入姓名cout<<" 请输入学生学号:";cin>>num; //输入学号cout<<" 请输入学生性别(m/f):";cin>>sex; //输入性别cout<<" 请输入学生成绩:"<<endl;cout<<" 高数成绩:";cin>>math; //输入高数成绩cout<<" 大英成绩:";cin>>eng; //输入大英成绩cout<<" 电脑成绩:";cin>>cpt; //输入电脑成绩cout<<" 政治成绩:";cin>>pol; //输入政治成绩cout<<" *************************************"<<endl;cout<<" 1 确定"<<endl;cout<<" 2 取消"<<endl;cout<<" *************************************"<<endl;cout<<" "<<endl;cout<<" 请选择数字:";cin>>c;switch(c){case 1:{ofstream outfile("Data.txt",ios::app);outfile<<name<<"\t"<<num<<"\t"<<sex<<"\t"<<math<<"\t"<<eng<<"\t"<<cpt<<"\t"<<pol<<"\t";outfile.close();choose();};break;case 2:choose();break;}}while(c!=1);}void T::T_modification() //教师操作修改功能{ system("cls");cout<<"教师综合系统>>修改"<<endl;cout<<endl<<endl<<endl<<endl;string num1;string name2,num2,sex2,math2,eng2,cpt2,pol2;string math3,eng3,cpt3,pol3;cout<<" ****************************************"<<endl;cout<<" ▲修改学生信息▲"<<endl;cout<<" ****************************************"<<endl;cout<<" "<<endl;cout<<" 请输入学号:";cin>>num1; //输入要学生的学号string A[50][7];ifstream infile("Data.txt",ios::binary);for(int i=0;i<50;i++) //读入学生数据{infile>>A[i][0]>>A[i][1]>>A[i][2]>>A[i][3]>>A[i][4]>>A[i][5]>>A[i][6];}infile.close();for(i=0;i<50;i++) //暂存读出的数据{name2=A[i][0];num2=A[i][1];sex2=A[i][2];math2=A[i][3];eng2=A[i][4];cpt2=A[i][5];pol2=A[i][6];if(num1==A[i][1]) A[i][1]="0"; //注销该学生信息}cout<<"请输入高数成绩:"<<endl;//修改高数cin>>math2;math3=math2;cout<<"请输入大英成绩:"<<endl;//修改大英cin>>eng2;eng3=eng2;cout<<"请输入电脑成绩:"<<endl;//修改电脑cin>>cpt2;cpt3=cpt2;cout<<"请输入政治成绩:"<<endl;//修改政治cin>>pol2;pol3=pol2;ofstream outfile("Data.txt",ios::app);outfile<<name2<<"\t"<<num2<<"\t"<<sex2<<"\t"<<math3<<"\t"<<eng3<<"\t"<<cpt3<<"\t"<<pol3<<"\t";//重新存入学生信息outfile.close();cout<<"已修改";getch();choose();}void T::T_cancel() //教师操作的删除功能{ system("cls");cout<<"教师综合系统>>注册"<<endl;cout<<endl<<endl<<endl<<endl;int d; //控制下面的循环string num1;char a='0',b='0';cout<<" ****************************************"<<endl;cout<<" ▲删除学生信息▲"<<endl;cout<<" ****************************************"<<endl;cout<<" "<<endl;cout<<" 请输入学号:";//输入删除学生的学号cin>>num1;cout<<" ***********************"<<endl;cout<<" 1 确定"<<endl;cout<<" 2 取消"<<endl; cout<<" ***********************"<<endl;cout<<" "<<endl;cout<<" 请选择数字:";cin>>d;switch(d){case 1:{ //删除功能函数system("cls");string A[50][7]; //存放读入的学生数据ifstream infile("Data.txt",ios::binary);for(int i=0;i<50;i++) //读入全部数据{infile>>A[i][0]>>A[i][1]>>A[i][2]>>A[i][3]>>A[i][4]>>A[i][5]>>A[i][6];}infile.close();for(i=0;i<50;i++) if(num1==A[i][1]) A[i][1]="0";//注销原学生信息ofstream Ofile("Data.txt",ios::out);//将原文件清空Ofile.close();ofstream outfile("Data.txt",ios::app);for(i=0;i<30;i++){if(A[i][1]!="0") //重新保存合法的用户信息outfile<<A[i][0]<<"\t"<<A[i][1]<<"\t"<<A[i][2]<<"\t"<<A[i][3]<<"\t"<<A[i][4]<<"\t"<<A[i][5]<<"\t"<<A[i][6]<<"\t";}outfile.close();cout<<"已删除";getch();choose();};break;case 2:choose(); //返回主界面}}void T::T_seache(){ system("cls");cout<<"教师综合系统>>"<<endl;cout<<endl<<endl<<endl<<endl;int number;bool pd;cout<<"请输入学号:";cin>>number;ifstream infile("Data.txt",ios::binary);infile>>name>>num>>sex>>math>>eng>>cpt>>pol;while(infile.good()){ if (num==number){cout<<" 姓名 "<<name<<" 座号"<<num<<" 性别 "<<sex;cout<<" 数学 "<<math<<" 英语 "<<eng<<" 电脑 "<<cpt<<" 政治 "<<pol<<endl;cout<<" 任意键返回上一级 ";pd=false;getch();break;}else{infile>>name>>num>>sex>>math>>eng>>cpt>>pol;pd=true;}}if(pd){cout<<"不存在该学号成绩,任意键返回上一级";getch();}choose();infile.close();}void T::T_grade()//下面是姐的{ system("cls");cout<<"教师综合系统>>注册"<<endl;cout<<endl<<endl<<endl<<endl;int s,num1;float aver;bool pd;cout<<" 请输入统计的学生学号:";cin>>num1;ifstream infile("Data.txt",ios::binary);while(infile.good()){if(num==num1){cout<<" 姓名: "<<name<<" 座号:"<<num<<" 性别:"<<sex;cout<<" 数学:"<<math<<" 英语:"<<eng<<" 电脑:"<<cpt<<" 政治:"<<pol<<endl;s=math+eng+cpt+pol;//总成绩存放在s中aver=s/4;//平均成绩存放在aver中cout<<"总成绩是:"<<s<<"平均成绩是:"<<aver<<endl;if(math>=60&&eng>=60&&cpt>=60&&pol>=60)cout<<"没有不及格科目!"<<endl;else if(math<60&&eng>=60&&cpt>=60&&pol>=60)cout<<"不及格科目:高数。
设计报告一、综合训练的任务及要求任务:C语言综合训练是为了提高学生综合使用本学期我们所学的C语言知识编写大型程序的能力,了解大型程序设计的开发步骤,以上机为主,每个学生按照要求使用C 语言设计一个大型程序,并提供相关的设计文档和源程序,从网站提交。
要求:已知在磁盘上有一个文本文件(),此文件存放了一组学生的成绩信息,按照如下格式存放:1001 stuname1 891002 stuname2 781003 stuname3 60……1100 stuname100 87请按照如下要求编写程序:a.定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;b.将文本文件的内容读入到结构体数组中;c.显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示);d.显示平均成绩、高于、低于和等于平均成绩的人数;e.显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百比分;f.将以上显示的信息存放到文件中。
二、程序实现的功能、算法描述和程序实现的流程图程序的功能:a.将指定文本文件的内容读入到程序定义的结构体数组中;b.显示成绩最高的人的学号、姓名和成绩(如果有相同的人全部显示);c.显示平均成绩、高于、低于和等于平均成绩的人数;d.显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百分比;e.将以上显示的信息存放到指定文件中。
算法描述:S1:定义一个结构体类型struct student数组student[100],结构体类型struct student含有int num、char name[20]、float score三个域;定义全局整型变量i,score_max,sum,more_than,equal,less_than,A,B,C,D,E;定义全局浮点型变量aveS2:以”r”的方式打开文本文件S3:将文本文件的内容读入到结构体数组student[100]中S4:score_max=student[0].scoreS5:i=1S6:若student[i].score>score_max执行S7;否则,执行S8S7:score_max=student[i].scoreS8:i=i+1S9:若i<100,返回S6;否则,执行S10S10:输出所有student[i].score=score_max的student[i]的成员student[i].num、student[i].name和student[i].score到屏幕;以”w”的方式打开文本文件,输出所有student[i].score=score_max的student[i]的成员student[i].num、student[i].name和student[i].score到文本文件,然后关闭文本文件S11:sum=0S12:i=0S13:sum=sum+student[i].scoreS14:i=i+1S15:若i<100,返回S13;否则,执行S16S16:ave=sum/100S17:输出ave到屏幕;以”a”的方式打开文本文件,输出ave到文本文件,然后关闭文本文件S18:i=0S19:more_than=0S20:equal=0S21:less_than=0S22:若student[i].score>ave执行S23;否则,执行S24S23:more_than=more_than+1,执行S27S24:若student[i].score=ave执行S25;否则,执行S26S25:equal=equal+1,执行S27S26:less_than=less_than+1S27:i=i+1S28:若i<100,返回S22;否则,执行S29S29:输出more_than、equal、less_than到屏幕;以”a”的方式打开文本文件,输出more_than、equal、less_than到文本文件,然后关闭文本文件S30:i=0S31:A=0S32:B=0S33:C=0S34:D=0S35:E=0S36:若90≤student[i].score≤100执行S37;否则,执行S38S37:A=A+1,执行S46S38:若80≤student[i].score≤89执行S39;否则,执行S40S39:B=B+1,执行S46S40:若70≤student[i].score≤79执行S41;否则,执行S42S41:C=C+1,执行S46S42:若60≤student[i].score≤69执行S43;否则,执行S44S43:D=D+1,执行S46S44:若0≤student[i].score≤59执行S45S45:E=E+1S46:i=i+1S47:若i<100,返回S36;否则,执行S48S48:输出A,B,C,D,E和A/100*100“%”, B/100*100“%”,C/100*100“%”, D/100*100“%”, E/100*100“%”到屏幕;以”a”的方式打开文本文件,输出A,B,C,D,E和A/100*100“%”, B/100*100“%”,C/100*100“%”, D/100*100“%”, E/100*100“%”到文本文件,然后关闭文本文件S49:关闭文本文件,,然后算法结束流程图:三、程序的调试调试过程中遇到fread函数使用错误,导致文件读取失败。
后改用fscanf函数,解决了文件读取问题。
变量的运用出现了一些问题。
最后把多个函数需要用到的需要保存原值的变量设为了全局变量。
四、课程设计总结与体会通过这次课程设计,我对循环结构控制、函数调用、结构体、文件操作更加熟悉,对C语言程序设计有了更加深入的认识,锻炼了编写大型程序的能力,了解了大型程序设计的开发步骤。
C语言主体应是由函数调用构成的,应尽可能把相对独立的功能单独用一个函数来编写,这样可以提高程序的可读性,也能降低编写大型程序的难度,减少编程出错的可能性。
源代码:#include<>struct student{int num;char name[11];int score;}student[100];int i,score_max,sum,more_than,equal,less_than,A,B,C,D,E;float ave;void max(){void save_max();score_max=student[0].score;for(i=0;i<100;i++)if(student[i].score>score_max)score_max=student[i].score;printf("取得最高成绩的学生的信息:\n");for(i=0;i<100;i++)if(student[i].score==score_max){printf("%d\t%s\t%d\n",student[i].num,student[i].name,student[i].score);}printf("\n");save_max();}void save_max(){FILE *fp2;fp2=fopen("","w");fputs("取得最高成绩的学生的信息:\n",fp2);for(i=0;i<100;i++)if(student[i].score==score_max){fprintf(fp2,"%d\t%s\t%d\n",student[i].num,student[i].name,student[i].scor e);}fclose(fp2);}void average(){void save_average();sum=0;for(i=0;i<100;i++)sum+=student[i].score;ave=sum/;printf("平均成绩为:%f\n\n",ave);save_average();}void save_average(){FILE *fp2;fp2=fopen("","a");fputs("\n平均成绩为:",fp2);fprintf(fp2,"%f\n\n",ave);fclose(fp2);}void average_compare(){void save_average_compare();more_than=0;equal=0;less_than=0;for(i=0;i<100;i++){if(student[i].score>ave)more_than++;else if(student[i].score==ave)equal++;else less_than++;}printf("高于平均成绩的学生人数:%d\n",more_than);printf("等于于平均成绩的学生人数:%d\n",equal);printf("低于平均成绩的学生人数:%d\n\n",less_than);save_average_compare();}void save_average_compare(){FILE *fp2;fp2=fopen("","a");fprintf(fp2,"高于平均成绩的学生人数:%d\n",more_than);fprintf(fp2,"等于平均成绩的学生人数:%d\n",equal);fprintf(fp2,"低于平均成绩的学生人数:%d\n\n",less_than);fclose(fp2);}void rank(){void save_rank();A=B=C=D=E=0;for(i=0;i<100;i++){if((student[i].score>=90)&&(student[i].score<=100))A++;else if((student[i].score>=80)&&(student[i].score<=89)) B++;else if((student[i].score>=70)&&(student[i].score<=79)) C++;else if((student[i].score>=60)&&(student[i].score<=69)) D++;else E++;}printf("取得“优秀”的学生人数:%d\t%.1f%%\n",A,A/*100);printf("取得“良好”的学生人数:%d\t%.1f%%\n",B,B/*100);printf("取得“中等”的学生人数:%d\t%.1f%%\n",C,C/*100);printf("取得“及格”的学生人数:%d\t%.1f%%\n",D,D/*100);printf("取得“不及格”的学生人数:%d\t%.1f%%\n",E,E/*100);save_rank();}void save_rank(){FILE *fp2;fp2=fopen("","a");fprintf(fp2,"取得“优秀”的学生人数:%d\t%.1f%%\n",A,A/*100);fprintf(fp2,"取得“良好”的学生人数:%d\t%.1f%%\n",B,B/*100);fprintf(fp2,"取得“中等”的学生人数:%d\t%.1f%%\n",C,C/*100);fprintf(fp2,"取得“及格”的学生人数:%d\t%.1f%%\n",D,D/*100);fprintf(fp2,"取得“不及格”的学生人数:%d\t%.1f%%\n",E,E/*100);fclose(fp2);}void main(){FILE *fp1;if((fp1=fopen("","r"))==NULL){printf("can not open \n");exit(0);}for(i=0;i<100;i++)fscanf(fp1,"%d%s%d",&student[i].num,student[i].name,&student[i].score);max();average();average_compare();rank();fclose(fp1);}。