c语言车辆管理系统课程设计.doc
C语言课程设计——简易公交车管理系统(数组实现)

/**************************头文件声明************************************/#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"/**************************函数声明************************************/void init(); //初始化函数void add(); //信息录入函数void view(); //信息显示函数void mod(); //信息修改函数void modmeun(); //修改菜单void modnavimeun(); //路线修改菜单void del(); //信息删除函数void find(); //信息查询函数void findmeun(); //查询菜单void findnavi(); //路线导航查询函数void findnum(); //路线编号查询函数void findstameun(); //站台信息查询菜单void findsta(); //站台信息查询函数void save(); //信息保存函数void mainmeun(); //主菜单char Test(char a,char b,char c); //菜单输入检测函数/**************************宏定义声明************************************/ #define N 100 //公交车数量/**************************结构体定义************************************/ struct station //途径站点信息{char c[20]; //站点名称};struct bus //公交车信息{char num[20]; //公交车路线编号char name[20]; //司机姓名int n; //站台数目struct station b[12]; //站台名称char topen[20]; //起始时间char tclose[20]; //终止时间int money; //票价}a[N];/**************************函数定义************************************/int main(){char a;init();printf("\n\t\t目前所能录入的公交车数量上限为 %d 辆\n\n",N);printf("\n\t\t输入回车键继续\n");fflush(stdin); //清除键盘缓冲区while(1){system("cls");mainmeun();a=Test(getchar(),'1','6'); //菜单检测输入函数switch(a){case '1': system("cls"); add(); break;case '2': system("cls"); view(); break;case '3': system("cls"); mod(); break;case '4': system("cls"); del(); break;case '5': system("cls"); find(); break;case '6': return 0;}}return 0;}void init() //初始化函数{FILE *fp; //文件指针int i;if((fp=fopen("bus.txt","r+"))==NULL) //初次尝试打开"bus.txt"文本文件{printf("\n\t\t文件打开失败\n\n\t\t正在尝试创建新文件...\n");fp=fopen("bus.txt","w"); //创建"bus.txt"文本文件if((fp=fopen("bus.txt","r+"))==NULL) //再次判断是否打开成功{printf("\t\t文件创建失败\n");return;}}fp=fopen("bus.txt","r+");for(i=0;i<N;i++) //将磁盘中的信息输出到内存中if(fread(&a[i],sizeof(struct bus),1,fp)!=1)break;fclose(fp);printf("\n\t\t初始化完成\n\n");return;}void add() //信息录入函数{FILE *fp=NULL; //文件指针int i,j;char cc[20];for(i=0;i<N;i++){if(*a[i].num!='\0')continue;else{printf("\n添加第%d辆公交车路线记录:\n",i+1);printf("\n请输入路线编码(3位编码,第一位为大写字母,后两位为数字):\n"); //路线编码scanf("%s",cc);for(j=0;j<N;j++) //检验是否重复if(strcmp(a[j].num,cc)==0){printf("\n与已有路线编码重复,按回车键返回\n");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}strcpy(a[i].num,cc);printf("\n请输入司机姓名: "); //司机姓名scanf("%s",a[i].name);printf("\n请输入途径站台总数(>=2): "); //站台总数scanf("%d",&a[i].n);printf("\n");if(a[i].n<2||a[i].n>12){while(a[i].n<2||a[i].n>12){printf("\n站台总数应满足(2<=n<=12),请重新输入: ");scanf("%d",&a[i].n);printf("\n");}}for(j=0;j<a[i].n;j++){printf("请输入第%d个站台名称: ",j+1); //站台名称scanf("%s",a[i].b[j].c);}printf("\n自动生成公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++){printf(" ----> (%d) %s",j+1,a[i].b[j].c);}printf("\n\n请输入公交车的起始时间(格式为:时:分): "); //起始时间scanf("%s",a[i].topen);printf("请输入公交车的终止时间(格式为:时:分): "); //终止时间scanf("%s",a[i].tclose);printf("\n请输入公交车的票价: "); //票价scanf("%d",&a[i].money);printf("\n第%d辆公交车路线记录创建成功\n",i+1);save();printf("\n\t按回车键返回\n");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}}if(i==N)printf("\n\n\n\t空间已满,不能录入\n");printf("\n\t按回车键返回\n");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}void view() //信息显示函数{int i,j,min;struct bus t;for(i=0;*a[i].num!='\0'&&i<N;i++) //按“路线编号”用选择法排序{min=i;for(j=i+1;*a[j].num!='\0'&&j<N;j++)if(strcmp(a[i].num,a[j].num)>0)min=j;t=a[i];a[i]=a[min];a[min]=t;}printf("\n\n 公交车信息库");printf("\n**************************************************************** ****************\n");for(i=0;*a[i].num!='\0'&&i<N;i++){printf("\t路线编号: %-6s\t单程票价: %d 元\t\t司机姓名: %s\n",a[i].num,a[i].money,a[i].name);printf("\t起始时间: %-6s\t终止时间: %-6s\t站台总数: %d\n",a[i].topen,a[i].tclose,a[i].n);printf("\t公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++)printf(" ---->(%d) %s",j+1,a[i].b[j].c);printf("\n\n");}printf("\n**************************************************************** ****************\n");printf("\n\t\t公交车信息显示完毕\n");printf("\n\t\t输入回车键返回主菜单:");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}void mod() //信息修改函数{int i,j,m=0;char t,cc[20],mod[20];printf("请输入要修改信息的公交车路线编号:\n");scanf("%s",cc);for(i=0;*a[i].num!='\0'&&i<N;i++) //查找所输入的公交车{if(strcmp(a[i].num,cc)==0){m=1;printf("\n\n\t\t已找到\n");while(1){system("cls");printf("\n\n 正在修改的公交车信息\n");printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n");printf("\t路线编号: %-6s\t单程票价: %d 元\t\t司机姓名: %s\n",a[i].num,a[i].money,a[i].name);printf("\t起始时间: %-6s\t终止时间: %-6s\t站台总数: %d\n",a[i].topen,a[i].tclose,a[i].n);printf("\t公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++)printf(" ---->(%d) %s",j+1,a[i].b[j].c);printf("\n\n");printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n\n");modmeun();fflush(stdin); //清除键盘缓冲区t=Test(getchar(),'1','5'); //菜单检测输入函数system("cls");switch(t){case '1': //修改路线编号{int k;printf("\n请输入新的公交车编号:");scanf("%s",mod);for(k=0;*a[k].num!='\0'&&k<N;k++){if(strcmp(a[k].num,mod)==0){printf("与已有编号重复,按回车键返回主菜单\n");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}}strcpy(a[i].num,mod);save();break;}case '2': //修改车辆信息{printf("\n请输入新的司机姓名:");scanf("%s",a[i].name);printf("\n请输入新的公交车票价:");scanf("%d",&a[i].money);save();break;}case '3': //修改行车路线{void modnavimeun(); //路线修改菜单int k;char z;while(1){system("cls");modnavimeun();fflush(stdin); //清除键盘缓冲区z=Test(getchar(),'1','5'); //菜单检测输入函数system("cls");switch(z){case '1': //添加站点{if(a[i].n+1>12) //判断是否满足条件{printf("\n站台总数达到12个,无法添加新站点\n\n按回车键返回\n");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}printf("\n请输入需要添加第几个站点:");scanf("%d",&k);while(a[i].n+1<k){printf("目前共%d个站点,无法添加第%d个站点\n请重新输入:",a[i].n,k);scanf("%d",&k);printf("\n");}a[i].n=a[i].n+1;for(j=a[i].n;j>k-1;j--){a[i].b[j]=a[i].b[j-1];}printf("\n请输入新添加的站点名称:");scanf("%s",a[i].b[k-1].c);save();break;}case '2': //修改站点{printf("\n请输入需要修改第几个站点:");scanf("%d",&k);printf("\n请输入新的站点名称:");scanf("%s",a[i].b[k-1].c);save();break;}case '3': //删除站点{printf("\n请输入需要删除第几个站点:");scanf("%d",&k);for(j=k-1;j<a[i].n;j++){a[i].b[j]=a[i].b[j+1];}a[i].n=a[i].n-1;save();break;}case '4': //重置路线{printf("\n请输入新的途径站台总数(2<=n<=12): ");scanf("%d",&a[i].n);printf("\n");while(a[i].n<2||a[i].n>12) //判断是否满足条件{printf("\n站台总数应满足(2<=n<=12),请重新输入: ");scanf("%d",&a[i].n);printf("\n");}for(j=0;j<a[i].n;j++){printf("请输入新的第%d个站台名称:",j+1);scanf("%s",a[i].b[j].c);}printf("\t公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++)printf(" ---->(%d) %s",j+1,a[i].b[j].c);printf("\n\n");save();break;}case '5': //返回菜单{printf("\n\t\t按回车键返回菜单\n");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return; //返回主菜单}}}}case '4': //修改行车时间{printf("\n\n请输入公交车的起始时间(格式为:时:分): ");scanf("%s",a[i].topen);printf("请输入公交车的终止时间(格式为:时:分): ");scanf("%s",a[i].tclose);save();break;}case '5':{printf("\n\t\t按回车键返回主菜单\n");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return; //返回主菜单}}}}}if(m==0)printf("\n\n\t\t无此公交车信息\n");printf("\n\t\t按回车键返回\n");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}void modmeun() //修改菜单{printf("\n\t\t 修改菜单 ");printf("\n\t\t********************************************");printf("\n\t\t* 1、修改路线编号 *");printf("\n\t\t* 2、修改车辆信息 *");printf("\n\t\t* 3、修改行车路线 *");printf("\n\t\t* 4、修改行车时间 *");printf("\n\t\t* 5、返回到主菜单 *");printf("\n\t\t********************************************");printf("\n\n\t\t请输入您的选择:");}void modnavimeun() //路线修改菜单{printf("\n\t\t 路线修改菜单 ");printf("\n\t\t********************************************");printf("\n\t\t* 1、站点添加 *");printf("\n\t\t* 2、站点修改 *");printf("\n\t\t* 3、站点删除 *");printf("\n\t\t* 4、路线重置 *");printf("\n\t\t* 5、返回菜单 *");printf("\n\t\t********************************************");printf("\n\n\t\t请输入您的选择:");}void del() //信息删除函数{int i,j,t,m=0;char cc[20];printf("\n请输入要删改信息的公交车路线编号:\n");scanf("%s",cc);for(i=0;*a[i].num!='\0'&&i<N;i++) //查找所输入的公交车{if(strcmp(a[i].num,cc)==0){m=1;printf("\n已找到:\n");printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n");printf("\t路线编号: %-6s\t单程票价: %d 元\t\t司机姓名: %s\n",a[i].num,a[i].money,a[i].name);printf("\t起始时间: %-6s\t终止时间: %-6s\t站台总数: %d\n",a[i].topen,a[i].tclose,a[i].n);printf("\t公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++)printf(" ---->(%d) %s",j+1,a[i].b[j].c);printf("\n\n");printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n\n");printf("即将删除该公交车信息\n确定请按1:");scanf("%d",&t);if(t==1){if(i+1==N)memset(&a[i],'\0',sizeof(struct bus)); //最后一辆直接进行清空elsefor(j=i;*a[j].num!='\0'&&j+1<N;j++) //后面的公交车信息补上删去的公家车信息a[j]=a[j+1];printf("编号为%s的公交车信息删除完毕!\n",cc);save();break;}}}if(m==0)printf("\n\n\t\t无此公交车信息\n");printf("\n\n\t输入回车键返回主菜单:");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}void find() //信息查询函数{char t;while(1){findmeun();fflush(stdin); //清除键盘缓冲区t=Test(getchar(),'1','4'); //菜单检测输入函数switch(t){case '1': system("cls"); findnavi();break; //路线导航查询case '2': system("cls"); findnum();break; //路线编号查询函数case '3': system("cls"); findsta();break; //站台信息查询函数case '4': system("cls"); return; //返回主菜单}}return;}void findmeun() //查询菜单{printf("\n\t\t 查询菜单 ");printf("\n\t\t********************************************");printf("\n\t\t* 1、路线导航查询 *");printf("\n\t\t* 2、路线编号查询 *");printf("\n\t\t* 3、站台信息查询 *");printf("\n\t\t* 4、返回到主菜单 *");printf("\n\t\t********************************************");printf("\n\n\t\t请输入您的选择:");}void findnavi() //路线导航查询函数{int i,j,k,m=0;char c1[20],c2[20];printf("请输入您目前所在的站点:\n\t\t");scanf("%s",c1);printf("请输入您想要前往的站点:\n\t\t");scanf("%s",c2);printf("\n\n您可选择的公交车信息如下\n");printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n");for(i=0;*a[i].num!='\0'&&i<N;i++){for(j=0;j<a[i].n;j++)for(k=j+1;k<a[i].n;k++)if(strcmp(a[i].b[j].c,c1)==0&&strcmp(a[i].b[k].c,c2)==0){m=1;printf("\n");printf("\t路线编号: %-6s\t单程票价: %d 元\t\t司机姓名: %s\n",a[i].num,a[i].money,a[i].name);printf("\t起始时间: %-6s\t终止时间: %-6s\t站台总数: %d\n",a[i].topen,a[i].tclose,a[i].n);printf("\t公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++)printf(" ---->(%d) %s",j+1,a[i].b[j].c);printf("\n\n");}}printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n\n");printf("\t\t\t\t显示完毕\n");if(m==0)printf("\n\n\t\t\t\t抱歉,无途径此路线的公交车\n");printf("\n\t\t\t\t输入回车键返回查询菜单:");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}void findnum() //路线编号查询函数{int i,j,m=0;char cc[20];printf("请输入您想要查找的公交路线编号:\n");scanf("%s",cc);for(i=0;*a[i].num!='\0'&&i<N;i++){if(strcmp(a[i].num,cc)==0){m=1;printf("\n已找到:\n");printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n");printf("\t路线编号: %-6s\t单程票价: %d 元\t\t司机姓名: %s\n",a[i].num,a[i].money,a[i].name);printf("\t起始时间: %-6s\t终止时间: %-6s\t站台总数: %d\n",a[i].topen,a[i].tclose,a[i].n);printf("\t公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++)printf(" ---->(%d) %s",j+1,a[i].b[j].c);printf("\n\n");printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n\n");break;}}if(m==0)printf("\n\t\t无此公交车信息\n");printf("\n\t\t输入回车键返回查询菜单:");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return;}void findstameun() //站台信息查询菜单{printf("\n\t\t 站台信息查询菜单");printf("\n\t\t********************************************");printf("\n\t\t* 1、起始站台查询 *");printf("\n\t\t* 2、终止站台查询 *");printf("\n\t\t* 3、途径站台查询 *");printf("\n\t\t* 4、返回查询菜单 *");printf("\n\t\t********************************************");printf("\n\n\t\t请输入您的选择:");}void findsta() //站台信息查询函数{int i,j,k;char t;char cc[20];while(1){int m=0;findstameun();fflush(stdin); //清除键盘缓冲区t=Test(getchar(),'1','4'); //菜单检测输入函数system("cls");switch(t){case '1':{printf("请输入您所要查询的起始站台名称:\n");scanf("%s",cc);printf("\n以%s为起始站台的公交车如下:\n",cc);printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n");for(i=0;*a[i].num!='\0'&&i<N;i++){if(strcmp(a[i].b[0].c,cc)==0){m=1;printf("\n");printf("\t路线编号: %-6s\t单程票价: %d 元\t\t司机姓名: %s\n",a[i].num,a[i].money,a[i].name);printf("\t起始时间: %-6s\t终止时间: %-6s\t站台总数: %d\n",a[i].topen,a[i].tclose,a[i].n);printf("\t公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++)printf(" ---->(%d) %s",j+1,a[i].b[j].c);printf("\n\n");}}printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n\n");printf("\t已全部显示完毕\n");if(m==0)printf("\n\t没有公交车以该站点为起始站台\n");break;}case '2':{printf("请输入您所要查询的终止站台名称:\n");scanf("%s",cc);printf("\n以%s为终止站台的公交车如下:\n",cc);printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n");for(i=0;*a[i].num!='\0'&&i<N;i++){k=a[i].n;if(strcmp(a[i].b[k-1].c,cc)==0){m=1;printf("\n");printf("\t路线编号: %-6s\t单程票价: %d 元\t\t司机姓名: %s\n",a[i].num,a[i].money,a[i].name);printf("\t起始时间: %-6s\t终止时间: %-6s\t站台总数: %d\n",a[i].topen,a[i].tclose,a[i].n);printf("\t公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++)printf(" ---->(%d) %s",j+1,a[i].b[j].c);printf("\n\n");}}printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n\n");printf("\t已全部显示完毕\n");if(m==0)printf("\n\t没有公交车以该站点为起始站台\n");break;}case '3':{printf("请输入您所要查询的途径站台名称:\n");scanf("%s",cc);printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n");for(i=0;*a[i].num!='\0'&&i<N;i++)for(k=1;k<a[i].n-1;k++)if(strcmp(a[i].b[k].c,cc)==0){m=1;printf("\n");printf("\t路线编号: %-6s\t单程票价: %d 元\t\t司机姓名: %s\n",a[i].num,a[i].money,a[i].name);printf("\t起始时间: %-6s\t终止时间: %-6s\t站台总数: %d\n",a[i].topen,a[i].tclose,a[i].n);printf("\t公交路线:(1) %s",a[i].b[0].c);for(j=1;j<a[i].n;j++)printf(" ---->(%d) %s",j+1,a[i].b[j].c);printf("\n\n");}printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n\n");printf("\t已全部显示完毕\n");if(m==0)printf("\n\t没有公交车以该站点为途径站台\n");break;}case '4':{printf("\n\t\t按回车键返回查询菜单\n");fflush(stdin); //清除键盘缓冲区getchar();system("cls");return; //返回主菜单}fflush(stdin); //清除键盘缓冲区getchar();system("cls");}}return;}void save() //信息保存函数{FILE *fp=NULL;int i;if((fp=fopen("bus.txt","w+"))==NULL) //以读写的方式打开名称为"bus"的文本文件{printf("文件打开错误\n");return;}fp=fopen("bus.txt","w+");for(i=0;*a[i].num!='\0'&&i<N;i++) //将内存中的数据输出到磁盘中if(fwrite(&a[i],sizeof(struct bus),1,fp)!=1)break;printf("\n\t保存成功\n");fclose(fp);return;}void mainmeun() //主菜单{printf("\n\t\t 主菜单");printf("\n\t\t****************************************");printf("\n\t\t* 1、信息录入 *");printf("\n\t\t* 2、信息显示 *");printf("\n\t\t* 3、信息修改 *");printf("\n\t\t* 4、信息删除 *");printf("\n\t\t* 5、信息查询 *");printf("\n\t\t* 6、退出系统 *");printf("\n\t\t****************************************");printf("\n\n\t\t\t请输入您的选择:");}//菜单输入检测函数char Test(char a,char b,char c){while(a<b||a>c){printf("\n\t\t\t输入错误,请重新输入: ");fflush(stdin); //清除键盘缓冲区a=getchar();}return a;}。
c语言课程设计

