c语言课程设计-兰州交通大学
C语言程序设计课程设计编写函数求取两个整数mn的最大公约数和最小公倍数

C语言程序设计课程设计专业:电气工程及其自动化班级:电气1203姓名:熊董学号: 201209837指导教师:王思华兰州交通大学自动化与电气工程学院2013 年07月 20日1、基础题1.1题目编写函数,求取两个整数m,n的最大公约数和最小公倍数。
1.2题目分析求两个整数的最大公约数和最小公倍数可以用辗转相除法,用两个函数max 和min分别求出最大公约数和最小公倍数。
在主函数中输入两个整数m和n,并传递给函数max,求出最大公约数返回主函数并赋给整型变量h,然后h和两个整数m,n 一起作为实参传递给函数min,从而求出最小公倍数,返回主函数赋给l。
输出最大公约数和最小公倍数。
主函数:N-S图如图一max函数:N-S图如图二min函数:N-S图如图三图三min函数1.3源程序#include<stdio.h>int main(){ int max(int,int);int min(int,int,int);int m,n,h,l;scanf("%d,%d",&m,&n);h=max(m,n);printf("最大公约数是%d\n",h);l=min(m,n,h);printf("最小公倍数是%d\n",l);return 0;}int max(int m,int n){ int t,r;if(n>m);{t=m;m=n;n=t;}while((r=m%n)!=0){m=n;n=r;}return(n);}int min(int m,int n,int h){return(m*n/h);}1.4程序运行结果如图四:图四基础题运行截图2、改错题2.1题目#include <stdio.h> #include <conio.h> void fun(int a, b) {int t;t = b; b = a ; a = t; }main( ) {int a, b; clrscr( );printf("Enter a,b :"); scanf("%d%d", &a, &b); fun(&a, &b);printf("a=%d b=%d\n", a, b); }2.2题目分析该源程序的目的是交换两个数的值,有主函数可以看出该函数是应用指针交换两个数的值。
C语言课程设计

《C程序设计》课程设计报告学校:兰州交通大学题目名称:学生通讯录管理系统班级:电力工程予管理姓名:刘宝华学号: 201110807指导老师:胡建宏2012年6月21日目录一.课程设计目的二.总体设计1、程序设计组成框图2. 程序流程图三、详细设计1.主函数2.插入模块3.显示模块4.查找模块5.删除模块6修改模块四.调试与测试1.调试2.测试结果的分析与讨论3.测试过程中遇到的主要问题及采取的解决措施五.源程序六.参考文献一.课程设计目的C 课程设计是教学实践环节中的一项重要内容,进行此课程设计旨在:1. 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序设计员的基本素质;2. 培养学生独立分析问题,解决问题,查阅资料以及自学能力,以适应信息管理行业日新月异的发展形势;3. 本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,作出设计报告。
二.总体设计1.程序设计组成框图2. 程序流程图N三、详细设计1.主函数:为了源程序的简单,主函数一般设计的比较简洁,只提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
2.插入模块此模块为插入信息模块,插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。
3.显示模块此模块会显示所有记录,流程图如下:4.查找模块5.删除模块次模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息。
6修改模块此模块先调用查找函数查找所要的信息,然后通过用户选择来确定是否修改信息。
四.调试与测试1.调试1).窗口的初始化以及主菜单的显示。
2).插入(添加)信息以及询问是否添加信息。
3).显示所有信息。
4).查找(询问查询方式)(1)用姓名查询(2)用电话查询(3)用地址查询5).保存功能6).修改功能及其退出程序2.测试结果的分析与讨论3.测试过程中遇到的主要问题及采取的解决措施1)、问题:标点符号在输入的时候,使用的是中文输入法,这种错误一般都难以发现,让修改的时候找不到目标。
c语言课程设计交通

c语言课程设计交通一、教学目标本章节的教学目标分为三个部分:知识目标、技能目标和情感态度价值观目标。
1.知识目标:通过本章节的学习,学生需要掌握C语言的基本语法、数据类型、运算符、控制结构等基础知识。
2.技能目标:学生能够运用C语言编写简单的交通管理系统,实现对车辆信息的增删查改功能。
3.情感态度价值观目标:培养学生对编程语言的兴趣,提高学生解决问题的能力,培养学生的创新思维。
二、教学内容本章节的教学内容主要包括以下几个部分:1.C语言的基本语法和数据类型。
2.运算符和控制结构。
3.函数的定义和调用。
4.文件的读写操作。
5.交通管理系统的实现。
三、教学方法为了提高教学效果,本章节将采用多种教学方法:1.讲授法:讲解C语言的基本语法、数据类型、运算符和控制结构等知识点。
2.案例分析法:通过分析实际的交通管理系统案例,让学生理解并掌握如何运用C语言解决实际问题。
3.实验法:让学生动手编写交通管理系统,提高学生的实际操作能力。
4.讨论法:在课堂上学生进行讨论,促进学生之间的交流与合作。
四、教学资源为了支持教学内容的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》。
2.参考书:《C语言编程实例教程》。
3.多媒体资料:交通管理系统的案例视频、演示文稿等。
4.实验设备:计算机、网络等。
通过以上教学资源的支持,为学生提供丰富的学习体验,提高教学效果。
五、教学评估本章节的评估方式包括以下几个方面:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现来评估。
2.作业:布置相关的编程作业,评估学生对C语言知识的掌握程度和运用能力。
3.考试:进行期末考试,包括选择题、填空题、编程题等,全面评估学生的学习成果。
评估方式应客观、公正,能够全面反映学生的学习成果。
通过评估,及时发现学生的不足,给予针对性的指导和帮助。
六、教学安排本章节的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生系统地掌握C语言知识。
c语言课程设计交通

