课程设计报告c范文

2022-06-06

随着国民文化水平的提升,报告在工作与学习方面,已经成为了常见记录方式。报告是有着写作格式与技巧的,写出有效的报告十分重要。下面是小编为大家整理的《课程设计报告c范文》,供大家参考借鉴,希望可以帮助到有需要的朋友。

第一篇:课程设计报告c范文

C语言课程设计报告

1. 实验题目:职员信息管理系统

2. 数据结构:整型int,字符型char,长整型long,结构体及结构体数组 3. 源代码 :

#include"stdio.h" #include"string.h" #define N 20

/*符号常量的定义*/ struct employee

/*定义结构体类型employee*/ {

char name[15]; char sex; long num;

/*职工工号可能较长,定义为长整型*/ char debt[15]; int salary; char office[15]; char tel[15]; }emp[N];

/*定义结构体数组,并将其作为全局变量*/ void menu() {

int i; printf("请选择您的操作: "); printf(" 1. 增加职工信息 "); printf(" 2. 查找职工信息 "); printf(" 3. 显示所有职工信息 "); printf(" 4. 删除职工信息 "); printf(" 0. 退出 "); printf("请选择按键!(0-4): "); scanf("%d",&i);

/*从键盘输入数据并将其值赋给i*/

void input(); void search();

void show(); void omit();

/*被调函数定义出现在主调函数之后,应对其进行原型说明*/ switch(i)

/*使用switch语句,根据i的数值,进入相应的操作环境*/ {

case 1:input();break;

case 2:search();break;

/*在switch语句中掌握对break的使用*/ case 3:show();break; case 4:omit();break;

/*实现函数的调用*/

case 0:

{ printf(" ----- "); printf(" 谢谢您对本公司职工信息管理程序的使用 ");

printf(" ----- "); }break;

default:printf("您输入的数据有误,请确认后重新输入! ");menu(); } } void fun(int i)

/*search()函数和omit()函数都对此函数进行调用,输出相应职工信息*/ {

printf("职工信息找到!!!信息如下: "); printf("姓名 工号 性别 部门 工资 职位 电话 "); printf("%s %ld %c %s %d %s %s ",emp[i].name,emp[i].num,emp[i].sex,emp[i].debt,emp[i].salary,emp[i].office,emp[i].tel); } void input()