课程设计报告正文1、目的:1) 对C各部分知识的综合应用能力2) 提咼程序设计的能力3) 提升对于较大程序的抽象分析设计能力4) 学习调试和测试的技巧2、所做题目的意义:通讯录管理系统在当今这个信息发达的社会是必不可少的,这个通讯录管理系统可以方便的为我们添加、管理联系人,不必一定要记住这些庞大的信息,可以很方便的调用出自己所需要的信息,随时的修改这些信息,这些在这个时代是非常的必要的。
3、本人所作的工作:(1)、写出了预习报告。
从图书馆搜集了些这方面的资料(2)、想好思路,写出了程序代码(3)、调试程序,找出其中的错误,最终成功的运行出程序(4)、写出课程设计报告4、系统的主要功能:该系统的是一个小型的通讯系统,它具有一般的通讯系统都具有的功能该程序具有查找、添加、修改、删除功能,其讯录包括:街道,城市,省,邮编。
5、、系统的总体设计:系统的基本要求和容:该系统要求具有查找,添加,修改,删除功能,其讯录包括:、,街道,城市,省,邮编。
但在实际设计中增加了一项,那就是末尾添加,可以在已有的记录末尾再次添加,不必每次都重新添加,方便用户描绘及绘制出系统的功能结构框图、程序设计组成框图,流程图等:此系统共分为九大模块,分别为以下的模块:第一模块:主函数ma in ()的功能是:根据选单的选项调用各函数,并完成相应的功能。
第二模块:quitRec()的功能是:退出选单。
第三模块:createRec()的功能是:创建新的通讯录。
第四模块:addRec()的功能是:在通讯录的末尾写入新的信息,并返回选单第五模块:findRec()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第六模块:alterRec()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回。
第七模块:deleteRec()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
C语言课程设计报告-停车场管理系统.doc