c语言课程设计交通一、课程目标知识目标:1. 掌握C语言基础语法,如变量定义、数据类型、运算符和表达式;2. 学会使用C语言控制结构,包括顺序、选择和循环结构;3. 了解C语言数组、函数和指针的基本概念及应用;4. 能够利用C语言编写简单的交通模拟程序。
技能目标:1. 能够运用所学知识,分析交通问题的需求,提出解决方案;2. 培养编程思维,掌握程序设计的步骤,具备独立编写C程序的能力;3. 提高问题解决能力,通过编写程序解决交通模拟中的实际问题;4. 学会使用调试工具,分析并解决程序中的错误。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性,树立自信心;2. 培养学生的团队合作意识,学会与他人共同解决问题;3. 增强学生的社会责任感,关注交通问题,意识到编程在解决现实问题中的应用价值;4. 培养学生严谨、细致的学习态度,养成良好的编程习惯。
本课程针对高年级学生,课程性质为实践性较强的学科。
根据学生特点,课程目标注重培养学生的实际操作能力和问题解决能力。
在教学过程中,要求教师关注学生的个体差异,提供有针对性的指导,确保学生能够达到预期的学习成果。
通过本章节的学习,学生将能够运用C语言知识,设计出符合实际交通需求的程序,提高编程能力和实际问题解决能力。
二、教学内容1. C语言基础语法:- 变量定义、数据类型及转换;- 运算符和表达式;- 控制结构:顺序、选择(if-else)、循环(for、while)。
教学内容关联教材:第一章至第三章。
2. 数组与函数:- 一维数组、二维数组;- 函数定义、声明与调用;- 递归函数。
教学内容关联教材:第四章、第五章。
3. 指针:- 指针的定义与使用;- 指针与数组;- 指针与函数。
教学内容关联教材:第六章。
4. 交通模拟程序设计:- 分析交通问题,提出解决方案;- 编写程序实现交通信号灯控制;- 编写程序模拟车辆行驶。
教学内容关联教材:实践项目章节。
c语言课程设计-兰州交通大学

------------------------------------");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("________________________________ ________________________________");
附录D 综合题源代码
//课程信息结构体
//课程编号 //课程名称 //学分 //课程性质 //课程学时 //开课学期
//首页 //登陆 //退出界面 //学生登陆菜单 //管理员登陆菜单 //选择课程 //新增课程 //删除课程 //学生查询函数 //管理员查询函数 //学生浏览函数 //管理员浏览函数
模块一:头文件,变量定义,函数的声明。对系统所使用的变量进行定义, 对函数进行声明。
模块二:登陆密码和首页。声明函数void shouye()和void denglu()。 模块三:管理员对课程信息的添加。声明函数void kc_xinzeng(),通过 fp=fopen("course.dat","wb")写入信息。 模块四:管理员对课程信息的删除。声明函数void kc_shanchu()为管理员删 除课程信息函数。 模块五:管理员对课程信息的浏览。 声明函数void gi_liulan()为管理员浏 览课程信息函数。
printf("☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆");
printf("--------------------
☆☆
--------------------");
printf("☆☆☆☆☆☆☆☆☆
兰州交通大学C 俄罗斯方块程序设计

课程设计课程名称:课题名称:班级:完成人:指导教师:一、设计目的熟练掌握函数的利用,结合循环结构、数组、结构体还有点指针与文件,并且进一步掌握和利用C语言进行设计的能力,练习并且积累经验逐渐培养编程能力。
二、系统的功能分析2.1游戏需求随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T 字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,每关方块下落的速度不同,若在游戏中各形状填满了给定区域,为输者。
2.2游戏界面需求:良好的用户界面,以键盘操作,有关数显示和分数显示。
让方块在一定的区域内运动和变形,并且显示下一个即将出现的方块。
2.3游戏形状(方块)需求:良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。
三、系统的程序设计与实现必须包括:1.系统的运行环境Win-TC2.开发环境(用什么语言或集成开发环境)C语言3.系统的详细设计3.3.1获取键盘输入?在Tc2.0中有一个处理键盘输入的函数bioskey();int bioskey(int cmd);当cmd为1时,bioskey()检测是否有键按下。
没有键按下时返回0;有键按下时返回按键码(任何按键码都不为0),但此时并不将检测到的按键码从键盘缓冲队列中清除。
当cmd为0时,bioskey()返回键盘缓冲队列中的按键码,并将此按键码从键盘缓冲队列中清除。
如果键盘缓冲队列为空,则一直等到有键按下,才将得到的按键码返回。
3.3.2怎样控制方块的移动方块移动的实现很简单,将方块原来的位置用背景色画一个同样大小的方块,将原来的方块涂去。
然后在新的位置上重新绘制方块就可以了。
3.3.3怎样控制时间间隔(用于游戏中控制形状的下落)解决这个问题要用到时钟中断。
时钟中断大约每秒钟发生18.2次。
截获正常的时钟中断后,在处理完正常的时钟中断后,将一个计时变量加1。
c程序评分系统

《程序设计基础(C)》课程设计报告评分系统学生姓名学号班级指导教师日期兰州交通大学新能源与动力工程学院评分一、设计目的1、通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!2、通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。
为后续各门计算机课程的学习和毕业设计打下坚实基础。
二、设计要求1、评委给每个演讲者评分——输入。
2、输入每位选手的姓名、成绩并有相应的提示语;3、对每一位选手的成绩进行处理(去掉一个最高分,去掉一个最低分,剩余评委的平均分,为防止重分现象平均分取小数点后两位);4、对8位选手的成绩进行排序评名次,并且分出一、二、三等奖分别1、2、2个名额;5、评分结果浏览功能(每位选手的姓名、成绩、名次、一、二、三等奖及所有选手成绩的排序)——输出;6、查询或排序功能。
三、总体设计1.主程序的流程程序先通过宏定义符号常量N(选手数),M(评委数),P(评分选项数)的值分别为8,6,2.这样不仅简单不易出错,而且便于常量的更改,只需改变#include命令行就可以一改全改。
接着定义了评委评分,选手得分和选手姓名的数组以便最终将选手最后得分与姓名对应。
进入程序主体,要想将比赛结果完整的输出,我们必须要让程序在将评委得分与选手姓名输入时自动计算出选手最终得分以及实现名次排序与姓名的一一对应。
为了实现8位选手得分的正确录入,先用for循环嵌套通过评委数量与选手数量控制评分项的完整输入,再用scanf语句对应二维数组a[]使评分与选手结合,在k=N时跳出循环,至此评分录入完毕。
C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数

C语言课程设计专业:电气工程及其自动化班级:电气11姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2012 年7月6日1 基本题目1.1题目编写函数,求取两个整数m,n的最大公约数和最小公倍数。
1.2 题目分析图1 程序流程图1.3 程序# include<stdio.h>int max(int a,int b);int main(){printf("请输入两个整数");int m,n,p;scanf("%d%d",&m,&n);p=m*n;printf("最大公约数为:%d最小公倍数为:%d\n",max(m,n),p/max(m,n));return 0;}int max(int a,int b){int c;while (a!=b){if(a<b){c=a;a=b;b=c;}a=a-b;}return b;}1.4 程序的运行结果图2 基本题目运行结果2 改错题目2.1 改正后程序#include <stdio.h>#include <conio.h>main(){int i=0,j;char ch;while((ch=getch())!='\r'){i++;printf("%c",ch);}printf("you type %d characters\n",i);}2.2 程序运行结果图3 正确程序运行结果3 综合题目3.1 题目综合题目为:《班级通讯录》。
3.2 数据结构对上述题目进行分析,定义结构体数据结构如下:struct Person{char name[10]; //姓名char num[15]; //号码char age[8]; //年龄char adds[20]; //住址struct Person *next;};3.3 程序的主要功能通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、保存等操作的管理。
C语言课程设计

程序设计基础(C/C++)课程设计说明书课程名称:程序设计基础(c/c++)题目:数据集合处理姓名:学号:班级:物流管理1301班指导教师:兰州交通大学交通运输学院物流管理二○一四年七月八日程序设计课程设计任务书一、题目:数据集合处理要求:1.集合元素不超过100个。
2.集合用数组表示(数组预先定义大一些)。
功能有:1.程序初始运行时任意输入一批初始数放入集合(可少可多,不少于5个,不超过30个)。
2.对该批数排序存放。
程序完成前两步后,通过循环可以不断选择下面的某项功能执行(用提示语句列出菜单,通过读入某变量值,可用switch判断该变量,如接受到1表示执行第一项,依次类推,某项功能执行完可以返回菜单,也可退出系统):3. 列出集合所有元素(每行8个数,右对齐)。
4.任意插入一个数到排好序的集合中,保持集合依然有序。
5.在集合中删除一个元素。
6.查询某个值是否在集合中(该数由键盘输入)。
7.查询当前集合元素的个数。
8.输出该数据集合的最大值和最小值。
9.输出数据集合中所有奇数或偶数。
10.找出数据集合中的所有素数。
11.输入一个0-9的值,找出集合中尾数为该值的所有数。
二、文档内容要求:1、在做上述题目时,正文要求包含4部分内容:1)解题基本思路;2)算法流程框图;3)主要程序源代码;4)程序运行截图5)总结和体会2、文档装订顺序:1)封面;2)课程设计任务书;3)正文。
目的:熟悉c/c++语法,掌握用编程语言开发由若干功能组成的小型项目的基本流程,增强动手实践能力,巩固和加强书本知识的学习,体会c/c++编程的特点。
解题基本思路:1.定义一个容量为100的数组a[100];2.用for循环对数组赋值,并同时对输入的元素个数进行计数,得到集合元素的个数n;3.对输入的集合元素用冒泡法进行排序;4. 输出若干提示语句;5.用switch语句实现对选项的选择;6. 用while循环语句使选项可以循环出现也可以退出循环;7. 通过对switch语句中九个函数的调用,完成菜单所述功能;8. 函数list,使用for循环和setiosflags语句、setw语句,使数组元素以右对齐、每行八个数的格式输出;9. 函数insert,通过键盘输入要插入的数,利用步骤3中使用的冒泡法对插入数之后的集合进行排序,然后利用for循环对数组元素进行输出;10.函数deleteitem,通过键盘输入要删除的数,利用for循环找到要删除的数的位置,然后从要删除的数的位置开始依次把后面的数前移,把要删除的数覆盖掉。
C语言课程设计模板

