c语言程序设计报告_第1页
c语言程序设计报告_第2页
c语言程序设计报告_第3页
c语言程序设计报告_第4页
c语言程序设计报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言课程设计报告题目成绩管理系统专业年级:自动化一班学号:姓名:指导教师:叶念渝2015年12月17日.设计内容(1)输入功能:由键盘输入20个学生(姓名)的某门课程的学习成 绩1099分(也可超过)。(2)运算功能:将分数由低到高排序(用直接排序法和冒泡法)学生姓名和对应的分数。(3)检索功能=用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)。(4)查询功能:对分搜索法检索某个学生的成绩(输入姓名,显示成绩)。二.设计要求(1)可以输入若干名学生信息(包括姓名/成绩等);(3)(2)在源代码中将若干名同学的信息输出;在源代码中能够将若干名/降序均可);同学的成绩排序(升序(4)可以根据

2、不同的查询条件(线性/对分搜索)来查询到相关学生的信息;三设计思路首先进入软件界面,以菜单为提示的成绩管理系统分别建立输入学生信息函数输入学生信息,建立排序函数实现排序功能,建立查找函数实 现查找功能通过建立数组在函数运行中进行同步调换实现各信息间分联系,达到信息相对应的目的,在主函数中分别调用各功能函数完成程序目四程序设计流程图1 学生信息输入函数重新渝入子程序入口请重新输yes2.直接排序法流程图子程序入口i;i<N-1;i+max=j输出姓名和成绩3.冒泡排序法流程图输入完毕退岀子程子程序入口输入姓名如果a!=输出姓名和成输出“杳无此人5.对分搜索法流程图输入完毕退岀子程子程序入口

3、scoreia=i+a=H输入完毕退出五.设计及调剂的过程中遇到的问题和解决方法J(1).输入人的姓名时为什么要用二维数组因为输入了多个人的名字所以我们要建立一个名字的二维数组。(2).在输入函数中我幵始用的是if语句定义输入范围结果只提示一次 错 误。后来我加了一个do-while循环,就可以一直执行下去了。(3) .在冒泡排序法中没有理解strcpy函数的用法把字符串复制到字符串中去了,真正用法是将字符串复制的字符数组中去。(4) .将直接排序法和冒泡排序法弄混了,平时直接习惯有冒泡法,后来只有从书上一步一步的分析其数值的变化。终于本质上的理解了两种排 序的作用是 如何实现的。冒泡法是每比

4、较一轮产生一个最小(大)的数放 在第一个位置,而直接排序法是找出数值最小(大)的小标与第一个调换。(5) .在设计主函数时我用的是switch函数调用分函数,在进行搜索时我没加循环结果只能查找一个人的不能进行查多个人和判断是否能查到此人。后来我在搜索法中加了个while循环问题就解决了。(6) .在调试过程中我遇到的主要问题是输出姓名时第一个人的名字输出不出来,后来我一句句的看源程序,也不知道为什么。我问班上同学才知道我用的是gets (namei);输入字符串占用了一个字符所以输出第一姓名时名字数输不出来,我把它改成sea nf ("%s",&n ameip ;就

5、可以输出了。从这件事中我明白了要学会多思考即使你是参考书上的也要每一步弄懂, 不然一个小的细节就会导致程序出问题,我还是对这两种输入字符串函数没有本 质的了解。(7) .程序有许多小问题都是在自己一遍遍调试下更正了,比如程序差东西、有问题等,做好一个程序编程还是要自己慢慢探索,理解每一个函数 语句。六心得体会与感受C语言课程设计总有两周时间,在第一次上课老师交给我们任务不知从何下手到最后将整套学生管理系统的程序准确无误的编出来,对我来说无疑又是一大 进步,在这段时间里我遇到了不少的问题。产生了许多的疑问,但是随着自己的 追随问题的根源,不断的温习书本上的知识,反复进行上机的操作,思路一步一 步

6、的清晰起来了,所遇到的一些问题也逐渐得到就解决,本不是那么情愿做的程 序到因为解决了一些问题所产生的成就 感反到激起了我兴趣。于是借着心中的那 一股劲,反复的程序进行摸索,把以前很多没学好的地方都捡了起来,还学会了 很多新的知识。这一切都 源于老师对我们的严格要求,还有自己的刻苦专研才有 了这样的成果。如果老师要求没有那么严格,或者是自己不去努力是做不出来学 生管理系统的。在设计的过程中,在我印象中最深刻的挺多的。冒泡和直接排序法的比较,在二维数组的比较时也遇到了一些问题,主要是对二维数组的概 念不清楚,性质不了解,所以在运用时就有一些错误。当然在设计过程中因为输 入法的错误、函数层次不清晰变

7、量名重复定义,也花了很多时间去 解决。所以在 这次编程过程中,不仅仅只是完成作业而已,更多的是要用一种肯专研的学习态 度,养成一个良好学习习惯。作为一个合格的编程人员不仅仅要有专业知识,还 要有一个良好的编程习惯和一颗仔细的心,更需要一种负责认真编程态度。七.源程序#include <stdio.h>#include <stringh>#define N 51 输入函数/学生信息输入函数void input1(char nameN8Jnt score)inti;for(i=0;ivN;i+)printf ("n请输入第d个学生姓名:'i+1);scan

8、f("%s",&namei);printf ("n请输入第(:个学生成绩:打+1);scanf("%d",&scorei);do/do-while循环while(scorei<1 |scorei>100) printf("输入有误!n");printf(-请重新输入成绩scanf("%d",&scorei);while(scorei<1 |scorei>100);getcharO;字符输入函数2成绩排序输出(直接排序法)void sort1 (char na

9、meN8,int score)int ij,max,ternp1;char temp2100;for(i=0;i<N-1 ;i+)max=i;for (j=i+1 ;jvN;j+) if(scoremax<scorej) max=j;tempi =scorei;scorei=scoremax;scoremax=te mp1;字符串复制函数strepy(temp2,namei); /strepyOstrcpy(n amei,namemax);strcpy(n amemax,tem p2);printf("The sorted result:n”);for(i=0;ivN;i

10、+)printf("姓名:%10s 成绩:%3dn",namei,scorei);/3.成绩排序输出(冒泡法) void sort2(char nameN8jnt score)char h100;for(j=0;jvN;j+)for(i=0;i<N-j;i+)if(scorei>scorei+1 )t=scorei;scorei=scorei+1;scorei+1=t;strep y(h,namei);strcpy(n amei,namei+1);strcpy(n amei+1,h);printfC'The sorted result:n");

11、 for(i=0;ivN;i+) printf("姓名:%10s 成绩:%3dn",namei,scorei);)/4.线性搜索法检索学生的成绩定义线性搜索void searchi (char nameN8,int score) /法函数getcharO;int a,i;char b;char str8;while(1)printf("请输入学生的姓名;输入一段字符gets(str); /for(i=0;ivN;i+)函数(字a=strcmp(str,namei); /strcmp 符串比较函数)if(a=O) break; if(a!=O)printf(&quo

12、t;查无此人!");else if(a=O)printf(" 姓名:%10s 成绩:%3dn",namei,scorei);getcharO;printf(-继续查询吗Y/N:"); b=getchar();getcharO;continue;elsebreak;/5.对分搜索法检索学生的成绩 void search2(int score,char nameN8)int a,b,c,i;char d;while(1)a=0;b=N-1;printf("请输入学生成绩;scanf("%d",&c);getcharO;w

13、hile(a<=b)i=(a+b)/2;if(scorei=c)break;if(scorei<c)a=i+1;if(scorei>c)b=i-1;if(scorei!=c)printf(-无此成绩 n");elsepnntf("姓名:%10s 成绩:%3dn",namei,scorei);printf(-继续查询吗Y/N:");d=getchar();if(d=y)|(d=T)continue;elsebreak;void main()int scoreN;char nameN8;int a,b;printf("学生成绩管理

14、系统pnntf("输入学生信息pnntf("2.直接排序法pnntf("3.冒泡排序法pnntf("4,线性搜索法pnntf("5.对分搜索法n");b=1;while(b=1)/while循环printf("请输入序号;scanf("%d",&a);switch(a) /switch语句实现多分支选择结构case 1:printf("输入学生信息n "); inpu t1 (name,score);break;case 2:printf(-直接排序法n "); so

15、rt1 (name,score);break;case 3:printf(-冒泡排序法n "); sort2(name,score);break;case 4:printf("线性搜索法n ");searchi (name,score);break;case 5:printf("对分搜索法n ");search2(score,name);break;case 6:while(0);break;default:printf("errorn");printf ("1 继续程序,2结束程序丫);运行情况:1 主菜单界面2信息输入界面3 直接排序法排序界面4 冒泡排

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论