C语言课程设计实习报告
C语言课程设计实习报告
班级:
学生姓名:
序号: 21
指导老师:陈老师/刘老师
日期: 2012.2
目录
一、程序分析与设计 (1)
二、流程图 (1)
三、源程序清单 (3)
四、调试过程 (8)
五、程序有待改进的地方 (9)
六、本次实习的收获和建议 (9)
附录 (9)
一、程序分析与设计(标题四号宋体加黑,正文五号宋体,行间距-固定值18,首行缩进2字符)
1、先用记事本编辑文件cj.txt存储一个班学习成绩。然后在C环境下,建立一个学生信息的结构体,用r方式打开上述文件,再用fscanf读入、用printf在屏幕上显示文件内容。
2、利用循环使每个学生的三门功课的成绩相加,然后再把和除以三就得到了平均成绩。接着用冒泡法利用平均分的高低排出名次。最后用fprintf将每个学生的信息写入到mc.txt文件。
3、利用for语句下的printf语句把每个同学的信息在屏幕上显示出来。每名同学之间用分割线分开,作为每个学生的成绩条。
4、利用for语句配合if嵌套语句计算出每科每个分数段的学生人数。在for语句中计算出每科的全班总成绩,再把总分除以三十七算出每科的平均分。最后用printf语句把结果按格式输出。
5、利用for语句和if、printf语句配合找出不及格的学生的序号及该科成绩。
6、利用for语句和if语句配合再利用逻辑或和逻辑且找出优等生的信息,并用printf语句在屏幕上显示出来。
7、把以上几点分别定义五个函数,再定义一个菜单函数,利用switch语句和goto配合,完成输入进行运行。
二、流程图
1计算平均分并排名
for i=0 to 37
stu[i].total=stu[i]. math +stu[i].engl +stu[i].phys
stu[i].ave=stu[i].total/3.0
打印出各个学生的每门课的成绩,平均分
for i=0 to 37
for j=0 to 37
stu[j].ave>stu[i].ave
真假
stu[i].mc++
打印出各个学生的每门课的成绩,平均分,名次
2求个分数段的人数
3不及格人数
4优秀人数
三、源程序清单(此部分采用小五号宋体,行间距-固定值14)#include
#include
struct student
{
int id;
char name[9];
int math;
int engl;
int phys;
int total;
float ave;
int mc;
} stu[37];struct student*p=&stu[0];
//-----------------mc--------------------------
void mc()
{
int i;
printf("读取文件结果如下:\n");
printf("%8s %8s %8s %8s %8s\n",
"序号","姓名","数学","英语","物理");
for(i=0;i<37;i++)
{
printf("%8d %8s %8d %8d %8d\n",p[i].id,
p[i].name,p[i].math,p[i].engl,p[i].phys);
}
for(i=0;i<37;i++)
{
p[i].total= p[i].math+p[i].engl+p[i].phys;
p[i].ave=p[i].total/3.0;
p[i].mc=1;
}
for(i=0;i<37;i++)
{
for(int j=0;j<37;j++)
{
if(p[j].ave>p[i].ave)
{
p[i].mc++;
}
}
}
printf("----------MC-------------------\n");
printf("%8s %8s %8s %8s %8s %8s %8s %6s\n",
"序号","姓名","数学","英语","物理","总分","平均分","名次"); for(i=0;i<37;i++)
{
printf("%8d %8s %8d %8d %8d %8d %8.3f %6d\n",p[i].id,
p[i].name,p[i].math,p[i].engl,
p[i].phys,p[i].total,p[i].ave,p[i].mc);
}
FILE* fp1;
fp1=fopen("D:\\mc.txt","w");
fprintf(fp1,"%8s %8s %8s %8s %8s %8s %8s %6s\n",
"序号","姓名","数学","英语","物理" ,"总分","平均分","名次");
for(i=0;i<37;i++)
{
fprintf(fp1,"%8d %8s %8d %8d %8d %8d %8.3f %6d\n", p[i].id,p[i].name,p[i].math,p[i].engl,
p[i].phys,p[i].total,p[i].ave,p[i].mc);
}
}
//-----------------------------cjt--------------------------- void cjt()
{
int i;
for(i=0;i<37;i++)
{
p[i].total= p[i].math+p[i].engl+p[i].phys;
p[i].ave=p[i].total/3.0;
p[i].mc=1;
}
for(i=0;i<37;i++)
{
for(int j=0;j<37;j++)
{
if(p[j].ave>p[i].ave)
{
p[i].mc++;
}
}
}
printf("%8s %8s %8s %8s %8s %8s %8s %6s\n",
"序号","姓名","数学","英语","物理" ,"总分","平均分","名次");
for(i=0;i<37;i++)
{
printf("%8d %8s %8d %8d %8d %8d %8.3f %6d\n",
stu[i].id,stu[i].name,stu[i].math,stu[i].engl, stu[i].phys,stu[i].total,stu[i].ave,stu[i].mc);
printf("-----------------------------------------------------------------------------\n");
}
FILE* fp5;
fp5=fopen("D:\\cjt.txt","w");
for(i=0;i<37;i++)
{
fprintf(fp5,"%8d %8s %8d %8d %8d %8d %8.3f %6d\n",
stu[i].id,stu[i].name,stu[i].math,stu[i].engl,
stu[i].phys,stu[i].total,stu[i].ave,stu[i].mc);
fprintf(fp5,"-----------------------------------------------------------------------------\n ");
}
}
//----------------fsd------------------------------------------------------------------ void fsd()
{
int total_math=0;
int math_60=0;
int math60_69=0;
int math70_79=0;
int math80_89=0;
int math_90=0;
int i;
for(i=0;i<37;i++)
{ total_math+=stu[i].math;
if(stu[i].math<60) math_60++;
else if(stu[i].math<=69) math60_69++;
else if(stu[i].math<=79) math70_79++;
else if(stu[i].math<=89) math80_89++;
else math_90++;}
float ave_math=total_math/37.0;
int total_engl=0;
int engl_60=0;
int engl60_69=0;
int engl70_79=0;
int engl80_89=0;
int engl_90=0;
for(i=0;i<37;i++)
{ total_engl+=stu[i].engl;
if(stu[i].engl<60) engl_60++;
else if(stu[i].engl<=69) engl60_69++;
else if(stu[i].engl<=79) engl70_79++;
else if(stu[i].engl<=89) engl80_89++;
else engl_90++;}
float ave_engl=total_engl/37.0;
int total_phys=0;
int phys_60=0;
int phys60_69=0;
int phys70_79=0;
int phys80_89=0;
int phys_90=0;
for(i=0;i<37;i++)
{ total_phys+=stu[i].phys;
if(stu[i].phys<60) phys_60++;
else if(stu[i].phys<=69) phys60_69++;
else if(stu[i].phys<=79) phys70_79++;
else if(stu[i].phys<=89) phys80_89++;
else phys_90++;}
float ave_phys=total_phys/37.0;
printf("----------------分数段统计结果文件-------------------\n");
printf("%8s %8s %8s %8s\n","分数段","C语言","英语","数学");
printf("%8s %8d %8d %8d\n","<60",math_60,engl_60,phys_60);
printf("%8s %8d %8d %8d\n","60_69",math60_69,engl60_69,phys60_69);
printf("%8s %8d %8d %8d\n","70_79",math70_79,engl70_79,phys70_79);
printf("%8s %8d %8d %8d\n","89_89",math80_89,engl80_89,phys80_89);
printf("%8s %8d %8d %8d\n",">90",math_90,engl_90,phys_90);
printf("%8s %8.3f %8.3f %8.3f\n","平均成绩",ave_math,ave_engl,ave_phys);
FILE* fp2;
fp2=fopen("D:\\fsd.txt","w");
fprintf(fp2,"%8s %8s %8s %8s\n","分数段","C语言","英语","数学");
fprintf(fp2,"%8s %8d %8d %8d\n","<60",math_60,engl_60,phys_60);
fprintf(fp2,"%8s %8d %8d %8d\n","60_69",math60_69,engl60_69,phys60_69);
fprintf(fp2,"%8s %8d %8d %8d\n","70_79",math70_79,engl70_79,phys70_79);
fprintf(fp2,"%8s %8d %8d %8d\n","89_89",math80_89,engl80_89,phys80_89);
fprintf(fp2,"%8s %8d %8d %8d\n",">90",math_90,engl_90,phys_90);
fprintf(fp2,"%8s %8.3f %8.3f %8.3f\n","平均成绩",ave_math,ave_engl,ave_phys);
}
//--------------------------bjg--------------------------------------
void bjg()
{
int i;
printf("----------打印不及格学生名单-----\n");
printf("%8s %8s %8s\n","序号","不及格课程","该课程成绩");
for(i=0;i<37;i++)
{
if(stu[i].math<60)printf("%8d %8s %8d\n",stu[i].id, "数学",stu[i].math);
if(stu[i].engl<60)printf("%8d %8s %8d\n", stu[i].id, "英语",stu[i].engl);
if(stu[i].phys<60)printf("%8d %8s %8d\n", stu[i].id,"物理",stu[i].phys);
}
FILE* fp3;
fp3=fopen("D:\\bjg.txt","w");
for(i=0;i<37;i++)
{
if(stu[i].math<60) fprintf(fp3,"%8d %8s %8d\n",stu[i].id, "数学",stu[i].math);
if(stu[i].engl<60) fprintf(fp3,"%8d %8s %8d\n", stu[i].id, "英语",stu[i].engl);
if(stu[i].phys<60) fprintf(fp3,"%8d %8s %8d\n", stu[i].id,"物理",stu[i].phys);
}
}
//-----------------------------yds---------------------------
void yds()
{
int i;
printf("优等生名单\n");
printf("%8s %8s %8s %8s %8s %8s %8s %6s\n",
"序号","姓名","数学","英语","物理" ,"总分","平均分","名次");
for(i=0;i<37;i++)
{
if((stu[i].ave>90||stu[i].ave>85&&((stu[i].math==100||stu[i].engl==100||stu[i].phys==100)||( stu[i].math>95&&stu[i].engl>95||stu[i].math>95&&stu[i].phys>95||
stu[i].engl>95&&stu[i].phys>95)))&&(stu[i].mc>=1&&stu[i].mc<=3)&&
(stu[i].math>60&&stu[i].engl>60&&stu[i].phys>60))
printf("%8d %8s %8d %8d %8d %8d %8.3f %6d\n",
stu[i].id,stu[i].name,stu[i].math,stu[i].engl,
stu[i].phys,stu[i].total,stu[i].ave,stu[i].mc);
}
FILE* fp4;
fp4=fopen("D:\\yds.txt","w");
for(i=0;i<37;i++)
if((stu[i].ave>90||stu[i].ave>85&&((stu[i].math==100||stu[i].engl==100||stu[i].phys==100)||( stu[i].math>95&&stu[i].engl>95||stu[i].math>95&&stu[i].phys>95||
stu[i].engl>95&&stu[i].phys>95)))&&(stu[i].mc>=1&&stu[i].mc<=3)&&
(stu[i].math>60&&stu[i].engl>60&&stu[i].phys>60))
fprintf(fp4,"%8d %8s %8d %8d %8d %8d %8.3f %6d\n",
stu[i].id,stu[i].name,stu[i].math,stu[i].engl,
stu[i].phys,stu[i].total,stu[i].ave,stu[i].mc);
}
//----------------menu---------------------------------------
void menu()
{
int i;
void mc();
void cjt();
void bjg();
void yds();
lop_1:
{
printf("****************1:计算平均分并排名****************\n");
printf("****************2:统计分数段*********************\n");
printf("****************3:打印成绩条*********************\n");
printf("****************4:打印不及格学生信息*************\n");
printf("****************5:打印优等生名单*****************\n");
printf("****************6:退出***************************\n");
scanf("%d",&i);
switch(i)
{
case 1:mc(); goto lop_1;
case 2:fsd();goto lop_1;
case 3:cjt();goto lop_1;
case 4:bjg();goto lop_1;
case 5:yds();goto lop_1;
case 6:exit(0);
}
}
}
//-------------------main-----------------------------------------
void main()
{ FILE* fp; fp=fopen("D:\\cj.txt","r");
for(int i=0;i<37;i++)
{
fscanf(fp,"%d %s %d %d %d",&stu[i].id,stu[i].name,&stu[i].math,&stu[i].engl,&stu[i].phys);
}
menu();
//--------MC-------------------------
}
四、调试过程
在程序运行的过程中,出现了很多的错误。有很复杂的问题,也不乏许多低级的错误。
1、在读取文件时,一开始总是出现乱码,后来才发现原始数据的第一行时空格,删除
后就可以正确读取了。
2、一开始我忘记了定义的函数也需要加“{}”,导致运行时出现了很多的错误,后来
再查书才发现了症结所在。
3、在编写代码时,经常忽略中英文的切换,导致代码中出现了大量的中文标点,严重
影响了程序的运行。
4、在编辑fsd函数时,采用了大量的if语句,一开始只使用两端的成绩利用逻辑且编辑
判定条件,后来才想起来可以用if语句的嵌套语句。
五、程序有待改进的地方
1、在编辑程序时,定义了大量的变量,是程序看上去有些混乱。需要减少部分变量。
2、在程序中使用了大量的printf语句,应考虑是否可以使用for语句将其简化。
3、在编辑时,有大量的重复语句,严重影响了成绩的简洁性。
六、本次实习的收获和建议
收获:通过本次实习,让我了解了理论与事实的差距,同时也提高了我的C语言基础,为今后的工作打下了坚实的基础。在编辑时,必须注意一些小的细节。让我意识到自己在学习生活中经常不注意小节,忽略一些自以为可有可无的事情,这是非常错误的。使我深深的知道,细节决定成败。还有,通过实习,锻炼了我的耐心。编程是一个很耗功夫的工作,必须有足够的耐心,才能完成全部工作。
建议:应多出一些题目,让我们自主选择题目作答。
附录(此部分采用小五号宋体,行间距-固定值14)
1、原始数据cj.txt
《C语言程序设计》实习报告
重庆城市管理职业学院 《C语言程序设计》实习报告 班级软件A1501 专业软件技术 学号 学生姓名 指导教师 评定成绩 信息工程学院 2016年06月 21 日
题目: 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。 程序 1 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,程序结束。 程序 2 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,直到做对为止。 程序 3 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct! You have tried three times! Test over!”,程序结束。 程序4 连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题数。 程序5 通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。 实习目的: 1、进一步掌握和利用C语言进行程设计的能力。 2、进一步理解和运用结构化程设计的思想和方法。 3、初步掌握开发一个小型实用系统的基本方法。 4、学会调试一个较长程序的基本方法。 5、学会利用流程图或N-S图表示算法。 6、掌握书写程设计开发文档的能力(书写实习报告)。 实习要求: (1) 系统分析: 将系统计算的值与答案相比较,相等则输出‘right’,不相等则输出‘No correct!Try again!’。
c语言课程设计报告·图书管理系统
第一章 §题目描述 图书管理系统设计: 【要求】图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。试设计一图书管理系统,使之能提供以下功能: (1)新图书基本信息的输入; (2)图书基本信息的查询; (3)对撤销图书信息的删除; (4)办理借书手续; (5)办理还书手续; 【提示】建立图书馆里信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。存在状态设为整型,可用不同数字代表借还状态。借书和还书手续要注意修改结构体的成员变量存在状态的值。 §算法设计 1.设计思想: 在整个系统编写的过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。由此进一步加深、巩固了所学的课程的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,参考了学校图书馆的图书管理系统,实现了程序的模块化、结构化。在主函数中调用各种函数,操作界面简单,易操作,人机互动性较强。 2.实现注释: 这个实用的小型图书管理系统程序以结构体数组指针操作完成,并实现文件信息的录入、修改和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。本图书管理系统分为管理员和学生两个部分,其基本功能包括了对图书信息的存储、查询、添加、删除和借书、还书手续办理等。查询时可按书名、编号等方式查询,找到后输出这本书的所有信息。可查询图书的在库状态,方便用户进行借书、还书操作。在借书还书成功后图书的在库状态自动改变,并更新信息到数据库。系统中主要的数据结构就是图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。在处理过程中各项可以作为一本图书的不同属性来进行处理。 3.结构体系设计 图:主函数结构;图:新书信息录入流程;图:图书信息查询(管理员)流程;图:图书信息查询(学生)流程;图:图书信息删除流程;图:办理借书手续流程;图:办理还书手续流程; §程序设计及代码分析 1.程序设计: 下面,我大致介绍一下我的系统的主要功能和注意事项: 当运行此程序时,首先进入系统主界面,然后可以选择[1].管理员登陆(密码:123),[2].学生登陆,[0].退出系统; 选择[1]后进入管理员系统,验证密码成功后显示管理员功能菜单,按数字键选择所需服务。管理员功能菜单中,[1].新书信息录入,[2].图书信息查询,[3].图书信息删除,[4].返回主菜单,[0].退出系统;当出现“请选择”时,输入选项前的数字,输完之后按回车(下同)。首次运行系统需要先选择[1]录入库存书籍信息,图书各信息项须用空格键隔开,输入完毕后信息自动储存并更新至数据库,然后再选择其他操作。当选择[3]时会进入图书信息删除,在这里可以选择删除图书信息等操
C语言课程设计报告-游戏2048
东华理工大学C语言课程设计报告 学院:国际教育学院学院专业:电子信息工程 班级:1420606 学号:201420060638 姓名:钟天运
一、课程设计题目:游戏2048 二、课程设计要求: a)使用C语言编写2048这款游戏 b)能够正常运行,拥有游戏界面。 c)能正常进行游戏从开始到结束。 d)用户操作方便 三、设计思路: a)游戏介绍: i.2048是一款简单的数字类游戏,界面是一个 4*4的方形格子。每个格子里可以为空或者有 一个2^n的数值。 ii.用户可以输入4种指令,分别是:上下左右,游戏会根据用户的指定的方向,将格子中 的数值向对应方向进行移动,直至移动到最边 上的格子或者有其他数值占用,如果碰到等大 数值,将会进行合并。此外,成功移动后,会 在一个空格子随机生成一个2或者4 iii.游戏目标是合成2048这个数值或者更大的数值。 b)实现思路: i.可以使用二维数组来保存4*4格子中的数值 ii.指令,可以通过输入字符函数,读取用户
在键盘上的方向键,进行判断执行对应的代 码。 iii.游戏界面,可以使用简单的特殊制表符,来实现,并通过清屏函数来进行反复同位置打 印界面。 iv.需要判断游戏结束的函数,以及记录游戏分数和步骤的变量 v.当游戏结束时,能够询问用户是否重新开始。 vi.随机生成一个新数,可以调用随机函数,使用时间做种子。 c)实现难点: i.打印游戏界面,要实现灵活能根据棋盘数组里 面的数据灵活打印。 ii.执行操作时,数值的移动和合并。
四、流程图
五、C语言源代码 // 游戏2048.c #include "windows.h" #include "time.h" #include "stdio.h" #include "conio.h" #include "string.h" //宏定义常量方向键值 //const int LEFT = 75, UP = 72, RIGHT = 77, DOWN = 80; #define LEFT 75 #define UP 72 #define RIGHT 77 #define DOWN 80 const char error_str[] = "您上次输入的指令无法识别,请重新输入。"; struct board { int place[4][4]; long int stepn; long int num; //存储游戏分数 long int time; int dtk; //direction key 记录方向键,及操作方向 int over; int zeronum; }; //该函数为游戏运行函数,当只是玩游戏的时候。进入该函数,游戏控制函数。int main() { //place数组为棋盘,其中为零代表空,-1代表不能合并的牌,其他2的倍数值为本身含义,初始化为全0。 struct board board1, board_backup; int newgame(struct board *, int), show(struct board *), operate(struct board *); char str[100] = "首次运行游戏"; //用于记录系统返回给用户的信息,例如:上一步执行向左合并,按键有误等 newgame(&board1, 0); //调用函数为新局初始化,第二个
C语言课程设计总结
C语言课程设计总结 一、设计题目: 猜数字和贪吃蛇小游戏。 专业:09电气工程及其自动化 组号:第十组 组员:马邢(组长)、王维、毛亮、汪小成、魏坤波、陈维康、高裴石、石峰、葛良志、冯鑫源 指导教师:黄莉莉 二、任务分配: 我们组分为两队,一对制作贪吃蛇游戏,另一对制作猜数字游戏。制作贪吃蛇的人员是马邢,葛良志,高裴石,石峰,陈维康。石峰和高裴石负责收集程序材料,马邢和葛良志负责整理和编写程序,陈维康辅助我们工作。制作猜数字的是魏坤波,王维,毛亮,汪小成,冯鑫源。魏坤波和王维负责编写程序,其他三人收集材料并帮助他们人编写和调试程序。 三、心得体会: 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今让我我们仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,几个星期的日子里,可以学
到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,也懂得集体团队的重要性。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在黄老师的辛勤指导下,终于游逆而解。同时,在黄老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢
停车场管理系统 C语言实习报告
C 语 言 课 程 实 习 报 告 【要求】 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟停车场管理。 【提示】 汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。 基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某
辆车离开停车场时应交纳的费用和它在停车场内停留的时间。 根据题目要求,停车场可以用一个长度为n 的堆栈来模拟。由于停车场内如有某辆车要开走,在它之后进来的车辆都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场,所以可以设两个堆栈。 一、需求分析 根据题目要求,程序应该提供“到达/离去,汽车牌照号码,到达/离去”的输入、输出操作;在程序中需要浏览停车场的车位信息,应提供显示、查找、排序等操作;此外还应提供键盘式菜单实现功能选择。 二、总体设计: 根据需求分析,可以将系统的设计分为以下五大模块:(1)车辆进入;(2)车辆退出; (3)车辆等待;(4)车辆查询;(5)退出。 一、详细设计: 主函数中只包含菜单函数,菜单部分单独写成函数,只提供输入、功能处理和输出部分的函数调用,其中各功能模块用菜单方式选择。 [程序] #define N 30 /*等待车辆*/ #define M 20 /*车位*/ #define P 2 /*单位时间所收费用*/ #include
c语言课程设计报告书--学生成绩管理
C 语言程序设计报告 课题:学生成绩管理 时间:
一、需求分析 任务要求: 自学C语言中有关链表及外部文件的内容,设计出学生成绩管理。具体要求如下: 1.主要功能: (1)能按学期、按班级完成对学生成绩的录入、修改 (2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序 (3)能查询学生成绩,不及格科目及学生名单 (4)能按班级输出学生的成绩单 系统功能需求分析: 1、定义一个结构体类型,成员包括学期、班级、各科成绩、建立链表,定义该结构体类型的指针,用于指向各结点; 2、分别建立具有添输入、修改、查询、总分及平均分、排序等功能的子函数,完成相应功能,对程序实现模块化。 二、概要设计 系统总体设计框架: 对程序进行模块化,建立输入、修改、查询、查找和显示功能的子函数,各子函数中运用链表存储数据。 系统功能模块图:
三、详细设计 主要功能模块的算法设计思路如下: 1、输入信息函数 (1)定义指向结构体变量的指针; (2)移动指针,找到插入结点; (3)在要插入的结点输入信息; (4)返回头指针。 2、修改信息 (1)定义指向结构体变量的指针; (2)用指针检验链表中是否有记录,若没记录,出现报错,然后要求重新输入; (3)根据要修改的编号查找对应结点; (4)修改信息;
(5)修改成功。 3、排序函数 (1)定义所要排序的班级和链表的头指针为形参; (2)调用排序函数,把班级和链表的头指针赋给形参; (3)在子函数中进行排序; (4)输出排序结果。 4、显示学生成绩信息(void Disp(Link l)) (1)选择想要查询的项目(学生各科成绩、不及格科目、班级成员);(2)用指针检验是否有记录; (3)若无记录,输出提示信息,返回主函数; 若有记录,移动指针,依次输出记录; 5、查询班级成绩信息(void Find(Link l)) (1)选择所要查询的班级; (2)输入班级: (3)在链表中寻找相应结点; (4)输出结点信息。 以上各个函数的流程图如下:
c语言课程设计报告学生成绩信息管理系统源代码
实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图:
1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数
c语言程序设计心得体会
c语言程序设计心得体会 本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意! 二十一世纪是计算机的世纪,是一个全新的世纪,计算机正逐步入侵我们的生活。刚开始接触计算机的时候感觉很新奇,那时觉得计算机很神秘,于是就产生了以后一定要熟练掌控计算机的念头。怀着这个愿望,我选择了计算机科学与技术为专业,有点兴奋又有点担忧,兴奋的是以后可以经常接触和了解计算机了,担忧的是我几乎没有任何基础,怕跟不上大家的步伐。有死党说我杞人忧天,结果证实我“忧”得不无道理。依然清楚地记得第一学期的上机课,每次上机老师都计分,所以经常手忙脚乱,用“惨不忍睹”来形容是最适合不过了。 紧张的一个学期过后,我们迎来了c语言的学习和一位风趣博学的老师。虽然刚开始学习c语言的时候大家都一筹莫展,但在老师的鼓励和教育下一步步地往前迈,很令人欣慰。在这之后的学习中仍然困难重重,然而“坚持到底就是胜利”这个坚定的信念激励着我们勇往直前。c语言课本的学习总算结束了,多么崎岖的一条学习之路。
大学的教育模式和中学有很大不同,从平常的课程安排和教学就可以知道,但是独立完成课程设计和写论文这种任务对我们来说无疑是一个很大的挑战。十七周开始进行课程设计,老师要求我们写一个计算器的程序,起初大家都被难倒了,然后开始一步步地摸索,先查找有关资料,画计算器的图形,写了好长一段程序才把图形搞定,可老师一看都不满意,要求我们用循环来做,“师”令如山,不得不听从,改吧,这一改又让大家死了好多脑细胞,感觉有点残忍。 完成了计算器的图形很有成就感,毕竟六月天坐在机子前不是令人愉快的事。接下来要进行计算器内部运算程序的设计,说实话,我根本就不知道要做,更不清楚如何着手,不是我妄自菲薄,独立完成这个程序设计根本就是不可能的事,可想而知只能寻求帮助了,但这个程序不是轻而易举就能完成的。有些积极的同学从网上搜索了好多有关这方面的资料,拼拼凑凑,进行了多次讨论,终于完成了这部分的设计,在同学的互相帮助下,大多数人都完成了最重要的一部分程序设计。 接下来就是用循环语句使按键上的数字有闪烁的功能,这个因为之前老师有过提点,所以相对简单一些。
C语言实习报告
C语言实习报告(用链表实现学生学籍管理)
绪言 C语言使国内外广泛使用的一种计算机语言。C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好。既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合编写系统软件。 在经过一整个学期的C语言理论学习,我们已经能够掌握其基本语法,但是缺乏一定的实际运用的能力。为了让我们更好的理解和运用其解决实际问题,并且对结构化程序有更进一步的认识,学校组织了这一次C语言实习。 实习中,我们将按要求完成一个较为复杂的程序编写——学生学籍管理程序。 实习基本内容和要求: 1、总体功能要求 (1)链表的建立:每个节点包括:学号、姓名、性别、语文、数学、英语、总分; (2)节点的插入:按学号的顺序插入; (3)删除链表中的节点:按学号或者姓名; (4)链表的输出:按学号排序、按总分排序。 2、性能的要求: (1)各个功能分别用函数实现;
(2)节点信息让用户通过键盘输入 (3)总分通过计算获得; (4)有简单的操作界面; 尽可能考虑程序的容错性、可操作性。 教材和主要参考书目: (1)教材:《C程序设计》,谭浩强编著,清华大学出版社(2)主要参考书目: ①《C程序设计教程》,谭浩强编著,清华大学出版社; ②《C语言程序设计——习题与实验指导》,谭浩强编著,清华大学出版社。实习过程: 我们将有5天的时间完成一个程序和一份实习报告。 1、我们要根据题目的要求进行需求分析和资料整理;(1天) 2、我们利用资料、教材和寻求他人帮助完成详细设计;(注: 关键部分解释说明)(3天) 3、完成一份对自己程序详细描述与解释的报告。(1天)
c语言课程设计报告书
课程设计报告书 所属课程:c语言 项目:库函数模拟系统 指导老师:邹姝稚 班级:软件1401 姓名:江闯 学号:141403107 分数:
1.任务描述: 本系统开发的代码模拟了下列库函数的功能: (1).模拟gets和puts的功能:能接收一个字符串,将其写入ASCII文件,并且可以读出显示。 (2).在不使用字符串库函数的条件下,编程实现字符串的拷贝,连接,求长,倒置功能。 (3).字符串加密功能:将一段明文建立到一个ASCII文件中,按加密的算法加密后写入密文文件,最终实现将明文和密文文件都显示出来。 (4).编程实现字符串与对应数字的相互转换功能。 2.总体设计: 模块调用图: 图1
函数调用图: 图2 函数功能: (1)函数gp( ):模拟gets和puts的功能 (2)函数kaobei( ):实现字符串的拷贝 (3)函数lianjie( ):实现字符串的连接 (4)函数qiuchang( ):实现字符串的求长 (5)函数daozhi( ):实现字符串的倒置 (6)函数jiami( ):实现字符串的加密功能,最后将明文和密文文件都显示出来 (7)函数zhuanhuan1( ):将数字字符串转换为对应的数字 (8)函数zhuanhuan2( ):将数字转换为对应的数字字符串 3.详细设计: (1).模仿gets和puts功能: gets和puts功能与scanf和printf函数的功能相似,但是也不是完全相同,本系统模拟功能的程序总共运用了两次函数调用技术,模拟gets运用了一次,模拟puts运用了一次。 (2)..字符串的拷贝功能: 字符串的拷贝功能程序设计源于strcpy的功能,其中运用了字符串数组和指针的相关技术,还运用了一组while语句,实现语句的循环,从而将一个字符串拷贝到一个空数组中。
c语言课程设计报告
C语言程序设计B 课程设计报告 设计题目:学生成绩管理系统年级班级: 学号: 姓名: 指导教师: 2020 年 6 月 18 日
目录 一、设计目的 (3) 二、课程设计内容和要求 (4) 三、总体设计 (5) 四、主要步骤 (12) 五、功能实现 (13) 六、功能测试 (64) 七、评价程序 (83) 八、课程设计体会 (84)
一、设计目的 程序设计能力是当代理工类大学生的必备能力,当学生学习了C语言之后,编程能力远远不能达到开发实际应用程序的要求,特备是对其中的指针、结构体、链表和文件部分的理解和应用都比较弱。 程序设计的目的是通过对面向过程的学习,将C语言的主要知识点进行综合,针对提高学生C语言程序设计能力,强化编写较大的应用软件能力,熟练运用已掌握的知识解决实际需要解决的问题,以达到更加熟知指针、链表、结构体、文件读取、标准库的使用。 主要目的为以下几点: 1、熟练掌握面向过程(结构化)程序设计基本知识; 2、综合运用所学知识解决实际问题; 3、受到面向过程(结构化)程序设计的基本训练; 4、体会面向过程(结构化)开发程序的过程。
二、课程设计内容和要求 1.课程设计内容: 学生通过使用C语言进行编写算法,开发学生成绩管理系统,以实现对学生成绩的管理。 2.课程设计要求 1)具有菜单,可以在菜单上进行选择; 2)能实现学生数据录入、修改、删除、查询; 3)能实现数据排序; 4)有数据输出功能; 5)有数据读取与存储功能; 6)一个学生的数据(称为:每条记录)包含姓名、学号、语文、数 学、英语、总分、名次等信息; 7)以结构方式存储每条记录; 8)多条记录以链表方式存储到内存; 9)随时可将全部数据存储到磁盘文件中,方便下次从磁盘读取数据。
最新大学生c语言程序设计实训报告总结
大学生c语言程序设计实训报告总结 C语言是在国内外广泛使用的一种计算机语言。其语言功能丰富、表达能力强、使用灵活方便,,小编整理了大学生c语言程序设计实训报告总结,希望能帮助到您。 大学生c语言程序设计实训报告总结一 C语言是在国内外广泛使用的一种计算机语言。其语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,Unix,Linux,Mac,os/2,无一例外,哪一个不是C语言写的?很多新型的语言如,C++,Java,C#,J#,perl...都是衍生自C语言。掌握了C语言,可以说你就掌握了很多门语言。 学习C程序这门课一年了,这是我们学的第一门专业课,在大学里C语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程。所以作为我这个计算机专业的学生来说当然十分重要,老师在第一节课说过,C语言是计算机的基础,大多数软件都需要用C语言来编写,通过一个年的学习,使我由初步掌握简单的应试知识到完成高难度的深入编程,如我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。同时,我觉得C语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。 在学习一年C语言的过程中我也在慢慢探索怎样才能学好C语言,
并总结了一点经验: 要了解C语言就要从语法规为基础来学习起,首先要是要了解它的结构,比如变量,首先要了解变量的定义方式(格式),其意义是什么(定义变量有什么用);其次就是要我要怎么去运用它(我要用什么型式去应用它)。在C语言的命令行中所有的语句都是有它自己的一定格式和形式出现在我们面前,所以我们在学习某种语句或命令时你首先要了解的就是它的规则是什么、有什么用、怎么实现等。这些都是语法基础也是C语言的基础如果把它们都了解很好了,那么你编起程序来就很得心应手了。比如说IFELSE和SWITCHCASE这两种条件语句都是用来判断执行功能的,那我要什么时侯用IF什么时侯用SWITCH 呢?如果你很好地了解它们的结构和作用的话那么就知道:若它的条件分支是多个而且条件的值是整数或是一个字符值时就会选SWITCH 而不会选IF。因为如果条件分支太多时要用IF语句,这样一定会出现IF的嵌套,如果IF的嵌套越多时程序的开销就会随着增大,这样对整个程序的运行效率就大在降底。而SWITCH就不同,它只要比较一次就可以找出条件的结果比起嵌套IF它的效率就大大的提高了很多。不过SWITCH也有它的约束条件,就是它的条件值一定要是一个整型数或是一个字符值,所以碰到它不能解决的问题时我们也会通常使用IF语句,毕竟IF语句它使用起来也比较方便用的范围也比较广。所以说了解语法规则是很重要的,如果没有一个良好的语法基础是很难编出一个好的程序!学习好基础后我们就可以开始来编程了。 大学生c语言程序设计实训报告总结二
C语言实习报告
设计报告 一,实验目的: 通过上机实习,熟练掌握循环语句、选择语句、指针以及结构体的运用技巧。在实习中通过 实际操作,编写程序,发现问题,最后解决问题,提升对c语言实用性的理解,在实践中巩固各知 识点。 C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点,上 机实习可以帮助我们更好地理解这种结构式的 中级语言以及其各式各样的数据类型和高效率 的运算程序,为我们进一步学习C++打下坚实基 础。 同时,在实习过程中,通过互相发现问题,共同解决问题,不仅锻炼了我们的合作能力,而 且也让我们发现了一些自己的个人误区以及其 他人容易犯的错误,从而在今后的学习中更加谨 慎,达到事半功倍的效果;通过询问老师,也让 我们养成了不耻下问的好习惯,这将很有利于以 后的学习。 闲乐-一个人闲。不如大家一块儿乐https://www.360docs.net/doc/9b17515456.html,
二,总体设计: 1,学生成绩排名 1,流程图: <通过冒泡法对数组进行排序> <测试时由于循环语句循环次数的错误导致部分数据没有排序,修改FOR语言中的条件即可调试成功>