C程序设计课程设计专业:电气工程班级:电气11-01姓名:×××学号:×××指导教师:×××评语:平时(40)修改(30)报告(30)总成绩兰州交通大学自动化与电气工程学院2012 年 7月 8日1 基本题目(四号宋体加黑)(一级标题1.5倍行距)1.1(顶格)题目(小四宋体加黑)(二级标题1.5倍行距)(1) 缩进两个汉字。
1) 如果还有下级标题,与以上上级标题不能相同。
2) 主要写题目的内容小(正文行距1.25倍行距,全部小四宋体)1.2 题目分析(小四宋体加黑)对题目进行分析,画出流程图(流程图应当按照流程图规范绘制)如图1所示。
图1 基本题目流程图1.3 程序程序用5号times new Roman字体main( ){char a[10]="aBCDeFgh",b[10]="ABcd",c[80]={''};fun(a,b,c);printf("The result:"); puts(c);}1.4 程序的运行结果上述程序的运行结果如图2所示。
图2 基本题目运行结果从图2可以看出,输入大写字母转换为小写,小写字母转换为大写,字母以外的字符不转换。
注:(图名五号宋体,全文按照图出现的顺序顺序编号,流程图和运行结果图都必须编号和写出图名)文中出现图和流程图必须引用。
2 改错题目2.1 改正后程序修改后程序放在下面(小四号times new Roman字体,单倍行距(程序))2.2 程序运行结果(将程序的运行结果剪切后放置在这里,并对运行结果进行解释,即程序完成的功能)3.综合题目3.1 题目综合题目为:《班级通讯录》。
3.2 数据结构对上述题目进行分析,定义结构体数据结构如下:3.3 程序的主要功能实现基本的通讯录数据管理,如:创建新数据文件、添加数据记录、查找数据记录、删除数据记录、显示所有的数据记录,以及数据的排序等等。
学生信息管理系统程序设计