C语言课程设计报告目录一、题目要求,需求分析二、总体设计思路与功能模块划分三、程序设计四、程序运行测试五、总结前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。
因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
如今,高等教育的计算机教育发展十分迅速。
十多年前,只有部分理工科专业开设计算机课程。
今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。
人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。
而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。
一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。
根据我们专业的性质和要求,则应侧重于上机操作运用。
为此,学校特意在本学期最后安排了32个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:一、题目要求:27.停车场管理21、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。
2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。
即先将这四辆车的信息存入文件“car.dat"中(数组的对应元素也要进行赋值)。
3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"car.dat"中,并将在此之前的所有车的停车时间加5。
数据结构c语言版课程设计停车场管理系统

课程设计:停车场c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统停车场停满车后车会停在便道上面下面附上源码,vc:(下编译#include 〈stdio。
h>//#include 〈stdlib。
h〉//malloc#include 〈time。
h〉//获取系统时间所用函数#include <conio.h> //getch()#include 〈windows。
h〉//设置光标信息mallco #define MaxSize 5 /*定义停车场栈长度*/#define PRICE 0。
05 /*每车每分钟收费值*/#define BASEPRICE 0。
5 //基础停车费#define Esc 27 //退出系统#define Exit 3 //结束对话#define Stop 1 //停车#define Drive 2 //取车int jx=0,jy=32;//全局变量日志打印位置typedef struct{int hour;int minute;}Time,*PTime;/*时间结点*/typedef struct /*定义栈元素的类型即车辆信息结点*/{int num ;/*车牌号*/Time arrtime;/*到达时刻或离区时刻*/}CarNode;typedef struct /*定义栈,模拟停车场*/{CarNode stack[MaxSize];int top;}SqStackCar;typedef struct node /*定义队列结点的类型*/{int num; /*车牌号*/struct node *next;}QueueNode;typedef struct /*定义队列,模拟便道*/ {QueueNode *front,*rear;}LinkQueueCar;/*函数声明*/PTime get_time();CarNode getcarInfo();void qingping(int a);void gotoxy(int x,int y);void printlog(Time t,int n,int io,char ab,int po,double f);void printstop(int a,int num,int x0,int y0);void printleave(int a,int po,int num);/*初始化栈*/void InitSeqStack(SqStackCar *s){s—〉top=—1;}/* push入站函数*/int push(SqStackCar *s,CarNode x) //数据元素x入指针s所指的栈if(s->top==MaxSize-1)return(0); //如果栈满,返回0 else{s—〉stack[++s-〉top]=x; //栈不满,到达车辆入栈return(1);}}/*栈顶元素出栈*/CarNode pop(SqStackCar *s){CarNode x;if(s->top〈0){x。
C语言课程设计

C语言课程设计一.实训要求:1、进一步掌握和利用C语言进行程设计的能力。
2、进一步理解和运用结构化程设计的思想和方法。
3、初步掌握开发一个小型实用系统的基本方法。
4、学会调试一个较长程序的基本方法。
5、学会利用流程图或N-S图表示算法。
6、掌握书写程设计开发文档的能力(书写实习报告)。
二.实训内容:通过复习C语言所学习内容,完成如下编程任务,要求每个题目都画出流程图或者是N-S图,并写出解决此问题的实训报告(即详细的解题过程、分析过程和实训心得),并附最终得到的完整的c语言代码。
1、实现学生成绩管理系统:(也可以选择类似的学籍管理系统)系统要求如下a、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息.b、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息.c、新生插入:按照该生的学号,将此生的信息保存进文件。
d、可以把各科的平均成绩,最高和最低分分别全部输出。
e、输出全部学生信息和全部学生成绩。
f、退出系统。
2、计算器。
编写一个计算器程序,实现加、减、乘、除、求平方根(正数)、求平方数等功能。
①要求根据用户从键盘输入的表达式:操作数1 运算符op 操作数2计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)等。
②要求程序能进行浮点数的算术运算。
③程序要求可以连续做多次算术运算,每次运算结束后,程序都给出提示:Do you want to continue(Y/N or y/n)?用户输入Y或y时,程序继续进行其他算术运算;否则程序退出运行状态。
三、实训评分标准实训成绩由三部分构成:实训考勤分数(30%),实训态度分数(20%),实训报告分数(50%)。
实训时间为一周,分上下午分别签到,每次到课可得到3分,共30分,到课不满60%的学生没有实训成绩;实训时玩游戏,看视频及其他与实训无关的动作,将在实训态度分中分别扣除相应的分数。
《C语言程序设计课设》课程设计指导书

