实践课题选题管理C语言
(一)关于C语言项目实践的技术指导
项目实践的目的及意义
对一定规模的综合软件编程有一定的经历与认识。在做的过程中,你会发现,提前的规划(即分析与设计)比编程过程要重要,否则会走很多弯。
综合并结合现实应用使用C语言的知识。这个设计会用到C语言这门课的全部知识,其中以文件、数组与链表为主,书中提到的主要及重点算法都会使用到。 不仅涉及编程,还涉及到功能分析、模块规划等方面的知识,这些知识在后续课程学习时,会经常使用。这些知识在学《软件工程》这门课时,会系统讲解。希望有了这次的经历,你能更好的体会《软件工程》这门课的意义,并能学好和用好其中的知识 。 每项功能的实现,一般有多种方法,这里都强调使用时空效率最高的方法,此次实现只是让
你有一个初步的认识,在下学期学习了《数据结构》后,你就知道为什么让你这样做,你也对《数据结构》这门课的作用及意义有所了解。突变体
项目实践的实现思路
任何一个管理系统的基本操作主要如下:
能录入并能向文件里保存数据
能计算并修改文件里的数据
能向文件里追加数据
能查文件里是否有某项数据
根据要求显示文件里的某些数据或全部数据
能在文件里插入或删除某项数据
按某个数据项进行排序生成排序文件
可以看出,所有操作围绕的中心是文件。而文件本身提供的功能相当有限,主要是打开与关闭文件、读与写文件、在文件末尾追加数据、修改文件里的某些数据(这个前提是需要用fseek到修改的位置再往里写数据),这四项功能。其它的功能文件不能直接完成,需要借由内存将相应的操作完成后,再写入文件。比如:
录入并向文件里保存数据的实现思路:C语言并没有提供由键盘输入数据直接录入文件的功能,只有内存变量向文件写入数据的功能,而由键盘输入数据可以到内存变量,因此实现此部分功能时,应当由键盘将数据放入变量,再由变量写入文件。这里录入要求不采用书上例子,它是用结构体数组,我们要求只用一个结构体实现。先将一个人的信息放入结构体,将这个结构体数据写入文件后,再将下一个人的信息继续放在这个结构体中,再将这个结构体写入文件。这样节省内存空间。
计算并修改文件里数据的实现思路:这部分的功能的实现应当先将文件的数据读到变量当中,在变量当中完成计算,再将数据写入文件。如果只是修改文件的数据,并不计算,则可以直接定位到文件中相应的位置,写入数据,则把原来的数据覆盖以完成修改。
向文件里追加数据的实现思路:文件本身提供了这项功能,只要以 “a”的方式打开就行。然
后向文件写入的数据,直接放在文件末尾。
查文件里是否有某项数据的实现思路:C语言并没有提供判断文件内容的功能,必须将文件内容读到变量里再进行判断。实际的查可能是在大量的数据里的查,高效的查是折半查(下学期的数据结构专门讲这一内容),折半的前提是排序,因此需先对排序后的文件读出,以折半方式查。(这要要求,是希望巩固折半查与排序两个重要算法,至于它的时空效率是否高,可以学完《数据结构》知识后自己再判断)。
根据要求显示文件里的某些数据或全部数据的实现思路:C语言没有提供将文件内容显示的功能,所以需要将文件内容读到变量里,再显示变量。
在文件里插入或删除某项数据的实现思路:C语言同样没有直接提供该项功能,因此必须借由内存变量完成。由以前的知识知道,在大量的数据里删除一个数,用数组表示不合适,因为涉及到大量的数据的移动,用链表是合适的,效率高(关于这一点,在《数据结构》这门课有详细的讲解)。因此完成这部分操作要求用链表实现,先将文件里的数据读出组织成链表,在链表上完成插入与删除后,再将链表中的数据写入文件。
按某个数据项进行排序生成排序文件的实现思路:排序是在数组里实现。因此先要将文件里的数据读到数组里,将数组排完序后,再将数据写入文件(一般写入一个新文件)。
因此对每一项功能,关于内存变量的使用有三种方案:一个结构体、结构体数组与结构体链表,实现每个功能应当只会使用其中的一种结构,使用哪种结构取决于你的做的事和使用的算法,比如排序必须用数组,插入与删除必须用链表,其它的根据要求可能会有多种选择,但只有一种时空效率最高,可以从这个角度选择一种结构。
最终实现的软件,只要提供这上面提到的所有功能就算满足要求,至于其它功能,能结合实际要求考虑周全,更好。
项目实践的方法:此次项目实践的功能较多,相对于以往所做程序规模较大,因此在编写与调试程序时,特别注意调试程序的方法,以提高效率。具体方法如下:
将功能分解,细分至每个函数要完成的功能后,编写一个函数测试一个函数,测试完全通过后,再编写测试下一个函数,然后再将这些函数组合后完成相应功能。将全部功能完成后,再组合成软件,最后再加入菜单控制。从《软件工程》的角度看,这是从底至上的开发过程,这样便于测试与实现,出错也便于更正错误。
(二)
c语言程序设计实践题目
一、参考1实验题目:
【循环结构程序设计实验目的】
1.熟悉 VC++6.0 的运行环境,掌握 C 程序的执行方法;
2.掌握三种基本数据类型、部分运算符号和常用函数;
3.掌握三种循环控制语句及 break 和 continue 语句的使用方法;
4.掌握循环结构的嵌套及正确控制计数型循环结构次数的方法。
【实验内容】
程序 1:搬砖问题:36 块砖,36 人搬,男搬 4,女搬 3,两个小孩抬 1 砖,要求一次搬完,问男、女和小孩各若干?
#include “stdio.h”main(){int men,women,children;men=0;while(menm-1) printf(“%5d“,m);}}程序 4:计算和统计旅客运费程序 。由键盘输入旅客行李重量(w) ,按公式 :若( w50kg)f=1.5*50 + 2.8*(w-50) ( w>50kg )
二、参考2计算运费
【中国电机工程学报要求】
(1)打印每位旅客的顺序号,行李重量,应付运费 ;
(2)假定每天最多办理 100 人的行李托运手续或当 w≤0 时循环结束, 下班时打印出全天的运费总收入和办理的总人数。
【方法一】 (while 结构) #include “stdio.h”main( ){int num=0;float w,f,total=0;scanf(“%f “,while (w>0int n=8,i,k=0,j=1,len; len=n;i=0;//给数组赋值for(i=0;i0){if(a[k%n]>0){if(j%3==0){printf(“%d\n“,a[k%n]);//到要出圈的人,并把圈中人数减一 ,最后一个人才输出 a[k%n]=-1;j=1;k++;len--;}else{//报数不是 3k++;j++;}}else//遇到空位了,就跳到下一位,但 j 不加一,也就是这个位置没有报数k++;}}2.学生成绩统计与分析输入 10 名学生的英语、C 语言、计算机文化基础成绩,统计每名学生三科成绩的平均分,分析三门课程的优秀率,85 分以上为优秀。#include void main(){int grade[10][4];int i,j,average,egood,cgood,jgood;绥化学院程序设计实践实验报告范例 参考5for(i=0;i=85){if(j==0) egood++; if(j==1) cgood++; if(j==2) jgood++;}}grade[i][3]=average/3;}for(i=0;ivoid main(){ int paixu (int c[]);int a[8]={1,7,9,11,13,15,17,19};int b[5]={2,3,6,8,10};int c[13];int *p,*q,*s;for(p=a,s=c;pc[i+1]){ k=c[i];c[i]=c[i+1];c[i+1]=k;}for(i=0;i<13;i++)printf(“%d\n“,c[i]);}
三、实 验 三:函数
【实验目的】
1.更加灵活的使用数组和指针作为函数参数;2.更加灵活使用指针处理字符串。
【实验内容】
1.字符串复制输入一个长度不大于 30 的字符串,将此字符串中从第 m 个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。要求用指针方法处理字符串。
2.插入字符串从键盘上先后读入两个字符串,假定存储在字符数组 s1 和 s2 中。注意,这两个字符串最长均可达到 26 个字符、最短均可为 0 个字符。将字符串 s2 插入字符串 s1 中,生成一个新的字符串 s。插入方法为 s2 的第 i 个字符插入到原 s1 的第 i 个字符后,如果 s2 比 s1(假定s1 的长度为 L1)长,则 s2 的第 L1 个字符开始到 s2 结尾的所有字符按在 s2 中的顺序放在新生成的字符串 s 之后。用指针完成程序。
3.学生成绩管理系统某班期末考试科目为数学(MT) 、英语(EN)和物理(PH) ,有最多不超过 30 人参加考试。
(1)计算每个学生的总分;
(2)按总分成绩由高到低排出成绩的名次;
(3)打印出名次表,包括名次、学生编号、各科分数、总分;要求程序运行后先打印出一个菜单,提示用户选择:成绩录入、成绩排序、成绩查,在选择某项功能后执行相应的操作。
四、实 验 四:结构体
【实验目的】
1.更加灵活的使用数组作为函数参数;
2.初步掌握开发一个小型实用系统的基本方法;
3.初步掌握书写程序设计开发文档的能力。
【幸福契约实验内容】
程序一:学生信息管理系统编写程序,实现学生信息的管理(包括学生信息的建立、增加、删除、修改、查) ,
【要求】小组分工情况小组分工情况统计表班级学院 专业 年狗镇百度影音级工程(方向) 班 组名称 学生信息管理系统项目组长 (本次项目小组组长)组员组员学号工作简介一 需求分析。
1、设计一个学生成绩管理系统至少具有以下功能 :
(1)菜单功能:采用文本菜单界面。王学求
(2)学生信息的建立。
(3)学生信息的增加。
(4)学生信息的删除。
(5)学生信息的修改。
(6)学生信息的查。
2、 数据库结构struct student{ char num[10];char name[10];char xibie[10];char sex; int age; }st[30];
>北京卫生防疫站