《程序设计基础(C/C++)》课程设计报告学生信息管理系统学生姓名学号班级指导教师日期兰州交通大学新能源与动力工程学院C语言课程设计报告1.设计思路:通过的C语言知识,掌握好结构体,指针,文件的操作以及C语言算法,就程序本身来看,功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。
功能2是显示所有的记录,通过循环输出,格式也比较重要。
功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp[1],strcpy[2]等函数。
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。
2.程序设计功能模块图1.学生信息管理系统3.流程图图2.按学号排序流程图选择输入数据并调用菜单函数流程图如图3 所示。
图3.调用菜单函数功能模块图4.swith语句流程图4.参考文献《C程序设计(第四版)》(清华大学出版社)谭浩强著/view/22a2e337b90d6c85ec3ac6bf.html 5.主要的函数#include<stdio.h> 引用库函数#include<stdlib.h> 定义杂项函数及内存分配函数#include<ctype.h> 字符测试函数#include<string.h> 字符串处理5源程序#include<stdio.h> //引用库函数//#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct //定义结构体数组//char num[10]; //学号//char name[20]; //姓名//int score; //成绩//}Student;Student stu[80]; //结构体数组变量//int menu_select() //菜单函数//{char c;do{system("cls"); //运行前清屏//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");printf("\t\t***************赵晨制作****************\n");printf("\t\t\t请选择(0-7):");c=getchar(); //读入选择//}while(c<'0'||c>'7');return(c-'0'); //返回选择//}int Input(Student stud[],int n) //输入若干条记录//{int i=0;char sign,x[10]; //x[10]为清除多余的数据所用//while(sign!='n'&&sign!='N') //判断//{printf("\t\t\t学号:"); //交互输入//scanf("\t\t\t%s",stud[n+i].num);printf("\t\t\t姓名:");scanf("\t\t\t%s",stud[n+i].name);printf("\t\t\t成绩:");scanf("\t\t\t%d",&stud[n+i].score);gets(x); //清除多余的输入//printf("\t\t\t是否还有其他人?(Y/N)");scanf("\t\t\t%c",&sign); //输入判断//i++;}return(n+i);}void Display(Student stud[],int n) //显示所有记录//{int i;printf("\t\t\t-----------------------------------\n"); //格式头//printf("\t\t\t学号姓名成绩\n");printf("\t\t\t-----------------------------------\n");for(i=1;i<n+1;i++) //循环输入//{printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1]. score);if(i>1&&i%10==0) /*每十个暂停*/{printf("\t\t\t-----------------------------------\n"); //格式//printf("\t\t\t");system("pause");printf("\t\t\t-----------------------------------\n");}}printf("\t\t\t");system("pause");}void Sort_by_num(Student stud[],int n) //按学号排序//{int i,j,*p,*q,s;char t[10];for(i=0;i<n-1;i++) //起泡法排序//for(j=0;j<n-1-i;j++)if(strcmp(stud[j].num,stud[j+1].num)>0){strcpy(t,stud[j+1].num);strcpy(stud[j+1].num,stud[j].num);strcpy(stud[j].num,t);strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name) ;strcpy(stud[j].name,t);p=&stud[j+1].score;q=&stud[j].score;s=*p;*p=*q;*q=s;}}int Insert_a_record(Student stud[],int n) //插入一条记录// {char x[10]; //清除多余输入所用//printf("\t\t\t学号:"); //交互式输入//scanf("\t\t\t%s",stud[n].num);printf("\t\t\t姓名:");scanf("\t\t\t%s",stud[n].name);printf("\t\t\t成绩:");scanf("\t\t\t%d",&stud[n].score);gets(x);n++;Sort_by_num(stud,n); //调用排序函数//printf("\t\t\t添加成功!\n"); //返回成功信息//return(n);}int Delete_a_record(Student stud[],int n) //按姓名查找,删除一条记录//{char s[20];int i=0,j;printf("\t\t\t姓名:"); //交互式问寻//scanf("%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; //查找判断//if(i==n){printf("\t\t\tnot find!\n"); //返回失败信息//return(n);}for(j=i;j<n-1;j++) //删除操作//{strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j].name,stud[j+1].name);stud[j].score=stud[j+1].score;}printf("\t\t\t成功删除!\n"); //返回成功信息//return(n-1);}void Query_a_record(Student stud[],int n) //查找并显示一个记录//{char s[20];int i=0;printf("\t\t\t姓名:"); //交互式输入//scanf("\t\t\t%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; //查找判断// if(i==n){printf("\t\t\t没找到!\n"); //输入失败信息//return;}printf("\t\t\t学号:%s\n",stud[i].num); //输出该学生信息//printf("\t\t\t成绩:%d\n",stud[i].score);}void Statistic(Student stud[],int n) //新增功能,输出统计信息//{int i,j=0,k=0,sum=0;float aver; //成绩平均值//for(i=0;i<n;i++) //循环输入判断//{sum+=stud[i].score;if(stud[j].score>stud[i].score) j=i;if(stud[k].score<stud[i].score) k=i;}aver=1.0*sum/n;printf("\t\t\t总共记录数: %d .\n",n); //总共记录数//printf("\t\t\t最高分:\n"); //最高分//printf("\t\t\t学号:%s 姓名:%s 成绩:%d\n",stud[j].num,stud[j].name,stud[j].score);printf("\t\t\t最低分:\n"); //最低分//printf("\t\t\t学号:%s 姓名:%s 成绩:%d\n",stud[k].num,stud[k].name,stud[k].score);printf("\t\t\t平均分: %5.2f\n",aver); //平均分// }void main() //主函数//{int n=0;for(;;){switch(menu_select()) //选择判断//{case 1:printf("\t\t\t输入\n"); //输入若干条记录//n=Input(stu,n);break;case 2:printf("\t\t\t显示\n"); //显示所有记录//Display(stu,n);break;case 3:printf("\t\t\t排序\n");Sort_by_num(stu,n); //按学号排序//printf("\t\t\t排序成功!\n");printf("\t\t\t");system("pause");break;case 4:printf("\t\t\t插入\n");n=Insert_a_record(stu,n); //插入一条记录//printf("\t\t\t");system("pause");break;case 5:printf("\t\t\t删除\n");n=Delete_a_record(stu,n); //按姓名查找,删除一条记录//printf("\t\t\t");system("pause");break;case 6:printf("\t\t\t查找\n");Query_a_record(stu,n); //查找并显示一个记录// printf("\t\t\t");system("pause");break;case 7:printf("\t\t\t统计\n");Statistic(stu,n); //新增功能,输出统计信息//printf("\t\t\t");system("pause");break;case 0:printf("\t\t\tHave a Good Luck,Bye-bye!\n"); //结束程序//printf("\t\t\t");system("pause");exit(0);}}}。
C语言程序设计实验三实验四题目 2