《C语言程序设计课设》课程设计指导书一、课程设计的目的(1)加深对讲授内容的理解,尤其是一些语法规则。
(2)熟悉C语言程序设计的结构化编程的思想,掌握数据的基本类型、自定义类型、函数、文件和指针等知识,能运用这些知识进行综合编程,熟练应用。
(3)能够综合运用所学知识,编程解决实际问题。
(4)培养团队分工合作的意识,最终使学生提高编程技能和解决实际问题的能力。
二、课程设计基本要求2.1.组织管理1.由院、系指派经验丰富的专业教师担任指导教师。
2.课程设计实行课程负责人与指导教师共同负责制。
3.课程负责人主要进行课设的命题、指导教师的考核、技术把关和全面管理。
4.指导教师全面负责所承担班级的课程设计指导、管理和考核评定工作。
2.2设计要求1.自选题目、小组管理、团队合作、小组评测。
2.模块化程序设计。
3.锯齿型书写格式。
4.必须上机调试通过。
三、选题要求:每个题目限定1-2人,每人必须负责一部分功能,并独立完成,推举出一个组长,负责任务分工,汇总到班长处,然后交给指导教师。
四、设计报告格式及要求:1、题目2、设计目的3、总体设计(程序设计组成框图、流程图)4、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)5、运行结果及分析6、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施7、课程设计心得及体会8、源程序清单和执行结果:清单中应有足够的注释五、课程设计成绩评定5.1基本要求:(1)每个人必须有程序运行结果;(2)每个人必须交《C语言课程设计》报告5.2、成绩评定和打分标准由指导教师对学生在课程设计期间的表现,所完成的设计报告的质量、设计结果的验收和答辩情况进行综合考核。
具体评定标准如下:(1)上机考勤:注重平时上机考勤与遵守纪律情况20%(2)结果验收:学生能运行、讲述或调试自己的程序,回答教师提问,每个人必须有程序运行结果40%(3)小组自评成绩结果10%(4)设计报告:每个人必须交《C语言课程设计》报告和《C语言课程设计》日志30%以上四项缺一不可,否则不能到得相应学分依据上述考核内容,最后采用优(>90分)、良(80~89分)、中(70~79分)及格(60~69分)、不及格(<60分)五级记分制评定学生课程设计成绩。
中职《C语言程序设计》教案第6课输出车辆限行提示

