C项目开发设计报告
- 格式:doc
- 大小:487.50 KB
- 文档页数:44
c语言学生成绩管理系统设计报告C语言是计算机领域最为重要的编程语言之一,用于许多应用系统的开发。
这里我将围绕C语言学生成绩管理系统的设计报告,分步骤阐述该系统的设计与实现。
第一步:需求分析在进行设计之前,必须先进行需求分析,明确系统所需的功能和性能。
针对学生成绩管理系统,我们需要实现以下功能:1. 学生信息管理:包括学生姓名,学号等信息。
2. 成绩信息管理:包括课程分数,总分、平均分等信息。
3. 数据录入和修改:教师可以输入学生的成绩信息,并对已有的信息进行修改。
4. 成绩查询功能:学生可以查询自己的成绩情况。
第二步:系统设计根据需求分析,我们可以对系统进行具体设计。
该系统主要分为以下模块:1. 学生信息管理模块:用于录入和管理学生的信息。
2. 成绩信息管理模块:用于录入和管理学生的成绩信息。
3. 数据操作模块:用于操作学生和成绩信息的增删改查。
4. 用户管理模块:用于管理系统用户,包括学生和教师。
第三步:系统实现在进行系统实现时,我们需要注意以下几个方面:1. 界面设计:尽量简洁明了,易于使用。
2. 数据库设计:需要对数据进行分类储存,便于操作。
3. 数据库连接:需要通过C语言的数据库API来连接数据库。
4. 代码编写:需要根据设计要求进行代码编写,并进行测试调整,确保系统的稳定性和性能。
第四步:系统测试完成系统的设计和实现后,就需要对系统进行测试。
测试主要包括以下几个方面:1. 单元测试:对系统各个功能模块进行单独测试,确保每个模块的运行效果。
2. 集成测试:对系统各个模块进行集成测试,确保各个模块之间的相互交互正常。
3. 用户测试:邀请用户来测试系统,听取他们的反馈和建议,进行调整和改进。
总结:本文围绕C语言学生成绩管理系统的设计报告,分步骤阐述了系统的设计、实现和测试。
这对于开发人员在进行类似系统开发时具有一定的指导意义。
不过,由于每个系统都具有其独特性和特点,因此具体实现还需根据具体情况而定。
《c语⾔程序设计》实验报告(实验-2)《C语⾔程序设计》实验报告2013~2014学年第⼆学期班级姓名学号指导教师实验⼀实验项⽬名称:C程序的运⾏环境和运⾏C程序的⽅法所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运⾏⼀个C程序;2.通过运⾏简单的C程序,初步了解C源程序的特点。
⼆、预习内容:教材《C语⾔程序设计教程》第1章。
三、实验内容:1. 在Visual C++ 6.0环境下输⼊并运⾏下⾯的程序:#includeint main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输⼊下⾯的程序(有语法错误),编译、连接、调试该程序,直⾄程序⽆语法错误,然后运⾏程序,并观察分析运⾏结果。
#includeint main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运⾏结果(或截图):This is a C program.Press any key to continue2. (1) 改正后的源程序:#includeint main( ){int a,b,sum;a=3;b=4;sum=a+b;printf("%d+%d=%d\n",a,b,sum);return 0;}(2) 运⾏结果(或截图):3+4=7五、思考题:1. ⼀个C程序上机的步骤有哪些?答:上级输⼊与编辑源程序—对原程序进⾏编译–与库函数链接–运⾏可执⾏的⽬标程序。
2. 组成C程序的基本单位是函数,⼀个函数包括哪⼏个部分?答:⼀个函数包括两部分:分别为函数头或函数⾸部和函数体。
成绩指导教师签名实验⼆实验项⽬名称:数据类型、运算符和表达式所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使⽤⽅法;3. 掌握基本算术运算符及其表达式的使⽤⽅法;4. 掌握++、--运算符、赋值运算符及其表达式的使⽤⽅法。
实验项目名称:实验一C 语言的运行环境的使用实验目的及要求:1. 了解 Windows 系统下 C 语言的运行环境,熟悉 C 程序编辑、调试、运行的基本操作方法。
2. 熟练掌握编辑、编译、连接和运行 C 程序的方法。
3. 通过运行简单的 C 程序,初步了解 C 源程序的特点。
4. 初步理解 C 语言的数据类型,了解变量定义、变量赋值以及简单运算方法,了解程序运行结果的基本输出方法。
实验内容(方法和步骤):1、编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for程序代码:#include <stdio.h>int main(){printf("Hello,World!\n");printf("Welcome to the C language world!\n");printf(Everyone has been waiting for.\n");return 0;}运行结果:2、编写程序,将两个整数相加,并输出结果。
程序代码:#include <stdio.h>int main(){int a,b,c;a=12;b=26;c=a+b;printf("c=%d\n",c);return 0";}运行结果:3. 编写程序,要求从键盘输入2 个整数,输出其中较大的数程序代码:#include <stdio.h>int main(){int max(int x,int y);int a,b,c;scanf("%d,%d",&a,&b);c=max(a,b);pintf("max=%d",c);return 0;}int max(int x,int y){ int z;if (x>y) z=x;else z=y;return(z);}运行结果:4.输入并运行下程序,观察运行结果。
最简单的C程序设计—顺序程序设计实验报告研究生:XXXX 指导教师:XXXX摘要:本实验报告旨在介绍C语言中最简单的程序设计方法——顺序程序设计。
通过实际编写和调试一系列简单的C程序,加深对顺序程序设计的理解,并掌握C语言的基本语法和代码编写步骤。
本实验报告从实验目的、实验环境、实验内容、实验步骤以及实验结果等方面进行详细阐述,最后总结了所获得的实验心得和体会。
1. 实验目的本实验旨在通过编写C程序,加深对顺序程序设计基本概念的理解,掌握C语言的基本语法和编写步骤,培养良好的程序设计思维,为今后学习更复杂的程序设计打下基础。
2. 实验环境为了完成本实验,以下环境的搭建是必要的:- 操作系统:Windows 10- 开发工具:Code::Blocks 17.12- 编程语言:C语言3. 实验内容本实验的主要内容包括以下几个方面:- 学习C语言的基本语法和变量类型- 掌握C程序的基本结构和编写规范- 设计和实现一系列简单的顺序程序- 调试和运行编写的程序,并分析运行结果4. 实验步骤(1) 熟悉C语言基本语法C语言的基本语法包括变量定义、数据类型、运算符、控制语句等。
在编写C程序之前,我们需要对这些语法进行充分的了解和掌握。
(2) 编写第一个C程序首先,我们以经典的“Hello, World!”程序为例。
打开Code:Blocks开发工具,创建一个新的空项目。
在项目中创建一个源代码文件,并编写以下代码:```c#include <stdio.h>int main(){printf("Hello, World!\n");return 0;}```编译并运行程序,观察输出结果是否符合预期。
通过这个简单的程序,我们熟悉了C程序的基本结构和编写规范。
(3) 编写其他简单的顺序程序在掌握了基本的C语法和程序框架后,我们可以开始编写一些具有实际意义的简单程序。
例如,计算两个整数的和、求圆的面积、判断一个数是否为素数等等。
C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。
3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。
提高编写程序解决实际问题的能力、调试程序的技术。
三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。
主程序:新建:输入记录(遇#号时停止输入)。
插入:在指定位置插入记录。
显示:列出所有记录。
查询:一、按学号查询;二、按名字排序。
删除:一、按学号删除;二、按名字删除;3、删除所有记录。
排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。
保留:保留为任意名字,系统自动加后缀名为.txt。
读取:读取程序目录下的后缀名为.txt的文件。
退出:退出程序。
五、各功能模块的具体实现,用图表表示。
输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。
STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。
c语言实验报告结论
在本次C语言实验中,我们完成了多个程序的设计和开发,包括计算字符串中元音字母和辅音字母的个数,求解一个数的平方根,以及设计一个简单的计算器。
同时,本次实验也让我们意识到了程序设计的重要性,程序需要清晰的逻辑思维和良好的代码风格,才能实现高效、可靠的功能。
在实验中,我们不断优化程序设计,从算法和代码结构等方面提高了程序的可读性和可维护性。
在实验中出现的一些问题,如溢出和类型转换错误,也提醒我们在编程过程中要注意数据类型的选择和边界情况的处理,以确保程序的正确性和稳定性。
综上所述,通过本次C语言实验的学习和实践,我们深刻认识到了C语言的重要性和广泛性,也提高了自己的编程能力和实战经验。
在今后的学习和工作中,我们将不断加强自己的编程素养,熟练掌握C语言的应用,为未来的发展打下坚实的基础。
维生素C项目投资分析报告规划设计 / 投资分析摘要说明—维生素C(VitaminC,AscorbicAcid)又叫L-抗坏血酸,是一种水溶性维生素。
食物中的维生素C被人体小肠上段吸收。
一旦吸收,就分布到体内所有的水溶性结构中,正常成人体内的维生素C代谢活性池中约有1500mg维生素C,最高储存峰值为3000mg维生素C。
正常情况下,维生素C绝大部分在体内经代谢分解成草酸或与硫酸结合生成抗坏血酸-2-硫酸由尿排出;另一部分可直接由尿排出体外。
中国人在人类与病毒的抗争上充当着关键性的角色。
中国人口众多而且居住密集,是病毒最容易传染的地区,也是受病毒残害最深的地区。
例如,许多流行性感冒的病毒都发源于中国,SARS病毒也是首先在中国出现的,并且死于SARS的90%是中国人。
维生素C在抗病毒和预防病毒性传染病方面具有很高的应用价值。
目前中国逐渐跃居成为维生素C生产的领导地位,但是,中国人服用维生素C的平均剂量,远逊于欧美和日本。
如果我们普遍认识到维生素C预防和治疗病毒传染病症的原理并且按量服用,就可以预防很多病毒的传播。
维生素C 的真正效用,会显示在治疗禽流感,SARS和AIDS等更严重的病毒传染病上。
调查显示,我国30%的人维生素C摄入量不足,即4亿人缺乏维生素C。
在此背景下,维生素C及其产品的消费必然随之增加,市场容量将大幅度提高。
近几年,我国维生素C行业发展迅速,国内生产技术不断提升。
国内企业为了获得更大的投资收益,在生产规模和产品质量上不断提升。
依托国际市场的定价和国内的原材料、人力等成本优势,我国维生素C产品投资价值极具吸引力。
该维生素C项目计划总投资16032.21万元,其中:固定资产投资11221.81万元,占项目总投资的70.00%;流动资金4810.40万元,占项目总投资的30.00%。
达产年营业收入34097.00万元,总成本费用26392.24万元,税金及附加292.70万元,利润总额7704.76万元,利税总额9060.19万元,税后净利润5778.57万元,达产年纳税总额3281.62万元;达产年投资利润率48.06%,投资利税率56.51%,投资回报率36.04%,全部投资回收期4.27年,提供就业职位678个。
旅游管理系统c语言编程实验报告这篇实验报告将介绍关于旅游管理系统用C语言编程的实验过程与成果。
旅游管理系统是一个旨在帮助旅游行业提高管理效率的软件应用程序,主要功能包括旅游订单管理、景点信息查询、客户信息管理等。
下面将详细介绍该项目的实验目的、原理、实验步骤、实验结果与总结。
实验目的:1.了解C语言的基本知识,掌握C语言编译和执行流程;2.掌握文件I/O函数和字符串处理函数等相关知识;3.了解软件开发流程,学习代码调试与优化。
原理:本次实验以C语言作为开发语言。
根据项目需求,开发软件主要功能包括旅游订单管理、景点信息查询、客户信息管理等。
实验步骤:1.根据项目需求,分析数据结构与算法,设计程序框架;2.编写代码实现主要功能,包括旅游订单管理、景点信息查询、客户信息管理等;3.通过调试,发现程序中的错误,并优化代码,使其更加稳定和可靠;4.编写测试用例,对程序进行测试,发现并解决问题;5.编写实验报告,记录实验过程和实验结果。
实验结果:通过C语言编程实现了旅游管理系统,其主要功能包括旅游订单管理、景点信息查询、客户信息管理等。
程序运行稳定,具有较高的可靠性。
同时,程序的开发也提高了软件开发的能力,对数据结构、算法等方面也有了更深入的理解。
总结:通过本次实验,对软件开发流程和C语言编程有了更深入的认识。
同时,也了解了旅游管理系统的基本功能和开发过程。
通过实验,提高了编程能力,也发现了自己还需不断进步的地方。
在今后的学习中,会更加专注于C语言编程的学习和实践,不断提升自己的技术水平。
c语言上机实验心得在科技高度发展的今天,计算机在人们之中的作用越来越突出。
而c语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好c语言,这对我们以后的发展是十分重要的。
说到这,上机实验当然就是一个必不可少的环节了,c语言灵活、简洁的特点,只有通过编程实践才能真正了解,真正说懂。
为了更好地学习语法规定、掌握程序设计方法、提高程序开发能力,我们必须实际上机、编写程序。
通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了c语言那就大错特错了。
我主要存在以下的这些缺点:1、学习耐心与细心不足,如scanf(“%d”,&n);中的“&”有时候会忘了。
而在最后输出时又错写成printf(“%d”,&n);从而错误得输出了地址而不是我原来想要的答案。
2、编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解题了。
3、4、基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。
知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够深刻。
5、6、有时候不够精简,有一点用处不大或者说没有也可以的文字存在。
英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在一点问题。
为了能更好地学好c语言,在今后学习中我要更多的动脑,综合运用所学,多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。
实验中我深刻意识到完成程序的编写,决不意味着万事大吉。
认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。
有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。
因为开发环境所提供的编译系统无法发现程序逻辑错误,或者是你原来所设计时的理论错误,这就只能靠自己的上机经验来分析判断错误的所在了。
停车场管理系统——项目设计报告所在班级:能源1004班指导教师:胡彬项目开发分工:目录一、项目分析·3二、功能描述·3三、概要设计报告·4四、程序流程·4五、程序结构图·5六、操作指南·5七、项目总结·8八、程序代码·9一、项目分析(1)目的:加强所学习的C++知识, 进一步熟练掌握C++语言的基本知识和技能;(2)本项目目标如下:问题描述:现在打部分停车场都是人工管理,在记录时比较复杂,不规范,为使停车场的的管理工作更加方便简洁,本程序将提供一个智能的管理平台。
构思:1)将货车、客车、小轿车按不同的标准进行收费计算.2)能按车位、车牌号、车主姓名显示、查找、增加、删除和保存所停放的车辆信息.3)建立多个类的体系,分工完成各个类的设计,并分别增加了不同的属性和方法.4)设计出友善、舒适的界面;二、功能描述:本程序系统设有一个比较精美的可视化的操作界面,并设有分级菜单与选项,可以方便的指导管理员的使用。
本系统主要用于进行货车、客车、小轿车的信息管理,重点用于实时监控停车场所停车辆的信息,包括基本信息(车位号、车牌号、车主姓名、进出站时间、停车时间、收费单价、总收费等),可以简单快捷的实现增、改、删、查功能,便于用户的储存与查询。
本系统的优点在于:由于我们使用了文件的输出,运行程序后将在指定位置生成两个txt文件,一个是所有曾停放车辆的历史信息,另外一个为在停车辆的信息,可以对数据进行永久性的存储,不存在退出程序系统后,所有输入的内容都会消失的情况。
制作过程中我们将从实际出发,注重程序的实用性,并力求将所学内容融入其中。
三、概要设计报告:本程序设计构想来源于宿舍出入登记簿,通过类的组合,继承与派生,再加上对函数的利用,实现不同种类的车辆信息进行增、删、改、查的管理。
为停车场管理人员提供了方便快捷管理的工具。
四、程序流程1、选择1、登入2、登出3、查找单个车辆信息4、显示全部车辆信息5、修改密码6、退出2、登入是否电脑选车位?车牌号,车主姓名,车辆类型:输入车位?有->:没有—>返回3、登出输出车位号车牌号、停车时间、应收费用、进出时间、车位状态归零;4、查找按车位?输入车位:输入车牌;5、显示显示所有在听车辆信息;6、修改密码请输入原密码—>输入错误/请输入新密码、请再次输入,修改成功;7、退出五、程序结构图六、操作指南1、主菜单在打开停车场管理系统,输入正确密码后,将会进入一个欢迎菜单,也就是本程序的主菜单,在这里有如下几个选项:根据需要选择相应的数字。
2、登入车辆当在主菜单中选择1登入车辆时,将会进入其副菜单,有如下三个选项:随后可根据提示,输入登记的详细内容。
3、登出车辆当有车辆需要离开停车场时,进入登出界面,输入相应的车位号,进行登出。
此时,系统将显示停入的时间及所需费用(费用标准课根据实际情况进行修改),显示结果如下:4、查找车辆当有需要查找某个车辆时,我们可以在主菜单中选择“查找车辆”,在本程序中提供两种查找方式:按车位和按车牌号,根据提示输入相应的数据即可获得相应的车辆信息,如下图所示:5、显示全部车辆在主菜单中按4进入显示全部车辆信息的功能页面,如下图所示:6、密码与修改密码主菜单中选择5进入密码修改功能,在输入原密码和两次相同的6位新密码后即可修改密码,由于本程序实现了和硬盘关联,故在下次进入时的合法密码为上次修改后的密码,所以要记住心密码哦,界面如下图所示:七、项目总结在经过一个学期的C++学习课程之后,共同合作完成这样一个程序的过程无疑又让我们获益匪浅,学到的不仅是细节,不仅是学习方法,不仅是团队合作精神,更是团结一心,在困难面前全力学习、互相帮助,最后战胜困难的决心和勇气。
在这一段时间里我们收获颇丰,请让我们一同来回顾这段难忘的时光。
1、在上午微积分考试一结束,我们便开始了对要做项目的讨论,包括其主题和功能。
本以为可以提前几天结束这样一个战斗,没想到却是刚刚在要求的前一天完成整个程序的编写。
有此,我们得出事事皆要早的结论。
2、我们一开始遇到的并在后续阶段一直困扰我们的问题就是文件的读写问题,把文件的读写作为我们程序的一个特色是一件很需要勇气的事,在每个人都只是接触了一点点文件的输入输出的情况下,要实现数据的灵活存储就要求重新了解该部分的内容,并进行大量的试验程序调试。
次部分从头到尾,占用了我们大部分时间。
3、作为本程序的另外一个特色,密码程序的设计同样具有挑战性。
作为第一个与磁盘文件互动的部分,此过程的突破给了我们无尽的信心和勇气,使我们坚定的向更复杂的问题冲击。
4、除了以上没有学过的内容给我们造成很大的困难之外,一些小问题也曾让我们很头疼,比如string与cin的冲突问题,两个时间点的计算问题,格式错误引起的无尽的调试过程等等。
但在最后完成项目之后,这一切都变成了我们宝贵的经验。
回顾这样一个艰苦的过程,我们有两点最为重要的收获。
一是对团队合作效率的认同,比如,当一个人自己调试程序的时候,找错总是很纠结的一件事,但是当两个人在一起共同审视程序的时候,找出错误也就变得容易多了。
二是要时刻具备克服苦难的决心与毅力,我们面对的是自己看都看不懂的内容,但是却要求我们最后能把这部分内容灵活运用到程序中。
这种感觉总是能令人抓狂,但是,最后我们做到了。
我们可以自豪的对别人说:“I MADE IT!”八、程序代码1、头文件#include <iostream>#include<conio.h>#include<string>#include<cmath>#include <time.h>using namespace std;double DiffTime(unsigned ty1,unsigned th1,unsigned ty2,unsigned th2){struct tm tm1,tm2;time_t tt1,tt2;float dt;tm1.tm_year = ty1/10000 - 1900; //得到年2008 tm1.tm_mon = (ty1%10000)/100; //得到月09tm1.tm_mday = (ty1%10000)%100; //得到日11 tm1.tm_hour = th1/10000; //得到时11tm1.tm_min = (th1%10000)/100; //得到分12tm1.tm_sec = (th1%10000)%100; //得到秒03tm2.tm_year = ty2/10000 - 1900; //得到年2008 tm2.tm_mon = (ty2%10000)/100; //得到月09tm2.tm_mday = (ty2%10000)%100; //得到日13 tm2.tm_hour = th2/10000; //得到时11tm2.tm_min = (th2%10000)/100; //得到分12tm2.tm_sec = (th2%10000)%100; //得到秒01tt1 = mktime(&tm1);tt2 = mktime(&tm2);dt = (double)(difftime(tt2,tt1))/3600; //得到相差的小时数return dt;}class Car //基类{protected:int Pos;string Num;string Name;double Time;double Money;public:char time1[30],time2[30];Car(int pos=0,string num="0",string name="No name") {Pos=pos;Num=num;Name=name;time1[30]='\0';time2[30]='\0';Time=0;Money=0;}int GetPos(){return Pos;}string GetNum(){return Num;}string GetName(){return Name;}double GetTime(){return Time;}void SetPos(){Pos=0;}void show(){cout<<"车位"<<Pos<<" "<<Num<<" "<<Name<<" "<<time1<<endl;}void SetStime(char a[]){strcpy(time1,a);}void Stime() //初始时间{time_t t = time(0);strftime(time1,sizeof(time1),"%Y/%m/%d %X %A",localtim e(&t));}void Ftime() //结束时间{time_t t = time(0);strftime(time2,sizeof(time2),"%Y/%m/%d %X %A",localtim e(&t));}void setTime() //计算经过时间{unsigned ty1,th1,ty2,th2;ty1=10000000*(time1[0]-'0')+1000000*(time1[1]-'0')+1000 00*(time1[2]-'0')+10000*(time1[3]-'0')+1000*(time1[5]-'0')+100*(time1[6]-'0' )+10*(time1[8]-'0')+(time1[9]-'0');th1=100000*(time1[11]-'0')+10000*(time1[12]-'0')+1000*( time1[14]-'0')+100*(time1[15]-'0')+10*(time1[17]-'0')+(time1[18]-'0');ty2=10000000*(time2[0]-'0')+1000000*(time2[1]-'0')+1000 00*(time2[2]-'0')+10000*(time2[3]-'0')+1000*(time2[5]-'0')+100*(time2[6]-'0' )+10*(time2[8]-'0')+(time2[9]-'0');th2=100000*(time2[11]-'0')+10000*(time2[12]-'0')+1000*( time2[14]-'0')+100*(time2[15]-'0')+10*(time2[17]-'0')+(time2[18]-'0');cout<<DiffTime(ty1,th1,ty2,th2)<<endl;Time=DiffTime(ty1,th1,ty2,th2);}};class Auto:public Car //小型车类{private:double prize;double Outvalue;public:Auto(int pos=0,string num="0",string name="No name",double outvalue=0):Car(pos,num,name){Outvalue=outvalue;prize=Outvalue*3;}double Outmoney(){Money=Time*prize; return Money;}double GetOutvalue(){return Outvalue;}double Getprize(){return prize;}};class Carriage:public Car //客车类{private:int Capacity;double prize;public:Carriage(int pos=0,string num="0",string name="No name",int capacity=0):Car(pos,num,name){Capacity=capacity;prize=sqrt(Capacity);}double Outmoney(){Money=Time*prize;return Money;} double Getprize(){return prize;}int GetCapacity(){return Capacity;}};class Truck:public Car //货车类{private:int Heavy;double prize;public:Truck(int pos=0,string num="0",string name="No name",int heavy=0):Car(pos,num,name){Heavy=heavy;prize=Heavy*2;}double Outmoney(){Money=Time*prize;return Money;} double Getprize(){return prize;}double GetHeavy(){return Heavy;}};2、code源文件#include<conio.h>#include<iostream>#include <fstream.h>#include <stdlib.h>#include <windows.h>void code(){ifstream infile("code.txt",ios::in|ios::nocreate);if(!infile){cout<<"未找到密码文件,请重新确认\n";exit(1);}char c[6]={0},d[6]={0};int sel=1,i;infile.getline(d,8);cout<<"请输入密码(初始密码为000000):"<<endl;while(sel){for(i=0;i<6;i++){c[i]=getch();if((c[i]>='0'&&c[i]<='9')||(c[i]>='a'&&c[i]<='z')||(c[i]>='A'& &c[i]<='Z'))putchar('*');}cout<<endl;if(c[0]==d[0]&&c[1]==d[1]&&c[2]==d[2]&&c[3]==d[3]& &c[4]==d[4]&&c[5]==d[5]){cout<<endl<<endl<<endl<<endl<<endl<<"密码通过!"<<endl;Beep(523,200);Beep(659,300);Beep(784,300);Beep(1060,300);sel=0;}elsecout<<"密码错误,请重新输入:"<<endl;}infile.close();system("cls");}void codechange(){system("cls");char c[6]={0},d[6]={0};int sel=1,i;ifstream infile("code.txt",ios::in|ios::nocreate);infile.getline(d,8);cout<<"请输入原密码:"<<endl;for(i=0;i<6;i++){c[i]=getch();if((c[i]>='0'&&c[i]<='9')||(c[i]>='a'&&c[i]<='z')||(c[i]>='A'& &c[i]<='Z'))putchar('*');}if(c[0]==d[0]&&c[1]==d[1]&&c[2]==d[2]&&c[3]==d[3]& &c[4]==d[4]&&c[5]==d[5]){cout<<endl<<" 原密码正确"<<endl;char count1[6],count2[6];cout<<" 请输入新密码:"<<endl;for(i=0;i<6;i++){count1[i]=getch();if((count1[i]>='0'&&count1[i]<='9')||(count1[i]>='a'&&co unt1[i]<='z')||(count1[i]>='A'&&count1[i]<='Z'))putchar('*');}cout<<endl<<" 请再次输入心密码:"<<endl;for(i=0;i<6;i++){count2[i]=getch();if((count2[i]>='0'&&count2[i]<='9')||(count2[i]>='a'&&co unt2[i]<='z')||(count2[i]>='A'&&count2[i]<='Z'))putchar('*');}cout<<endl;if(count1[0]==count2[0]&&count1[1]==count2[1]&&coun t1[2]==count2[2]&&count1[3]==count2[3]&&count1[4]==co unt2[4]&&count1[5]==count2[5]){ infile.close();ofstream dfile("code.txt");for(i=0;i<6;i++)dfile<<count1[i];dfile.close();cout<<"密码修改成功!"<<endl;system("cls");Beep(523,200);Beep(659,300);Beep(784,300);Beep(1060,300);sel=0;}else cout<<"密码修改失败,两次输入不一致"<<endl;}else cout<<"密码错误,密码修改失败"<<endl;}3、main#include <iostream>#include<conio.h>#include<stdio.h>#include<string>#include<cmath>#include<cstdlib>#include <windows.h>#include<fstream>#include<cstring>#include <time.h>#include"car.h"using namespace std;Auto r1[31]; Carriage r2[31]; Truck r3[31];int vehicle;void fun11();void fun12();void fun13();void fun1();void fun2();void fun3();void fun31();void fun32();void fun3();void fun4();void codechange(); void code();void funsave();* * void read();int main(){code();int sel=1;read();while(sel){cout<<"------------------------------------------"<<endl;cout<<" **"<<endl;cout<<" 欢迎进入停车场管理程序"<<endl;cout<<" **"<<endl;cout<<"------------------------------------------"<<endl;cout<<endl<<endl;cout<<"请选择您的操作:"<<endl<<endl;cout<<" 1.进站车辆;"<<endl;cout<<" 2.出站车辆;"<<endl;cout<<" 3.查找信息;"<<endl;cout<<" 4.显示所有车辆信息;"<<endl;cout<<" 5.修改密码;"<<endl;cout<<" 0.退出;"<<endl;cout<<"请选择按键(0-5):";sel=9;int s1;cin>>s1;cout<<endl;//判断输入,0退出if(s1>=0 && s1<=5){switch(s1){case 1:fun1();break; //增加车辆case 2:fun2();break; //出站车辆case 3:fun3();break; //查找信息case 4:fun4();break; //显示所有case 5:codechange();break; //修改密码case 0:funsave();sel=0;break; //退出}}else{cout<<"输入错误,请重新输入!"<<endl;system("cls");}}return 0;}void fun11() //轿车类{if(vehicle==30)cout<<"车位已满"<<endl;else{int i;char y;for(i=1;i<31;i++){if(r1[i].GetPos()==0&&r2[i].GetPos()==0 &&r3[i].GetPos()==0)break;}string num;string name;int outvalue;cout<<"请输入车牌号:"<<endl;cin>>num;cout<<"请输入车主姓名:"<<endl;cin>>name;cout<<"请输入排量:"<<endl;cin>>outvalue;cout<<"登陆成功,您的车位为:"<<i<<" 确认请按Y:"<<endl;cin>>y;Auto u(i,num,name,outvalue);u.Stime();r1[i]=u;vehicle++;system("cls");}}void fun12() //客车{ if(vehicle==30)cout<<"车位已满"<<endl;else{int i;for(i=1;i<31;i++){if(r1[i].GetPos()==0&&r2[i].GetPos()==0* * &&r3[i].GetPos()==0)break;}string num;string name;int capacity;cout<<"请输入车牌号:"<<endl;cin>>num;cout<<"请输入车主姓名:"<<endl;cin>>name;cout<<"请输入载客量:"<<endl;cin>>capacity;cout<<"登陆成功,您的车位为:"<<i<<" 确认请按Y:"<<endl;char y;cin>>y;Carriage u(i,num,name,capacity);u.Stime();r2[i]=u;vehicle++;system("cls");}}void fun13() //货车{if(vehicle==30)cout<<"车位已满"<<endl;* * else{int i;for(i=1;i<31;i++){if(r1[i].GetPos()==0&&r2[i].GetPos()==0 &&r3[i].GetPos()==0)break;}string num;string name;int heavy;cout<<"请输入车牌号:"<<endl;cin>>num;cout<<"请输入车主姓名:"<<endl;cin>>name;cout<<"请输入载重量:"<<endl;cin>>heavy;cout<<"登陆成功,您的车位为:"<<i<<" 确认请按Y:"<<endl;char y;cin>>y;Truck u(i,num,name,heavy);u.Stime();r3[i]=u;vehicle++;system("cls");}* * }void fun1(){system("cls");int s1=1;cout<<" 欢迎进入车辆登入界面!"<<endl<<endl;while(s1){cout<<" 请选择登入车辆的类型:"<<endl;cout<<" 1.小型车;"<<endl;cout<<" 2.客车;"<<endl;cout<<" 3.货车;"<<endl;cout<<" 0.返回;"<<endl;cin>>s1;if(s1>=0 && s1<=3){switch(s1){case 1:fun11();s1=0;break;case 2:fun12();s1=0;break;case 3:fun13();s1=0;break;* * case 0:break;}}elsecout<<"输入错误,请重新输入!"<<endl;}}void fun2() //登出{int i;system("cls");cout<<"欢迎进入登出界面"<<endl<<endl;cout<<"请输入车位号"<<endl;cin>>i;if(r1[i].GetPos()!=0){r1[i].SetPos();r1[i].Ftime();r1[i].setTime();cout<<"您驻入的时间为:"<<r1[i].GetTime()<<"小时需缴费"<<int(r1[i].Outmoney())<<"元"<<endl;cout<<"欢迎下次光临,祝您旅途愉快!"<<endl;* * vehicle--;}if(r2[i].GetPos()!=0){r2[i].SetPos();r2[i].Ftime();r2[i].setTime();cout<<"您驻入的时间为:"<<r2[i].GetTime()<<"小时需缴费"<<int(r2[i].Outmoney())<<"元"<<endl;cout<<"欢迎下次光临,祝您旅途愉快!"<<endl;vehicle--;}if(r3[i].GetPos()!=0){r3[i].SetPos();r3[i].Ftime();r3[i].setTime();cout<<"您驻入的时间为:"<<r3[i].GetTime()<<"小时需缴费"<<int(r3[i].Outmoney())<<"元"<<endl;cout<<"欢迎下次光临,祝您旅途愉快!"<<endl;vehicle--;}}void fun31(){int i;cout<<"请输入车位号:"<<endl;cin>>i;if(r1[i].GetPos()!=0){cout<<endl;r1[i].show();}if(r2[i].GetPos()!=0){cout<<endl;r2[i].show();}if(r3[i].GetPos()!=0){cout<<endl;r3[i].show();}cout<<" 返回请按0"<<endl;}void fun32(){string m;cout<<"请输入车牌号:"<<endl;cin>>m;for(int i=1;i<31;i++){if(r1[i].GetNum()==m){cout<<endl;r1[i].show();}if(r2[i].GetNum()==m){cout<<endl;r2[i].show();}if(r3[i].GetNum()==m){cout<<endl;r3[i].show();} }cout<<" 返回请按0"<<endl;}void fun3() //查找{int s1=1;system("cls");cout<<"欢迎进入查找界面"<<endl;cout<<"请选择查找方式:"<<endl;cout<<" 1、按车位查找;"<<endl;cout<<" 2、按车牌号查找;"<<endl;cout<<" 0、退出;"<<endl;while(s1){cin>>s1;switch(s1){case 1:fun31();break;* * case 2:fun32();break;case 0:break;}}system("cls");}void fun4() //显示所有{system("cls");int i=0;for(i=1;i<31;i++){if(r1[i].GetPos()!=0){r1[i].show();}if(r2[i].GetPos()!=0){r2[i].show();}if(r3[i].GetPos()!=0){r3[i].show();}}cout<<"确认请按Y"<<endl;char y;cin>>y;system("cls");}void funsave() //信息的保存{fstream in("myfile.txt");if(!in){cout<<"wrong"<<endl;}int i;for(i=1;i<31;i++){if(r1[i].GetPos()!=0)in<<1000+r1[i].GetPos()<<"*"<<r1[i].GetNum()<<"*"<<r1 [i].GetName()<<"*"<<r1[i].time1<<"*"<<r1[i].GetOutvalue()< <"*"<<r1[i].Getprize()<<"*"<<endl;}for(i=1;i<31;i++){if(r2[i].GetPos()!=0)in<<2000+r2[i].GetPos()<<"*"<<r2[i].GetNum()<<"*"<<r2 [i].GetName()<<"*"<<r2[i].time1<<"*"<<r2[i].GetCapacity()< <"*"<<r2[i].Getprize()<<"*"<<endl;}for(i=1;i<31;i++){if(r3[i].GetPos()!=0)in<<3000+r3[i].GetPos()<<"*"<<r3[i].GetNum()<<"*"<<r3 [i].GetName()<<"*"<<r3[i].time1<<"*"<<r3[i].GetHeavy()<<" *"<<r3[i].Getprize()<<"*"<<endl;}cout<<"信息已储存!"<<endl;in.close();}void read() //读取{vehicle=-1;ifstream out("myfile.txt");char u[90],temp[70];int i=0,m=0,sum=0;while(!out.eof()){out.getline(u,90);sum+=strlen(u)+2;out.seekg(sum,ios::beg);vehicle++;if(u[0]=='1') //Auto{int pos1;string num1;string name1;char time11[30];double outvalue1;i=0;pos1=(u[2]-'0')*10+(u[3]-'0'); // 车位while(u[i]!='*'){i++;}i++;m=0;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';num1=temp; //车牌照m=0; i++;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';name1=temp;//车主名m=0;i++;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';strcpy(time11,temp);//timem=0;i++;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';char *pEnd;outvalue1=strtod(temp,&pEnd);//outvalueAuto u(pos1,num1,name1,outvalue1);u.SetStime(time11);r1[pos1]=u;}if(u[0]=='2') //Carriage{ int pos1;string num1;string name1;char time11[30];int capacity1;double capacity;i=0;pos1=(u[2]-'0')*10+(u[3]-'0'); // 车位while(u[i]!='*'){i++;}i++;m=0;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';num1=temp;//车牌照m=0; i++;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';name1=temp;//车主名m=0;i++;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';strcpy(time11,temp);//timem=0;i++;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';char *pEnd;capacity=strtod(temp,&pEnd);//capacitycapacity1=int(capacity);Carriage u(pos1,num1,name1,capacity1);u.SetStime(time11);r2[pos1]=u;}if(u[0]=='3') //Truck{int pos1;string num1;string name1;char time11[30];double heavy;int heavy1;i=0;pos1=(u[2]-'0')*10+(u[3]-'0'); // 车位while(u[i]!='*'){i++;}i++;m=0;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';num1=temp; //车牌照m=0; i++;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';name1=temp; //车主名m=0;i++;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';strcpy(time11,temp);//timem=0;i++;for(;u[i]!='*';i++){temp[m]=u[i];m++;}temp[m]='\0';char *pEnd;heavy=strtod(temp,&pEnd);heavy1=int(heavy);//heavyTruck u(pos1,num1,name1,heavy1);u.SetStime(time11);r3[pos1]=u;}}out.close();}。