C语言程序设计实验报告(实验三:C程序的多源文件工程化设计试验)实验成绩:(实验四:函数的调用及参数传递验证试验)实验成绩:专业:轨道交通信号与控制班级: 1303姓名:卢鹏伟学号: 201310032指导教师:李建国兰州交通大学自动化与电气工程学院20 14年 5月 5 日实验三:C程序的多源文件工程化设计试验一实验内容:设计一个发牌的程序,要求按照1-13分别对应同一个花色的牌的数字,按照随机方式发出这13张牌,程序每次运行时发出的牌的顺序不同。
要求:1 设计函数实现;2 主函数存放于main.c文件中,子函数存放于func1.c文件中,如有多个子函数,则依次存放于不同的funcX.c文件中,其中X为依次增长的数字;3 函数名和变量名采用有意义的名字,应有必要的注释;4按照编程风格要求编写程序;二实验目的:完成随机发出1-13张牌的程序,发出的13张牌分别对应1-13数字,但发出的顺序是随机的,不得出现有规律可循的情况。
程序生成后每次运行所呈现的牌的顺序结果不同;本实验的目的是检验对工程化设计,函数设计,函数声明,函数定义,函数调用的掌握程度,在一定程度上也反应了对流程图,循环,条件判断的掌握情况。
提示:随机数的产生需要采用:srand(time(0));语句和(1+rand()%13)两个语句来实现,请查询需要哪个头文件并在程序中正确使用。
三实验过程:(学生完成)多文件截图时,请在VC6环境中采用“窗口”-“垂直平铺”方式截图包括但不限于:解题思路、流程图、编辑环境的截图与过程描述、源代码、在代码编译链接中编译系统给出的错误、警告内容截图和分析、警告和错误的原因分析,修改是怎样进行的说明;运行结果截图。
格式要求实验报告封面单面打印,实验内容均为双面打印中文:宋体,小四;英文:Times New Roman,小四;多倍行距 1.25,间距:段前、段后均为0行,取消网格对齐选项。
设计(论文)中文字之间不允许有空行,文字与图之间不允许有多行空白。
C程序设计ghjkl

2013 —2014 学年第一学期兰州交通大学博文学院C语言课程设计报告题目:学生成绩查询系统学生姓名:王生辉学号:自己找一下专业班级:自动化指导教师:史红霞完成日期:2013年12月26日目录1 设计任务 (2)1.1 问题描述 (2)1.2 要求 (2)2 设计目的 (2)3 总体设计 (2)4 详细设计 (2)4.1查找模块 (3)5 调试与测试 (4)6 C语言程序总结 (5)6.1 调试分析 (5)6.2 设计总结 (5)7 致谢 (6)8 参考文献 (6)1设计任务1.1 问题描述对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放。
1.2 要求(1)一个文件按以班为单位存储学生记录.(2)将允许的操作分为四种,以A,B ,C,D,E,F为标志:A:插入一个学生记录;B:修改学生记录;C:删除一个学生记录;D:查找一个学生记录;E:浏览学生成绩:F:退出(3)计算学生的总成绩(4)按学号排序输出全班学生成绩表2 设计目的根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.3 总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块.4.1 查找模块[需求分析]:该模块的功能是根据输入的学生的姓名查找对应的记录,找到以后,显示相应的学生信息。
[流程图]Y YN[程序]int writetotext(student stud[]) /*将所有记录写入文件*/{int i=0,j;FILE *fp;char filename[20];printf("输入文件名称:");gets(filename);fp=fopen(filename,"w");fprintf(fp,"%d\n",numstus);while(i<numstus){fprintf(fp,"%s %s %s",stud[i].number,stud[i].name,stud[i].sex);for(j=0;j<numsubs;j++)fprintf(fp,"%f ",stud[i].subject[j]);fprintf(fp,"%.2f %.2f %d",stud[i].score,stud[i].average,stud[i].index); i++;}fclose(fp);printf("已成功存储!\n");display(stud,0,numstus-1);numstus=0;return 0;}void welcome(){printf("\t*************************************************************\n ");printf("\t\t\t\t**学生成绩管理系统**\n\t\t\t\t 欢迎使用本系统! \n");printf("\t*************************************************************\n ");}void showtable(){printf("----------------------------------------------------------------------------\n");printf("学号\t姓名\t性别\t语文\t高数\t英语\t计算机\t总分\t平均分\t名次\n");printf("----------------------------------------------------------------------------\n");}void display(student stud[],int n1,int n2){int i;showtable(); /*显示表头*/for(i=n1;i<=n2;i++)printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1] ,stud[i].subject[2],stud[i].subject[3],stud[i].score,stud[i].average,stud[i] .index);/*通过循环输出数据*/}void display1(){printf("\t\t本系统由12人学习制作\n\n");printf("\t\t制作人员列表: \n\n");printf("\t\t雷亚明\t\t段小龙\t\t李可可等\n");printf("\n\n");getchar();}#include<string.h>void amendrecord(student stud[]){char str[4]; /*供用户输入*/int i=-1,j;if(numstus==0) /*没有记录返回*/printf("没有可供修改的记录!");while(i<0){i=findrecord(stud);if(i>=0){printf("要删除这个学生的信息吗?(y/n)"); gets(str);if(str[0]=='y'||str[0]=='Y'){deleterecord(stud,i);count(stud);}else{printf("确定要修改这个学生的信息吗?(y/n)");gets(str);if(str[0]=='y'||str[0]=='Y'){printf("下面请重新输入学生的信息:\n");printf("请输入学号:");gets(stud[i].number);printf("请输入姓名:");gets(stud[i].name);printf("请输入性别(男/女1/0):");gets(str);if(str[0]=='0')strcpy(stud[i].sex,"女");elsestrcpy(stud[i].sex,"男");stud[i].score=0;printf("请按顺序输入成绩:");for(j=0;j<numsubs;j++){scanf("%f",&stud[i].subject[j]);stud[i].score+=stud[i].subject[j];}getchar();stud[i].average=stud[i].score/numsubs; }count(stud);}display(stud,0,numstus-1);}printf("是否继续进行其他修改?(y/n)\n");gets(str);if(str[0]=='y'||str[0]=='Y')i=-1;else i=1;}} 5 调试与测试在这次课程设计中,程序编写过程中遇到了很多的问题,各种函数的运用也让人头疼,在上机编译运行过程中出现了很多的错误,例如:各种数据类型的定义,函数的调用等等。
C语言程序设计课程设计---设计比赛评分系统