case常量表达式1:[语句1]case常量表达式2:[语句2]case常量表达式n:[语句n][default:语句n+l])其中,switch后表达式的值和case后常量表达式的值可以是整型、字符型、枚举型,但不能是浮点型;方括号括起来的内容是可选项。
switch语句的执行过程如图3-12所示(洋见教材).首先计算switch后表达式的值,然后将其结果与case后常量表达式的值依次进行比较,若此值与某case后常量表达式的值一致,即转去执彳锹case后的语句;若没有找到与之匹配的常量表达式,则执行defauh后的语句.【课堂问答】*【教师】随机邀请学生回答以下问题请同学们思考,switch语句结构中的default语句是否必须包含?*【学生】聆听、思考、回答÷【教师】总结学生的回答【课堂练习】÷【教师】出示【例3・7】,组织学生编写代码用switch语句实现,输入学生百分制成绩,输出五分制成绩,判定标准见表3-5所列(详见教材)0÷【学生】编写程序、运行、对比结果÷【教师】解析例题由判定标准可以看出,成绩的取值有5个范围,每个范围对应一个等级。
这是一个典型的多分支选择结构,可以定义整型变量score,当其取在0~100时,使用switch语句判断score/10的值,利用case语句检验SCore/10值的不同情况,并输出相关等级。
……(参考程序详见教材)【运行结果】在提示信息后输入87/,程序运行结果如图3/3所示(详见教材)【程序说明】多个case可以共用一组执行语句。
例如,当分数大于等于90分时,即score/10为10和9时,均对应等级"优秀(A)”,此时,可只在最后一个分支后写上处理语句。
在每个case或default语句后都有一个break关键字,用于跳出switch结构。
【课堂讨论】÷【教师】请学生分组讨论以下问题请同学们以小组为单位,讨论没有break语句,switch语句将如何执行?÷【学生】讨论、总结、回答÷【教师】总结学生的回答break语句和switch语句最外层的右大括号是退出switch选择结构的出口,当遇到第一个break语句时终止执行switch语句。
c语言课课程设计管理系统