/*定义input()函数,实现职工信息的录入功能*/ {

int i,j,k,a; for(i=0;i

/*使用条件语句,防止原有的职工信息被覆盖*/

{

printf("增加职工信息时: "); printf("请输入职工姓名:"); fflush(stdin);

/*刷新缓冲区,下同*/ gets(emp[i].name);

/*使用gets()函数实现字符串的输入,下同*/ do { printf("请输入职工号:"); scanf("%d",&a); for(k=0;k

if(k

/*判断所输入工号是否已存在*/

printf("该工号已存在,请重新输入! "); }while(k

/*do-while语句控制本层循环*/ emp[i].num=a; printf("请输入职工性别,男(M)女(F):"); fflush(stdin); emp[i].sex=getchar();

/*使用getchar()函数实现字符的输入*/ printf("请输入职工部门:"); fflush(stdin); gets(emp[i].debt); printf("请输入职工工资:"); scanf("%d",&emp[i].salary); printf("请输入职工职位:"); fflush(stdin); gets(emp[i].office); printf("请输入职工联系电话:"); fflush(stdin);

gets(emp[i].tel); printf("职工添加成功!!! "); printf("还继续增加吗?继续请输入1否则输入0: "); scanf("%d",&j); if(j==0) break;

/*使用break语句,在条件成立时跳出for循环*/ } menu();

/*不再添加职工信息时,返回到目录函数menu()*/

} void search()

/*定义search()函数,实现职工信息的查找功能*/ {

int i,j,number; printf("请输入要查找的职工号:");

scanf("%d",&number); for(i=0;number!=emp[i].num&&i

/*i

/*函数的递归调用*/ else menu();

/*不再查找职工信息时,返回到目录函数menu()*/

} void show()

/*定义show()函数,实现职工信息的显示功能*/ {

printf("%s %ld %c %s %d %s %s ",emp[i].name,emp[i].num,emp[i].sex,emp[i].debt,emp[i].salary,emp[i].office,emp[i].tel); menu();

/*输出所有信息后,返回到目录函数menu()*/ } void omit()

/*定义omit()函数,实现职工信息的删除功能*/ {

int i; printf("所有职工信息如下: "); printf("姓名 工号 性别 部门 工资 职位 电话 "); for(i=0;i

/*利用for循环输出所有职工信息*/ int i,j,a,number; printf("请输入要删除的职员号:"); scanf("%d",&number); for(i=0;number!=emp[i].num&&i

/*i

scanf("%d",&a); if(a==1) { strcpy(emp[i].name,"");

/*确定删除后,还原结构体成员*/

} emp[i].num=0; emp[i].sex=; strcpy(emp[i].debt,""); emp[i].salary=0; strcpy(emp[i].office,""); strcpy(emp[i].tel,""); printf("删除成功!!! "); } else

printf("无对应信息,请重新查找!!! "); printf("还继续删除吗?继续请输入1否则输入0: "); scanf("%d",&j); if(j==1) omit();

/*函数的递归调用*/ else { printf("删除成功后"); show();

/*调用show()函数,输出删除成功后所有职工信息*/ } } void main()

/*程序由主函数开始运行*/ {

int i; for(i=0;i

/*利用for循环语句对结构体数组赋初值*/

emp[i].num=0; emp[i].sex=; strcpy(emp[i].debt,""); emp[i].salary=0; strcpy(emp[i].office,""); strcpy(emp[i].tel,""); }

printf(" ---------------------------- "); printf(" 欢迎进入公司职工信息管理程序 ");

printf(" ---------------------------- ");

menu(); }

4. 每种情况下的运行结果截图

1. 判断输入数据是否有误的运行结果截图

2. 增加职工信息并确保工号不重复时的运行结果截图

3. 查找职工信息时的运行结果截图

4. 显示所有职工信息时的运行结果截图

5. 删除职工信息,并通过显示所有职工信息验证该信息是否确实被删除时的运行结果截图

6. 继续添加职工信息时的运行结果截图

7. 显示最后的所有职工信息时的运行结果截图

8. 退出该系统时的运行结果截图

5. 学习心得体会:

学习C语言程序设计这门课一个学期了,这是我所学的第一门计算机课程,作文一名当代的大学生,我认为这十分重要。记得宇文老师在第一节课就说过,C语言是计算机的基础,通过一个学期的学习,使我掌握了关于这门课的基本知识。这次的课程设计是对我们一个学期来所学的知识的综合考察,里面涉及到了我们大多数所学知识。记得刚开始学这门课的时候,自己很有信心学好这门课,但是经过一段时间的学习之后。才发现程序设计并不好学,它既要我们有很强的领悟能力,还需要课后的努力。之后,随着时间的推移,我慢慢掌握了这门课学习的一些窍门,学习起来也比刚开始的时候好了很多,虽然编程有时还会有错误,但比以前少了很多。这次的课程设计要求我们编一个简单的公司职工信息管理系统,在编程过程中我走了很多弯路,也犯过了很多错误。最终在其他同学的帮助和宇文老师的指导下我完成了这次课程设计,因此对C语言也有了更多的理解和体会。今后我会通过课外学习了解更多的C语言知识!

第二篇:C语言课程设计停车场报告

C语言上机实习报告

指导老师:吴杰 学生姓名:刘超 班级序号:02305231 学生证号:20051004279

一.题目要求

设有一个可以停放N辆汽车的狭长停车场,它只有1个大门可以供车辆进出。车辆按到达停车时间的早晚依次从停车场罪戾面向大门口停放。如果停车场已放满N辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排放在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在他之后进来的车都必须先退出停车场为它让路,等待其开出停车场后,这些车辆再依原来次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离开,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。

二.需求分析

停车场采用栈式结构,停车场外的便道采用队列结构(即便道就是等候队列)。

停车场的管理流程如下:①当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进栈(车辆进入停车场);如果停车场已满,则车辆进入等候队列(车辆进入便道等候)。 ②当车辆要求出栈时,该车到栈顶的那些车辆先弹出栈(在它之后进入的车辆必须先退出车场为它让路),再让该车出栈,其他车辆再按原次序进栈(进入车场)。当车辆出栈完毕后,检查等候队列(便道)中是否有车,有车则从队列头取出一辆车压入栈中。

三.总体设计

采用面向对象设计方法:先抽象出类,再分析每个类有哪些成员变量,每个类应该实现哪些功能(即应该有哪些成员函数)。最后,根据要求实现类的成员函数,完成该模拟的逻辑设计和实现。

四.详细设计

#include #include #include

#define MAX 2 /*车库容量*/ #define price 0.05 /*每车每分钟费用*/ typedef struct time{ int hour; int min; }Time; /*时间结点*/ typedef struct node{ char num[10]; Time reach; Time leave; }CarNode; /*车辆信息结点*/ typedef struct NODE{ CarNode *stack[MAX+1]; int top; }SeqStackCar; /*模拟车站*/ typedef struct car{ CarNode *data; struct car *next; }QueueNode; typedef struct Node{ QueueNode *head; QueueNode *rear; }LinkQueueCar; /*模拟通道*/

void InitStack(SeqStackCar *); /*初始化栈*/ int InitQueue(LinkQueueCar *); /*初始化便道*/ int Arrival(SeqStackCar *,LinkQueueCar *); /*车辆到达*/ void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*车辆离开*/ void List(SeqStackCar,LinkQueueCar); /*显示存车信息*/

void main() { SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch; InitStack(&Enter); /*初始化车站*/ InitStack(&Temp); /*初始化让路的临时栈*/ InitQueue(&Wait); /*初始化通道*/ while(1) { printf(" 1. the car arrive"); printf(" 2. the car leave"); printf(" 3. the schedule "); printf(" 4. out "); while(1) { scanf("%d",&ch); if(ch>=1&&ch<=4)break; else printf(" please choose: 1|2|3|4."); } switch(ch) { case 1:Arrival(&Enter,&Wait);break; /*车辆到达*/ case 2:Leave(&Enter,&Temp,&Wait);break; /*车辆离开*/ case 3:List(Enter,Wait);break; /*列表打印信息*/ case 4:exit(0); /*退出主程序*/ default: break; } } }

void InitStack(SeqStackCar *s) /*初始化栈*/ { int i; s->top=0; for(i=0;i<=MAX;i++) s->stack[s->top]=NULL; } int InitQueue(LinkQueueCar *Q) /*初始化便道*/ { Q->head=(QueueNode *)malloc(sizeof(QueueNode)); if(Q->head!=NULL) { Q->head->next=NULL; Q->rear=Q->head; return(1); } else return(-1); } void PRINT(CarNode *p) /*打印出站车的信息*/ { int A1,A2,B1,B2; printf(" please input thedepart time:/**:**/"); scanf("%d:%d",&(p->leave.hour),&(p->leave.min)); printf(" the number of the car:"); puts(p->num); printf(" the time the car arrive: %d:%d",p->reach.hour,p->reach.min); printf("the depart time: %d:%d",p->leave.hour,p->leave.min); A1=p->reach.hour; A2=p->reach.min; B1=p->leave.hour; B2=p->leave.min; printf(" the fee: %2.1f元",((B1-A1)*60+(B2-A2))*price); free(p); } int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*车辆到达*/ { CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode)); flushall(); printf(" input the number of the car(例:陕A1234):"); gets(p->num); if(Enter->toptop++; printf(" the place of the car.",Enter->top); printf(" the time thecar arrive:/**:**/"); scanf("%d:%d",&(p->reach.hour),&(p->reach.min)); Enter->stack[Enter->top]=p; return(1); } else /*车场已满,车进便道*/ { printf(" 该车须在便道等待!"); t=(QueueNode *)malloc(sizeof(QueueNode)); t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; return(1); } } void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) { /*车辆离开*/ int i, room; CarNode *p,*t; QueueNode *q; /*判断车场内是否有车*/ if(Enter->top>0) /*有车*/ { while(1) /*输入离开车辆的信息*/ { printf(" 请输入车在车场的位置/1--%d/:",Enter->top); scanf("%d",&room); if(room>=1&&room<=Enter->top) break; } while(Enter->top>room) /*车辆离开*/ { Temp->top++; Temp->stack[Temp->top]=Enter->stack[Enter->top]; Enter->stack[Enter->top]=NULL; Enter->top--; } p=Enter->stack[Enter->top]; Enter->stack[Enter->top]=NULL; Enter->top--; while(Temp->top>=1) { Enter->top++; Enter->stack[Enter->top]=Temp->stack[Temp->top]; Temp->stack[Temp->top]=NULL; Temp->top--; } PRINT(p); /*判断通道上是否有车及车站是否已满*/ if((W->head!=W->rear)&&Enter->tophead->next; t=q->data; Enter->top++; printf(" 便道的%s号车进入车场第%d位置.",t->num,Enter->top); printf(" 请输入现在的时间/**:**/:"); scanf("%d:%d",&(t->reach.hour),&(t->reach.min)); W->head->next=q->next; if(q==W->rear) W->rear=W->head; Enter->stack[Enter->top]=t; free(q); } else printf(" 便道里没有车. "); } else printf(" 车场里没有车."); /*没车*/ } void List1(SeqStackCar *S) /*列表显示车场信息*/ { int i; if(S->top>0) /*判断车站内是否有车*/ { printf(" 车场:"); printf(" 位置 到达时间 车牌号 "); for(i=1;i<=S->top;i++) { printf(" %d ",i); printf("%d:%d ",S->stack[i]->reach.hour,S->stack[i]->reach.min); puts(S->stack[i]->num); } } else printf(" 车场里没有车"); } void List2(LinkQueueCar *W) /*列表显示便道信息*/ { QueueNode *p; p=W->head->next; if(W->head!=W->rear) /*判断通道上是否有车*/ { printf(" 等待车辆的号码为:"); while(p!=NULL) { puts(p->data->num); p=p->next; } } else printf(" 便道里没有车."); } void List(SeqStackCar S,LinkQueueCar W) { int flag,tag; flag=1; while(flag) { printf(" 请选择 1|2|3:"); printf(" 1.车场 2.便道 3.返回 "); while(1) { scanf("%d",&tag); if(tag>=1||tag<=3) break; else printf(" 请选择 1|2|3:"); } switch(tag) { case 1:List1(&S);break; /*列表显示车场信息*/ case 2:List2(&W);break; /*列表显示便道信息*/ case 3:flag=0;break; default: break; } } }

程序运行过程:

1。主系统程序

2.选择所需系统

存储完毕程序继续进行。

选择2为车辆离开启动程序:

选择4退出程序。

五.总结

通过该实例的设计分析,掌握了模块设计的方法,理解和运用了结构化程序设计的思想和方法。掌握和提高了利用C语言进行编程设计的能力。

第三篇:C语言课程设计报告 火车售票查询系统(完)

湖北工业大学

工程技术学院

课程设计报告书

课程名称:

C语言课程设计

级:

物联网一班

小组成员: 范立恒、陈根、聂俊豪、麦灿文、黄文康

长:

范立恒

指导教师:

楚惟善

二○一三 年 六 月

C语言课程设计实验报告

1 课程题目及要求及要求

题目一:火车售票系统

任务:结合C语言中相关知识,设计出火车售票系统。

1 录入北京西站车次信息; 2 旅客按车次买票;

3 统计某日火车票销售金额。

程序要求:

 贯彻结构化的程序设计思想。

 用户界面友好,功能明确,操作方便。

 用户界面中的菜单至少应包括“车次信息录入”、“旅客买票”、“统计某

日销售 金额”、“退

出”4项。

 代码应适当缩进,并给出必要的注释,以增强程序的可读性  为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定;

 根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执行。源程序要求书写规范,结构清晰。重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。

 程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和

2 程序分设计说明

经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。在这些函数当中,添加车次数据函数,售票函数,查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。 1. 添加车次函数

主要实现程序最初运行时车次的录入;

- 2

C语言课程设计实验报告

(1)添加学生数据函数add 真以追加方式打开E盘student.txt文件成功?假假输出文件打开失败以追加方式打开E盘student.txt文件成功?真输入添加学生数量n循环变量i=1当i<=n时输入学号、姓名和三门成绩学生信息写入文件 i++关闭文件图2 添加学生数据函数

返回

(2)读取学生数据函数reads 真以读方式打开E盘student.txt文件成功?假循环变量i=0当文件未结束时读取学生信息到数组元素stu[i]中i++关闭文件返回学生人数i图3读取学生数据

输出文件打开失败返回

(3)删除学生记录函数del

- 4

C语言课程设计实验报告

n=reads(stu)循环变量i=0当i

j++图5按总分排

4.程序清单

本程序主要由九个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,添加学生数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。 1.录入车次信息函数

录入车次信息,首先由程序创建一个新文件,并将录入的车次信息写入该文件(e: rain.txt)当中。具体的程序段如下:

if((fp=fopen("e: rain.txt","a"))==NULL) //如果文件已经存在,可以追加车次信息

{

if((fp=fopen("e: rain.txt","w"))==NULL) // 文件不存在时,创建新文件,输入车次信息

{

- 6

C语言课程设计实验报告

scanf("%d",&j);

tra[i].maipiao=tra[i].maipiao+j;

printf(" 购买成功 ");

printf(" %12d%11d%11s%11s%11d%11.2f ",tra[i].num,tra[i].date,tra[i].from,tra[i].ter,tra[i].maipiao,tra[i].tickeprice);

save(tra,n); 3. 查询销售总额

对于也使用比较日期的方法实现的,这部分程序仍然调用了reads函数,整个排序过程在文件中实现,然后用for循环进行运算,把查询这一天的总额算出。

具体程序如下:

if((fp=fopen("e: rain.txt","r"))==NULL)

{ printf("读取错误,不能打开该文件!! ");

return; } else

for(i=0;i

fscanf(fp," %d %d %s %s %d %f ",&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice);

printf("请输入你要查询的日期: ");

scanf("%d",&temp.date);

for(i=0;i

- 8

C语言课程设计实验报告

知识并在此基础上对数据结构的特点和算法有了更深的了解, C语言是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已经成为其他理工专业的热门选修课。在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性,同时这两周的学习也提高了我适应实际,实践编程的能力. 黄文康:首先这一周的学习,使我在巩固了原有的理论知识上,培养了我灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力,使我体会到自身知识和能力在实际中的应用和发挥。其次,激发了我创新意识,开发创造的能力和培养沟通能力。另外,让我进一步熟悉了数据结构的设计应用。每一处编码都是在反复的熟悉数据结构的结构特性,及其语法、函数和程序设计思想的过程,对我数据结构的学习和提高很有益处,并且使我明白了程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:第一要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;第二,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的数据结构的基本类型——线性表、栈、队列、串、数组、树和二叉树以及图等,然后确定处理过程——算法,可得最后结论。最后,在这次课程设计过程中,我们深刻的认识到了自己在学习方面的不足之处,我们知道我们还有太多的基本的思想没有真正的理解,当然我们不会灰心,我们会在以后的日子里努力弥补我们的不足。

麦灿文:一个礼拜的课程设计让我们受益匪浅。要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,不断经历失败,然后又不断的尝试才能获得成功。两个多礼拜中,我们有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。一个礼拜的时间我们经历了很多,也收获了很多。与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我们不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题。

对于我本人来讲这次课程设计的总体表现,我自己还比较满意,每天做到了按时的出勤,上机遵守机房的管理规定,遵循指导老师的安排并能适时地与老师进行沟通,觉得不足的是不能熟练地掌握c语言的设计技巧使编程的结果缺乏效率,不过我相信这只是我的一个开始,我更应该注重的是这次过程,我坚信我会在以后的学习和训练中不断地弥补自己的不足之处,不断的完善自己的编程能力,因为成功需要一点一点积累。

- 10

C语言课程设计实验报告

} void menu() { printf("

************************* 武昌站火车订票系统************************ ");

printf("

1 显示当前时间");

printf("

2 车次信息录入");

printf("

3 显示");

printf("

4 旅客买票"); printf("

5 统计某日销售金额");

printf("

6 退出"); } int reads(struct train tra[N]) // 读取车次中的内容 {

FILE *fp;

int i=0;

if((fp=fopen("e: rain.txt","r"))==NULL) {

printf("文件打开失败! ");

return 0; }

else {

for(i=0;!feof(fp);i++)

fscanf(fp,"%d %d %s %s %d %f ",&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice);

}

fclose(fp);

return i; } void save(struct train tra[N],int n) // 车次信息改变后更新文件 { FILE *fp;

int i=0;

if((fp=fopen("e: rain.txt","w"))==NULL) {

printf("文件打开失败! ");

return ; }

else {

for(i=0;i

- 12

C语言课程设计实验报告

getch(); }

void sell() // 按顾客要求对车次信息卖票 {

struct train tra[N];

int num,n,j;

int i;

n=reads(tra);

printf(" 请输入待查询的车次号,按回车键确认: ");

scanf("%d",&num);

for(i=0;i

if(num==tra[i].num) break;

if(i>=n)

{

printf("没有找到该车次信息! ");

return;

}

else

printf(" 请输入所买票数,按回车键确认: ");

scanf("%d",&j);

tra[i].maipiao=tra[i].maipiao+j;

printf(" 购买成功 ");

printf(" %12d%11d%11s%11s%11d%11.2f ",tra[i].num,tra[i].date,tra[i].from,tra[i].ter,tra[i].maipiao,tra[i].tickeprice);

save(tra,n); } void all()//统计销售金额 { struct train tra[N],temp; float sum=0; FILE *fp; int i,j=0; if((fp=fopen("e: rain.txt","r"))==NULL)

{ printf("读取错误,不能打开该文件!! ");

return; } else

for(i=0;i

fscanf(fp," %d %d %s %s %d %f ",&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice);

printf("请输入你要查询的日期: ");

- 14

C语言课程设计实验报告

4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施

5、源程序清单和执行结果(光盘):清单中应有足够的注释

二、具体安排:

学生以2—6人为一组,共同完成一个题目,选出一个组长负责分工和管理,共同完成总体框架设计,然后每个学生分工独立完成各自的功能模块的编程,最后要能集成并测试通过。

每组要以光盘形式上交C源文件和可执行文件(放在组长文件袋中,其他成员在报告本中写明源程序在哪个同学的文件袋中)

(注:课程设计报告统一使用学院规定的课程设计报告本和文件袋)

三、备注

每个人可自行附加模块设计心得

及所发现的问题及解决方法

《C语言课程设计报告

火车售票查询系统(完)》的word文档中1.、

2、

3、

4、7是统一一样的

你们需要另外说明 哪个版块是你设计的

OK )

- 16 -

第四篇:c课程设计

1. 题目:

打开文件“file1.dat”,并将文件中的内容输出到屏幕。 2. 思路分析 3. 程序代码:

#include #include int main(void) { FILE *fp; char ch; //文件打开

fp=fopen("file1.dat","r"); if(fp==NULL)//打开失败,退出

exit(0); //读取一个字符

ch=fgetc(fp); while(!feof(fp))//不算文件末尾

{

putchar(ch);//显示字符

ch=fgetc(fp); } //关闭文件

fclose(fp); return 0; } 4. 运行结果截图:

新能源与动力工程学院

第五篇:c课程设计

数学与信息学院工程2007级 C语言程序设计大型作业报告

题目: 用栈设置密码 学号:

姓名:

联系电话: Email:

任课教师:

报告递交日期: 2009年2月20日

用栈设置密码

用C语言来编制程序,让读者了解到C在现实生活中运用的一个示例.

一.系统功能说明 .............................................................................................................................. 3

1.1整体程序 ............................................................................................................................. 3 1.2程序内部 ............................................................................................................................. 3

1.2.1 主程序 ..................................................................................................................... 3 1.2.2 其他函数 ................................................................................................................. 3

二.使用说明 ...................................................................................................................................... 4

2.1安装手册 ............................................................................................................................. 4 2.2使用手册 ............................................................................................................................. 4 三.程序结构 ...................................................................................................................................... 5

3.1程序结构说明 ..................................................................................................................... 5

3.1.1头函数 ...................................................................................................................... 5 3.1.2 creat 函数 ................................................................................................................ 5 3.1.3compare 函数 ........................................................................................................... 5 3.1.4display 函数 ............................................................................................................. 5 3.1.5main 函数 ................................................................................................................. 5 3.2 重要数据的说明 ................................................................................................................ 6 3.3程序函数清单 ..................................................................................................................... 6 四.系统设计难点及其解决方法 .................................................................................................... 10 4.1密码 ................................................................................................................................... 10 4.1.1 是否要输入密码 ................................................................................................... 10 4.1.2 密码的设置 ........................................................................................................... 10 4.1.3 是否有密码的输入 ............................................................................................... 10 4.2验证密码 ........................................................................................................................... 11 五.不足之处 .................................................................................................................................... 11 六.其他说明 .................................................................................................................................... 11

2 一.系统功能说明

1.1整体程序

该程序是利用c语言来密码验证程序,可以根据设计好的程序对另外的程序等对象设置一个密码,只要能正确的输入密码就可以进入所想要进入的对象,从而使其具有一定的安全性能.

1.2程序内部 1.2.1 主程序

主程序首先以菜单的形式出现,你可以根据自己的喜好选择是否要设置密码,这样给人视觉上的舒适;接着调用函数输入密码和比较来验证密码

1.2.2 其他函数

1.运用调用的函数可以来设置密码 2.验证密码是否正确; 3.输出你输入的验证密码,看是否你是否输入错误,以致可以在下次输入时有所注意;

3 二.使用说明

2.1安装手册 先从网上下载好编制这个程序的软件,而我选择的编程软件是c-free,其功能和TC相近,而且更适合初学者运用,它可以让你使用鼠标,让你在编程的过程中带有些方便性,而且它也可以输入输出中文,让你在理解上也加强了; 下载地址: http:///

安装:

(我下载的是cfree4_0_std_setup_ch.exe,也以其为说明对象;) 打开cfree4_0_std_setup_ch.exe软件(双击)--出现安装界面,单击”下一步”--同意协议,”下一步”--在”浏览”处选择你存放位置,”下一步”--(同上一步)--选择附加快捷方式,”下一步”--”确定”即可安装好c-free; 2.2使用手册

1.打开c-free,新建一个空白页,便可以开始编写程序 2.编写好后就可以”运行并调试”程序,生成.o和.exe文件,若出现错误提示,可以根据提示出现错误的行和其错误的原因进行修改,(和TC的功能相似);

4 三.程序结构

3.1程序结构说明

整个程序大致可以分为五个部分: 3.1.1头函数

这里的头函数用到的是”stdio.h”,其包括了程序中出现的一些输入输出函数等,确保了函数能够顺利的进行; 3.1.2 creat 函数 该函数运用栈的形式来放入数字来建立密码 3.1.3compare 函数 该函数将把输入的验证密码和所设置的密码进行比较判断是否两个密码的值相等,并以flag(其值为0或者1)来标记是否相等,并把该值返回到主函数中; 3.1.4display 函数 该函数是将密码进行输出,让人了解到上一次输入的值,从而知道是否是自己输入错误,有提醒的作用; 3.1.5main 函数

该函数是主函数,先一个菜单的形式出现,能给人以良好的视觉感

5 受,后以switch可以选择是否要设置密码, 其中调用creat等函数来进行密码的设置和验证 3.2 重要数据的说明

1)count 该值作为一个标志符号,来记入验证密码输入的次数,若超过3次(即count>=3)则输入无效 2)f 也是一个标识符,当f=1时,则说明不设置密码,直接以”输入正确的形式进入”,若f=0,则是要设置密码; 3)flag

存放compare函数的返回值,来标识验证密码是否输入正确,若为0则错误,为1则争取; 3.3程序函数清单 #include

//头函数

//结点设置 typedef struct LNODE{int data;

struct LNODE *next;

}LNODE,*Linkstack; Linkstack creat(Linkstack S) {

int node;Linkstack p; 就是密码的值

//用来设置密码

//node为结点内的值,也 6

S=NULL;

printf("input the node(end with 0):");

scanf("%d",&node);

while(node!=-1)

//运用while 来输入密码

{ p=(Linkstack)malloc(sizeof(LNODE));

p->data=node;

p->next=S;

S=p;

scanf("%d",&node); }

return S; } int compare(Linkstack S,Linkstack Sa) //把验证密码和设置的密码进行比较(用返回flag 的值来判断密码是正确) {

Linkstack p,q;

int flag; p=S; q=Sa; while(p!=NULL&&q!=NULL) //判定结点内的值是否相等 { if(p->data==q->data) { p=p->next;q=q->next; } else {

flag=0;return flag; } }

} if(p==NULL&&q==NULL) { flag=1; return flag;} else { flag=0; return flag;} Linkstack display(Linkstack S) {

Linkstack p;

p=S;

while(p!=NULL){ printf("%2d",p->data);

//输出验证密码栈

p=p->next;}

printf(" "); } main() {

Linkstack secret,s; //secret为密码栈,s为验证密码栈

int count=0,flag,f=0; //count来标识输入验证密码的次数,f为判断是否要输入密码;

int x; printf("是否存在密码");

printf(" 1--存在 2--不存在,建密码"); printf(" 请选择(1或者2):" ); scanf("%d",&x);

} switch(x){ case 1:f=1;break; case 2:secret=creat(secret);break;} while(count<3&&!f){ printf("请输入密码: "); s=creat(s); display(s); flag=compare(secret,s); if(!flag) { printf("输入错误; "); count++;} else{printf("输入正确");break; } } if(count==3&&f) printf("今天输入次数已满--输入无效"); if(f&&!count) printf("无密码,直接进入");

9 四.系统设计难点及其解决方法

4.1密码

4.1.1 是否要输入密码 有时候人们希望虽然可以密码设置,但有时候也会希望不要密码,可以直接进入想要进入的界面,则这这种情况是两者选一; 解决方法:用一个菜单的界面,让对方选择是否要输入密码,从而解决了此类问题; 4.1.2 密码的设置 要设置密码和验证密码,则必须至少要书写两个创建密码,但是密码的创建本身就程序内容很多且有重复,使程序看起来很多,篇幅很长,使用者看的也很烦; 解决方法:用一个函数creat()来设置密码,当要设置密码时只要调用函数就可以了,不仅程序看起来篇幅变短,而且易懂; 4.1.3 是否有密码的输入 前面我们选择了是否要输入密码,当不需要密码输入时可以直接显示”直接进入”,而不需要输入密码和密码验证

解决方法:引进f,来标识是否输入密码,当不需要f=1;在输入验证密码之前以while(count<3&&!f)来标识不需要输入密码

10 4.2验证密码 验证密码的次数最多一下子只能有三次,则必须要控制好输入验证密码的次数

解决方法:引进一个标识符count ,当count<3的时候则可以输入验证密码,以count++的形式来表示输入的次数; 五.不足之处

每次运行程序时密码都是空的,要么不输入密码,直接进入;要么是输入密码来验证,但是无法将密码保存,从而无法直接输入密码,来和保存好的密码进行比较; 六.其他说明

该函数只要是用来设置密码的,相当于加密,让设置了密码的对象具有一定的安全性能;当输入密码正确后可以进入加密对象,如是文件word,我们就可以在输入正确后直接打来该文件,否则就不行; 即:

else{ printf("输入正确"); 和if(f&&!count) printf("无密码,直接进入");后加入一句 : fopen(word,’r’); 这样就更加明显的体现了对对象加密的性质,也说明了该程序的一个作用;

上一篇:个人承诺书范文下一篇:市场7月份总结范文