课程设计课程名称c语言课程设计题目评分系统设计专业电力工程与管理2012年06 月27 日课程设计任务书设计题目:设计比赛评分系统(给分原则:满分为10分;裁判给出分数后,去掉一个最高分和一个最低分后的平均分为选手的最后得分(精确到小数点后两位)。
)设计目的;1.巩固和加深课堂所学知识;2.将课本上的理论知识和实际应用有机的结合起来,培养同学们分析和解决实际问题的能力;3.学会编制结构清晰、风格良好、数据结构选择恰当的c语言程序;设计任务:功能:1、设参赛人数为24人,裁判人数为8位;2、录入参赛人员的资料和得分情况,最后得分;3、按最后得分结果从高分到低分排序;4、公布一、二、三等奖的得奖选手名单;5、此系统能够查询选手的得分情况。
具体要求:1、题目:2、设计目的:3、设计内容:写出简要的程序功能描述、程序运行条件所需工具软件、输入输出描述等。
4、程序结构:函数定义说明;用到的库函数的功能说明、调用关系说明、参数传送方式说明等;主要算法描述等(各模块功能实现)。
5、设计要求:绘制设计系统的结构层次图,各功能实现的算法、会直接勾画流程图;程序流程图、源程序;设计输入、输出界面。
6、(1)程序结构设计特点;(2)设计、调试程序心得、体会或不足。
源程序#include <stdio.h>#include <math.h>#include <conio.h>struct test{int num;float s;};main(){int i,j,k,bad,good;float ts,sum=0,aver=0,tm[10];struct test data[10],*p[10],*temp;do {sum=0;aver=0;printf("Input 10 sorces------input 0(exit)\n"); for(i=0;i<10;i++){data[i].num=i+1;scanf("%f",&data[i].s); /*分数的输入部分*/ if(data[0].s==0) printf(0);}for(i=0;i<10;i++) tm[i]=data[i].s;for(i=0;i<10;i++) p[i]=&data[i];for(i=0;i<9;i++){k=i;for(j=i+1;j<10;j++)if(tm[k]<tm[j])k=j;if(k!=i){ts=tm[i];tm[i]=tm[k];tm[k]=ts;temp=p[i];p[i]=p[k];p[k]=temp;} /*对输入分值进行排序*/}for(i=1;i<9;i++)sum+=p[i]->s;aver=sum/8; /*计算平均值的部分*/printf("\n-----------------\n");printf("The aver is:%.1f\n",aver);printf("-----------------\n");(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9);/*通过绝对差值判断与平均值相差最大的裁判*/double min=fabs(p[5]->s-aver);good=5; /*暂定第六个为最公平裁判*/for(i=4;i>0;i--){if((fabs(p[i]->s-aver))<=min){min=fabs(p[i]->s-aver); good=i; }else break;}/*用拆半法先将前半部分与min比较*/ for(i=6;i<9;i++){if((fabs(p[i]->s-aver))<=min){min=fabs(p[i]->s-aver); good=i; }else break;}/*用拆半法先将后半部分与min比较*/printf("The worst pingwei is %d and the sorce is %.1f\n", p[bad]->num,p[bad]->s);/*打印出最不公平裁判和其分数*/printf("The best pingwei is %d and the sorce is %.1f\n", p[good]->num,p[good]->s);/*打印出最公平裁判和其分数*/ printf("\n----------------------------------\n");printf("Next one:");/*打印出下一位*/}while(1);/* getch(); */return 0;}。
C语言课程设计12

C语言课程设计专业:自动化班级:姓名:学号:指导教师:评语:平时(40)修改(30)报告(30)总成绩兰州交通大学自动化与电气工程学院2012年7月6日一.设计目的及要求1.设计目的进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序风格。
2.设计要求设计步骤的规范不但可以培养学生科学的工作方法和作风,而且还能有效地减少错误,提高工作效率。
因此必须严格执行良好的实验步骤规范(包括上机操作规范)。
本课程设计的基本步骤是:1)问题分析及解决方案框架确定充分地分析和理解问题本身,弄清要求做什么(What to do?)。
在确定解决方案框架过程中(How to do?),综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。
最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。
2)详细设计和编码确定算法的主要流程,在此基础上进行代码设计(Coding),每个明确的功能模块程序一般不超过60行,否则要进一步划分。
3)上机前程序静态检查上机前对程序进行静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。
把程序中的明显错误事先排除。
4)上机调试程序在运行环境中执行编写好的程序代码,以便进一步检查程序设计中出现的错误。
主要出现的错误包括语法错误,标点符号格式错误、丢失或者不匹配,程序逻辑有误导致运行结果错误。
建议在设计后期统一安排学生上机以检查学生上机情况。
5)完成课程设计报告二.改错题2.1题目要求#include<stdio.h>#include<conio.h>main(){int i,j;int sum,k=0;for(i=0;i<5;i++){printf("input a number:");scanf("%d",k);sum+=k;}printf("the sum is%d",sum);}2.2错误分析该程序完成的是对数组元素的求和问题。
C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数