c语言课课程设计管理系统一、教学目标本章节的教学目标是使学生掌握C语言课程设计管理系统的基本概念、原理和方法,培养学生运用C语言进行程序设计的能力,提高学生的实际操作技能和解决实际问题的能力。
具体来说,知识目标包括:1.掌握课程设计管理系统的基本概念和原理。
2.理解C语言在课程设计管理系统中的应用。
3.熟悉常用的数据结构和算法。
技能目标包括:1.能够使用C语言进行程序设计。
2.能够运用常用的数据结构和算法解决实际问题。
3.能够独立完成课程设计管理系统的开发和调试。
情感态度价值观目标包括:1.培养学生的团队合作意识和沟通能力。
2.培养学生的自主学习能力和探究精神。
3.培养学生对C语言和课程设计管理系统的兴趣和热情。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据结构、算法和课程设计管理系统的基本概念和原理。
具体来说,教学大纲如下:1.C语言的基本语法:数据类型、变量、运算符、表达式、语句等。
2.数据结构:数组、链表、栈、队列、树、图等。
3.算法:排序算法、查找算法、动态规划算法等。
4.课程设计管理系统的基本概念和原理:系统结构、模块划分、功能实现等。
三、教学方法为了实现教学目标,本章节将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过教师的讲解,使学生掌握C语言和课程设计管理系统的基本概念和原理。
2.讨论法:通过小组讨论,培养学生的团队合作意识和沟通能力。
3.案例分析法:通过分析实际案例,使学生了解课程设计管理系统的应用和实现方法。
4.实验法:通过实际操作,培养学生运用C语言进行程序设计的能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《C语言程序设计》等。
2.参考书:《C语言编程实践》、《数据结构与算法》等。
3.多媒体资料:课件、教学视频等。
4.实验设备:计算机、网络设备等。
以上教学资源将有助于丰富学生的学习体验,提高学生的实际操作技能和解决实际问题的能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 3 /*车库容量*/
#define price 0.5 /*每车每分钟费用*/ 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;
}Moni_Cheku;
typedef struct car
{
CarNode *data;
struct car *next;
}QueueNode;
typedef struct Node
{
QueueNode *head;
QueueNode *rear;
}Moni_Biandao;
void InitStack(Moni_Cheku *); /*初始化车库*/
int InitQueue(Moni_Biandao *);
/*初始化便道*/
int Arrival(Moni_Cheku *, Moni_Biandao *); /*车辆到达*/ void Leave(Moni_Cheku *, Moni_Cheku *, Moni_Biandao *); /*车辆离开*/
void List(Moni_Cheku, Moni_Biandao); /*显示车库和便道的存车信息*/
int main()
{
Moni_Cheku Enter, Temp;
Moni_Biandao Wait;
int ch;
InitStack(&Enter); /*初始化车站*/
InitStack(&Temp); /*初始化让路的临时链表*/
InitQueue(&Wait); /*初始化便道*/
printf("\n");
printf(" ^_^欢迎进入停车场管理系统1!^_^\n");
printf("\n");
printf("提示! (1).该车库的最大容量为:%d;\n", MAX); printf(" (2).该车库的收费标准为:%4.2f元/(辆*分钟).\n", price);
while (1)
{
system("CLS");
printf("********************主菜单********************\n");
printf("1.车辆到达");
printf(" 2.车辆离开");
printf(" 3.列表显示");
printf(" 4.退出系统\n");
printf("**********************************************\n ");
printf("请选择(1-4):[ ]\b\b");
while (1)
{
scanf("%d",&ch);
if (ch >= 1 && ch <= 4)break;
else printf("错误!请重选(1-4):[ ]\b\b");
}
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;
}
}
return 0;
}
void InitStack(Moni_Cheku *s) /*初始化车库*/
{
int i;
s->top = 0;
for (i = 0; i <= MAX; i++)
s->stack[s->top] = NULL;
}
int InitQueue(Moni_Biandao *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 room) /*输出出库车的信息*/ {
int A1, A2, B1, B2;
{
printf("请输入离开的时间:/**:**/");
scanf("%d:%d", &(p->leave.hour), &(p->leave.min));
printf("离开车辆的车牌号为:");
puts(p->num);
printf("其到达时间为: %d:%d\n", p->reach.hour, p->reach.min);
printf("离开时间为: %d:%d\n", p->leave.hour, p->leave.min);
A1 = p->reach.hour;
A2 = p->reach.min;
B1 = p->leave.hour;
B2 = p->leave.min;
printf("应交费用为:%4.2f元", ((B1 - A1) * 60 + (B2 - A2))*price);
free(p);
}
}
int Arrival(Moni_Cheku *Enter, Moni_Biandao *W) /*车辆到达*/ {
CarNode *p;
QueueNode *t;。