C语言课程设计专业:电气工程及其自动化班级:电气11姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2012 年7月6日C程序设计课程设计报告1 基本题目1.1题目编写函数,求取两个整数m,n的最大公约数和最小公倍数。
1.2 题目分析图1 程序流程图1.3 程序# include<stdio.h>int max(int a,int b);int main(){printf("请输入两个整数");int m,n,p;scanf("%d%d",&m,&n);p=m*n;printf("最大公约数为:%d最小公倍数为:%d\n",max(m,n),p/max(m,n));return 0;}int max(int a,int b){int c;while (a!=b){if(a<b){c=a;a=b;b=c;}a=a-b;}return b;}1.4 程序的运行结果图2 基本题目运行结果2 改错题目2.1 改正后程序#include <stdio.h>#include <conio.h>main(){int i=0,j;char ch;while((ch=getch())!='\r'){i++;C程序设计课程设计报告printf("%c",ch);}printf("you type %d characters\n",i);}2.2 程序运行结果图3 正确程序运行结果3 综合题目3.1 题目综合题目为:《班级通讯录》。
3.2 数据结构对上述题目进行分析,定义结构体数据结构如下:struct Person{char name[10]; //姓名char num[15]; //号码char age[8]; //年龄char adds[20]; //住址struct Person *next;};3.3 程序的主要功能通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、保存等操作的管理。
【免费下载】C语言课程设计 编写函数求取两个整数mn的最大公约数和最小公倍数

否
输出最大 公约数n
输出最小
公倍数p/n
C 程序设计课程设计报告
int main() {
printf("请输入两个整数"); int m,n,p; scanf("%d%d",&m,&n); p=m*n; printf("最大公约数为:%d 最小公倍数为:%d\n",max(m,n),p/max(m,n)); return 0; } int max(int a,int b) { int c; while (a!=b) {if(a<b) {
c=a; a=b; b=c; } a=a-b;} return b; }
1.4 程序的运行结果
2 改错题目
2.1 改正后程序
#include <stdio.h> #include <conio.h> main() {
int i=0,j; char ch; while((ch=getch())!='\r') {
{
};
3.3 程序主要功能
char name[10];
char num[15]; char age[8];
char adds[20];
struct Person *next;
图 3 正确程序运行结果
//姓名
//号码 //年龄
//住址
通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、保存等操
c=m
m=n
n=c
结束
图 1 程序流程图
-1-
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计课程设计评语:考勤(10)纪律(10)过程(40)设计报告(30)答辩(10)总成绩(100)专业:电气工程及其自动化班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2014年7月15日1 基础题1.1 题目编写一个程序,求3行4列矩阵的转置,要求在main函数中输入,在chang 函数中把矩阵转置。
1.2 解题思路首先在主函数里定义一个3行4列的数组来存放这个矩阵,在定义一个子函数实现矩阵的转置,并用二维数组做参数。
1.3 流程图基础题流程图见附录A图A1、图A2所示。
1.4 源代码基础题源代码见附录C。
1.5 运行截图运行截图如图1所示。
图1 基础题运行结果图2 改错题2.1 题目#include <stdio.h>#include <conio.h>main(){int i,j;char ch;while(ch=getch()!='\r'){i++;printf("%c",ch);}2.2 错因分析int i,j;此处将变量j应该删去,因为变量j在后面程序没有出现,而它占用一定的内存单元。
浪费储存空间。
while(ch=getch()!='\r')此处的\r应该改为\n,因为转义字符\r表示回车的意思,系统会认按回车键是输入字符,无法识别。
因此程序无法执行,无法得出结果。
3 综合题3.1题目学生选修课程系统设计(1)需求分析系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于课程信息要用文件保存,因而要提供文件的输入输出操作;由于要浏览信息,所以要提供显示功能;要实现查询功能,故要提供查找操作。
定义的机构体如下:struct course //课程信息结构体{int num1; //课程编号char name1[20]; //课程名称int score; //学分char kc_xingzhi[10]; //课程性质int kc_xueshi; //课程学时int kaikexueqi; //开课学期};(2)总体设计整个系统首页设计为管理员登陆模块和学生登陆模块,在管理员登陆模块中有信息输入模块、信息删除模块、管理员信息浏览模块和管理员信息查询模块,在学生登陆模块里有选课模块、学生课程查询模块以及学生课程浏览模块。
(3)详细设计数据结构采用结构体,这里采用课程信息结构体。
1)信息输入模块从键盘输入课程信息,写入文件。
(fwrite, fprintf)2)信息浏览模块从文件中读数据(fread,fscanf),然后再显示。
3)信息查询模块通过菜单选择查询字段,可以按照课程学分对课程信息文件进行查找,查找算法可以选择基本查找、二分查找等算法。
可以通过菜单选择课程编号,在学生选课信息文件中查询该课程学生选修情况。
3.2 程序功能分析根据题目已知信息可得,完成后程序应具备如下功能:(1) 管理员录入课程信息(2) 管理员删除课程信息(3) 管理员浏览课程信息(4) 管理员查询课程信息(5) 学生选课(6) 学生查询课程信信息(7) 学生浏览课程信息(6) 退出学生选修课系统3.3 程序模块设计模块一:头文件,变量定义,函数的声明。
对系统所使用的变量进行定义,对函数进行声明。
模块二:登陆密码和首页。
声明函数void shouye()和void denglu()。
模块三:管理员对课程信息的添加。
声明函数void kc_xinzeng(),通过fp=fopen("course.dat","wb")写入信息。
模块四:管理员对课程信息的删除。
声明函数void kc_shanchu()为管理员删除课程信息函数。
模块五:管理员对课程信息的浏览。
声明函数void gi_liulan()为管理员浏览课程信息函数。
模块六:管理员对课程信息查询模块。
声明函数void gl_chaxun()为管理员课程查询函数。
模块七:学生选修课模块。
声明函数void x_kecheng()实现学生选课。
模块八:学生查询课程模块。
声明函数void xs_chaxun()来实现其功能。
模块九:学生浏览课程模块。
声明函数void xs_liulan()来实现其功能。
模块十:界面菜单。
通过switch()调用以上各函数,来实现气个子函数功能。
3.4 流程图主函数流程图如图7所示,调用函数流程图详见附录B图B1、图B2、图B3。
3.5 源代码综合题源代码见附录D。
3.6 程序运行截图综合题的运行结果如图2、图3、图4、图5、图6所示。
图2 选课系统界面图图3管理员登陆界面图4学生登陆界面图5管理员新增课程信息图图6 学生浏览课程图Y N开始输入密码密码正确调用shouye函数调用denglu函数结束图7 主程序的main函数流程图3.6存在的问题(1)在调试程序的时候偶尔会遇到程序崩溃的情况。
(2)执行一次任务后以前执行的任务的信息不能删除,导致屏幕信息显得臃肿。
(3)信息保存后在下一次启动时便不能直接显示。
(4)还有就是在输入输出时格式,加入一个格式不合适就可能导致程序运行出错,但是这种错误在进行调试时是检查不出来的。
(5)最后就是在进行文件的录入和输出时,由于刚开始对文件的输入输出不熟练导致出现了大量的错误。
4 总结通过本次课程设计,我学到了很多让我意想不到的知识,并且对一些基本的办公软件的运用的熟练度得到了进一步的提升,也学会了运用一些新的软件,例如:Microsoft Office Visio 2003、Visual C++ 6.0等。
当然,编写程序的时候也并不是一帆风顺的,也遇到了很多困难,程序报错、编译不成功、程序不能运行预期的功能,这些都是最常见的错误,而这也需要我自己动手去逐字逐句的检查,这也是平常课堂中没有过的体验。
综合题目让我懂得了遇到问题时如何去分析题目,首先写出题目的要求再结合现实生活得出让这个问题更加完善的要求,再次写出算法分析,这次的从语言课程设计不仅让我的思维变得更加慎密更加让我懂得了如何去合作,锻炼了我的团队协作能力,我和我们小组的同学一起努力最后每个人都完成了自己课程设计。
当然在争论中不免会产生点小摩擦,但仍然无法削减我们的热情。
时至今日我们的程序依然有着或多或少的不够完善的地方,但我觉得不管怎样,我们的程序能运行出最正确的结果对我们而言就已经是莫大的成功。
这次c语言课程设计让我懂得了如何坚持。
最后,我还要向在这次课程设计中给予我帮助的老师和同学们表示最衷心的感谢,没有老师逐字逐句的纠错和指导,和同学们随时都帮忙的热情,这次课程设计不会那么顺利的完成,再次衷心地感谢老师与各位同学。
参考文献[1] 谭浩强.C程序设计(第四版)[M].北京:清华大学出版社,2010:293-354.附录A 基础题的流程图NYNY开始i=0i<3?j=0j<4输入a[i][j]j++i++调用chang 函数结束图A1 基础题主函数流程图NYNNYYN开始i=0i<3?j=0j<4?j++i++i=0c[j][i]=b[i][j]i<4?j=0j<3?输出c[i][j]j++i++结束Y图A2 基础题chang 函数流程图附录B 选课系统的流程图综合题的子函数流程图:YNNYNY开始输出登陆界面Input=1?调用man-denglu 函数Input=2?调用stu-denglu 函数Input=3?调用 bye_sys()函数结束图B1 综合题登陆模块流程图NNNNNYYYYY开始定义一个整形变量inin=1?调用Kc_xin zeng()函数in=2?调用Kc_shan chu()函数in=3?调用Gi_liu lan()函数in=4?调用Gl_cha xun()函数in=5?调用Deng lu()函数结束图B2 综合题管理员登陆模块流程图YNNYNYNY开始定义一个整形变量in in=1?调用X_ke cheng()函数in=2?调用Xs_cha xun()函数in=3?调用Xs_liu lan()函数in=4?调用Deng lu()函数结束图B3 综合题学生登录模块流程图附录C 基础题源代码# include <stdio.h>int main (){ void chang (int b[3][4]);int i,j,a[3][4];printf ("请输入一个3行4列的矩阵:\n");for (i=0;i<3;i++)for (j=0;j<4;j++)scanf ("%d",&a[i][j]);chang (a);return 0;}void chang (int b[3][4]){ int i,j,c[4][3];for (i=0;i<3;i++)for (j=0;j<4;j++)c[j][i]=b[i][j];printf ("转置之后的矩阵为:\n");for(i=0;i<4;i++){for (j=0;j<3;j++)printf ("%3.0d",c[i][j]);printf ("\n");}}附录D 综合题源代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<windows.h>#define N 100struct course //课程信息结构体{int num1; //课程编号char name1[20]; //课程名称int score; //学分har kc_xingzhi[10]; //课程性质int kc_xueshi; //课程学时int kaikexueqi; //开课学期};void shouye(); //首页void denglu(); //登陆void bye_sys(); //退出界面void stu_denglu(); //学生登陆菜单void man_denglu(); //管理员登陆菜单void x_kecheng(); //选择课程void kc_xinzeng(); //新增课程void kc_shanchu(); //删除课程void xs_chaxun(); //学生查询函数void gl_chaxun(); //管理员查询函数void xs_liulan(); //学生浏览函数void gi_liulan(); //管理员浏览函数int main(){char ch;char a[]="123456",b[10];printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");printf("------------------------------------ ------------------------------------");printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");printf("________________________________________________________________");printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");printf("---------------------------- ----------------------------");printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");printf("________________________________________________");printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");printf("-------------------- ☆☆--------------------");printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");printf("\n");printf("----------------------------欢迎进入学生选修课程系统----------------------------");printf("\n\n");printf("☆--☆--☆--☆请输入密码:");do{scanf("%s",b);if(strcmp(a,b)==0){if ((ch=getchar())!='\0')system("cls");printf("\n\n\n\n\n\n\n\n");printf("☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆");printf("\n\n\n");printf("☆--☆--☆--☆-- 你输入的密码正确,请按回车键进入下一界面--☆--☆--☆--☆");printf("\n\n\n");printf("☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆");printf("\n");if ((ch=getchar())!='\0')system("cls");}elseprintf("\n您输入的密码有误请重新输入:");}while(strcmp(a,b)!=0);shouye(); //首页denglu(); //登陆return 0;}void shouye() //首页界面{char ch;printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf ("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n");printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf ("* * * * * * * * * * * ** * *\n");printf ("* * * * * * * * * * ** * *\n");printf ("* * * * * * * * * ** * *\n");printf ("* * * * * * * * ** * *\n");printf ("* * * ** * *\n");printf ("* * * ** * *\n");printf ("* * * ** * *\n");printf ("* * * ** * *\n");printf ("* * * ** * *\n");printf ("* * * * 制作人:马驰骋* * *\n");printf ("* * * ** * *\n");printf ("* * * * 学号:201309431* * *\n");printf ("* * * ** * *\n");printf ("* * * * 班级:电气1301班* * *\n");printf ("* * * ** * *\n");printf ("* * * * * * * * * ** * *\n");printf ("* * * * * * * * * * ** * *\n");printf ("* * * * * * * * * * * ** * *\n");printf ("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n");printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf ("请按回车键进入下一界面。