车友信息管理系统详细编程
- 格式:doc
- 大小:146.00 KB
- 文档页数:28
基于Java Web的车载信息管理系统的设计与实现一、引言随着汽车行业的快速发展,车载信息管理系统的需求越来越大。
传统的车载信息管理系统往往采用C/S架构,需要在车辆上安装客户端软件,这不仅增加了系统的复杂性,还不利于系统的维护和升级。
因此,本文提出了一种基于Java Web的车载信息管理系统,采用B/S 架构,可以随时随地通过互联网对车辆信息进行查询和管理。
二、系统设计系统架构本系统采用B/S架构,前端使用HTML、CSS和JavaScript进行开发,后端使用Java Web 技术进行开发。
前后端通过RESTful API进行通信,数据存储在MySQL数据库中。
功能模块本系统主要包括以下功能模块:(1)用户管理:包括用户注册、登录、密码找回等功能。
(2)车辆管理:包括车辆添加、编辑、删除等功能。
(3)实时监控:可以实时监控车辆的位置、速度、状态等信息。
(4)历史轨迹:可以查看车辆的历史轨迹,包括行驶路线、停留时间等信息。
(5)报警管理:可以设置车辆的报警阈值,当车辆出现异常时,系统会发送报警信息给管理员。
(6)数据分析:可以对车辆的运行数据进行统计分析,包括行驶里程、油耗等信息。
数据库设计本系统采用MySQL数据库进行数据存储,主要包括以下数据表:用户表、车辆表、轨迹表、报警表等。
三、系统实现后端实现后端采用Spring Boot框架进行开发,主要包括控制器、服务层和数据访问层。
控制器负责处理前端发送的请求,服务层负责业务逻辑的处理,数据访问层负责与数据库进行交互。
前后端通过RESTful API进行通信,使用JSON格式进行数据交换。
前端实现前端采用HTML、CSS和JavaScript进行开发,使用Bootstrap框架进行页面布局和样式设计。
通过Ajax技术实现前后端的异步通信,提高用户体验。
使用ECharts图表库进行数据可视化展示。
四、系统测试与展示测试环境搭建为了测试本系统的性能和稳定性,我们搭建了一个模拟的测试环境。
Java课程设计车辆管理系统一、概述1.1 背景车辆管理系统是现代企业管理中常见的一种信息管理系统,它主要用于管理企业拥有的车辆信息、车辆运营情况、车辆维护保养等相关信息。
使用车辆管理系统可以有效提高企业对车辆运营情况的监管能力,降低管理成本,提高工作效率。
1.2 目的本文旨在通过Java课程设计,设计并实现一个简单的车辆管理系统。
通过本课程设计,学生能够掌握Java编程语言的基本知识和应用,并能够熟练运用Java编写简单的信息管理系统。
二、需求分析2.1 系统角色车辆管理系统主要包括管理员和普通用户两种角色。
管理员具有对车辆信息的增删改查权限,普通用户只能查看车辆信息。
2.2 功能模块车辆管理系统主要包括以下功能模块:- 车辆信息管理:包括车辆基本信息的录入、修改、删除和查询功能。
- 车辆运营管理:包括车辆行驶里程、油耗等信息的管理。
- 车辆维护保养:包括车辆保养记录、维修记录等信息的管理。
2.3 技术选型本系统将采用Java语言进行开发,使用Swing框架实现前端界面,使用MySQL数据库进行数据存储和管理。
三、系统设计3.1 系统架构本系统采用B/S架构,即浏览器/服务器模式。
前端采用Swing框架实现图形用户界面,后端采用Java语言编写业务逻辑,数据库采用MySQL进行数据存储。
3.2 数据库设计本系统将设计车辆信息表、车辆运营信息表、车辆维护保养信息表,以及用户信息表等数据库表,并设计相应的表结构、索引和约束。
3.3 系统流程用户通过界面输入相应的车辆信息,系统将信息存储到数据库中,用户可以进行查询、修改和删除等操作。
管理员具有对所有信息的管理权限,普通用户只能进行查询操作。
四、系统实现4.1 用户登入模块用户登入模块是系统的入口,用户需要输入用户名和密码进行登入。
系统根据用户的角色不同,显示相应的功能模块。
4.2 车辆信息管理模块管理员可以进行对车辆信息的增加、修改、删除和查询操作;普通用户只能进行查询操作。
合肥学院计算机科学与技术系课程设计任务书2011~2012学年第一学期课程JA V A语言课程设计课程设计名称车辆管理信息系统专业班级指导教师2011年9月一、需求分析车辆管理信息系统这一软件的设计主要是针对我们日常生活中车辆以及与车辆相关的信息的管理与查询和修改。
本软件所要做的就是对与车辆有关的信息包括司机信息的管理、车辆信息的管理、运营信息的管理、车辆维修信息的管理、事故信息的管理。
软件在功能上需实现:1—1功能分析图1)有关司机信息的管理,有信息的新增,修改及查询功能。
司机基本信息包括的数据项有:司机姓名、司机性别、出生日期、家庭住址、初次领证时间、执照号码、准驾车型、有效期起始时间、有效期结束时间等等。
2)车辆信息的管理,有信息的新增,查询及修改功能.车辆基本信息包括的数据项有:车号、类型、车主、发动机号、车驾号、厂牌型号、车辆总质量、核定载客、登记时间、发证时间、颜色、主要司机等等。
3)运营信息的管理,有输录,查询与修改功能。
运营信息包括的数据项有:车号、司机姓名、运营开始时间、运营结束时间、运营公里、耗油量等等。
4)车辆维修信息的管理,有输入,查询及修改功能。
车辆维修信息包括的数据项有:车牌号、维修时间、维修单位、维修内容、维修费用、配件、备注等等。
5)事故信息的管理,有输入,查询功能。
事故信息包括的数据项有:车牌号、司机姓名、事故时间、事故地点、事故原因、对方车号、对方单位、处理方式、处理金额、备注等二、设计1—2功能设计图1.功能设计本软件的要求的功能为:1)有关司机各种信息的新增,修改及查询.2)车辆信息的新增,查询及修改。
3)运营信息的输录,查询与修改。
4)车辆维修信息的输入,查询及修改。
5)事故信息的输入,查询。
编写软件对以上的功能有着较好的实现。
除此之外我们还增加了用户登录和帮助模块,必须在登录状态下才可以进行操作,用来解决对信息的保护等相关方面的问题,帮助模块主要提示程序的功能。
通过本系统可以进行对车辆信息的增、删、改、查。
#include<stdio.h>#include<stdlib.h>#include<string.h>#define OK 1#define ERROR 0#define OVERFLOW -1typedef int Status;typedef struct{int carnum; // 车牌号char carmodel[20]; //车型char name[10]; //车主姓名int mileage; //总里程int time; //购买日期}Car;typedef struct LNodeCar car;struct LNode *next;}LNode,*LinkList;Status MallocList_car(LinkList &L){L = (LinkList)malloc(sizeof(LNode));if(!L) exit(OVERFLOW);return OK;}Status InitList_car(LinkList &L) // 创建原始车辆信息{ FILE *fp;fp = fopen("car.txt","r");MallocList_car(L);L->next=NULL;LinkList tail = L;LinkList p;while(!feof(fp))MallocList_car(p);{fscanf(fp,"%d%s%s%d%d",&p->car.carnum,&p->car.carmodel,&p->,&p-> eage,&p->car.time);p->next = NULL;tail->next = p;tail = p;}fclose(fp);return OK;}Status ListLength_car(LinkList L) //车辆数量{LinkList P;int length=0;P=L->next;while(P){length++;P=P->next;}return length;Status ListInsert_car(LinkList L) //增加车辆信息{FILE *fp;fp = fopen("car.txt","w");LinkList p = L;int j = 0;while(j < ListLength_car(L)){p=p->next;j++;}LinkList S;MallocList_car(S);printf(" 请依次输入新增车辆的车牌号、车型、车主姓名、总里程、购买日期\n");scanf("%d%s%s%d%d",&S->car.carnum,&S->car.carmodel,&S->,&S->e age,&S->car.time);p->next = S;S->next = NULL;p = L->next;while(p){fprintf(fp,"%d %s %s %d %d",p->car.carnum,p->car.carmodel,p->,p->car.m ileage,p->car.time);fprintf(fp,"\n");p = p->next;}fclose(fp);return OK;}Status ListDelete_car(LinkList L) //删除车辆信息{printf(" 请输入你要删除的车辆的车牌号:");int i;scanf("%d",&i);FILE *fp;fp = fopen("car.txt","w");LinkList p,q;p=L;while(p){if (p->next->car.carnum == i) break;p=p->next;}if(!(p)) return ERROR;q=p->next;p->next=q->next;free(q);p = L;p = L->next;while(p){fprintf(fp,"%d %s %s %d %d",p->car.carnum,p->car.carmodel,p->,p->eag e,p->car.time);fprintf(fp,"\n");p = p->next;}fclose(fp);return OK;Status Visit_car(Car car) // 输出函数{printf("%d %s %s %d %d",car.carnum,car.carmodel,,eage,car.time);printf("\n");return OK;}Status ListTraverse_car(LinkList L,Status Visit_car(Car)){LinkList P;P=L->next;printf(" 车牌号车型车主姓名总里程购买时间\n");while(P != NULL){Visit_car(P->car);P=P->next;}printf("\n");return OK;}Status NumSortList_car(LinkList L) {//按车牌号排序int i, j;Car e1, e2;int length = ListLength_car(L);LinkList p;for(i = 0; i < length - 1; i++) {p = L->next;for(j = 0; j < length - 1 -i; j++) {e1 = p->car;e2 = p->next->car;if (e1.carnum > e2.carnum) {p->car = e2;p->next->car = e1;}p = p->next;}}}Status NameSortList_car(LinkList L) {//按车主姓名排序int i, j;Car e1, e2;int length = ListLength_car(L);LinkList p;for(i = 0; i < length - 1; i++) {p = L->next;for(j = 0; j < length - 1 -i; j++) {e1 = p->car;e2 = p->next->car;if (strcmp(,)) {p->car = e2;p->next->car = e1;}p = p->next;}}}Status TimeSortList_car(LinkList L) {//按购买日期排序int i, j;Car e1, e2;int length = ListLength_car(L);LinkList p;for(i = 0; i < length - 1; i++) {p = L->next;for(j = 0; j < length - 1 -i; j++) {e1 = p->car;e2 = p->next->car;if (e1.time>e2.time) {p->car = e2; p->next->car = e1;}p = p->next;}}}Status NumInquire_car(LinkList L){printf(" 请输入你要查询的车辆的车牌号:int num;scanf("%d",&num); //按车牌号查询车辆信息");LinkList p = L;p = p->next;printf(" 查询信息如下:\n");while(p){if(p->car.carnum == num){Visit_car(p->car);}p = p->next;}return OK;}Status NameInquire_car(LinkList L) //按车主姓名查询车辆信息{printf(" 请输入你要查询的车辆的车主姓名:");char name[20];scanf("%s",name);LinkList p = L;p = p->next;printf(" 查询信息如下:\n"); while(p){if(!strcmp(name,p->)){Visit_car(p->car);}p = p->next;}return OK;}Status TimeInquire_car(LinkList L) // 按购买日期区间查询车辆信息{printf(" 请输入你要查询的购买区间(中间以空格隔开,左边小日期,右边大日期例如20190503 20190603 ):");int a , b;scanf("%d%d",&a,&b);LinkList p = L;p = p->next;printf(" 查询信息如下:\n");if(p->car.time>=a&&p->car.time<=b)while(p){Visit_car(p->car);}p = p->next;}return OK;}Status ListModify_car(LinkList L) //修改员工记录{printf(" 请输入你要修改的车辆的车牌号:"); FILE *fp;fp = fopen("car.txt","w");int i;scanf("%d",&i);LinkList p;p=L->next;while(p)if (p->car.carnum == i) break;p=p->next;}if(!(p)) return ERROR;\n");printf(" 请依次输入修改的车辆的车牌号、车型、车主姓名、总里程、购买日期scanf("%d%s%s%d%d",&p->car.carnum,&p->car.carmodel,&p->,&p->eage,&p->car.time);p = L->next;while(p){fprintf(fp,"%d %s %s %d %d",p->car.carnum,p->car.carmodel,p->,p->eage,p->car.time);fprintf(fp,"\n");p = p->next;}fclose(fp);return OK;}Status DestroyList_car(LinkList L)// 销毁链表{LinkList p;while(L){p = L->next;free(L);L = p;}return OK;}int main(){LinkList L;InitList_car(L);while(1){printf("职工信息管理系统**\n\n");printf(" 1. 增加车辆信息\n");printf(" 2. 删除车辆信息\n"); printf(" 3. 修改车辆信息\n"); printf(" 4. 显示所有车辆信息\n"); printf(" 5. 排序功能\n");printf(" 6. 查询功能\n");printf(" 0. 退出\n\n\n\n"); ListTraverse_car(L,Visit_car);printf("\n 请输入您选择功能的编号:");int choice;scanf("%d",&choice);switch(choice){case 1:ListInsert_car(L);printf(" 增加车辆信息后如下:\n");ListTraverse_car(L,Visit_car);break;case 2:ListDelete_car(L);printf(" 删除车辆信息后如下:\n");ListTraverse_car(L,Visit_car);break;case 3:ListModify_car(L);printf(" 修改车辆信息后如下:\n");ListTraverse_car(L,Visit_car);break;case 4:printf(" 所有车辆信息如下:\n");ListTraverse_car(L,Visit_car);break;case 5:int m;printf(" 请输入你需要的排序方式的序号(1. 按车牌号 2.按购买日期3.按车主姓名):") ;scanf("%d",&m);switch(m){case 1:NumSortList_car(L);ListTraverse_car(L,Visit_car);break;case 2:TimeSortList_car(L);ListTraverse_car(L,Visit_car);break;case 3:NameSortList_car(L);ListTraverse_car(L,Visit_car);break;}break;case 6:int n;printf(" 请输入你需要查询的方式的序号(1. 按车牌号 2.按购买日期3.按车主姓名):");scanf("%d",&n);switch(n){case 1:NumInquire_car(L);break;case 2:TimeInquire_car(L);break;case 3:NameInquire_car(L);break;}break;case 0:exit(0);}printf("\n\n 按任意键返回!\n");getchar();getchar();}DestroyList_car(L);return OK;}。
理工大学软件学院课程实践报告课程设计 C++课程实践题目车辆信息管理班级软件15-7学生 ***学号 ***指导教师 ***管理系统的功能说明1.存储数据的描述2.概要设计说明书3.源程序4.测试分析(用户操作手册)5.总结报告1.管理系统功能说明车辆管理系统有五项功能:一.增加车辆信息二.浏览所有的车辆信息三.查询车辆信息(按车辆品牌和型号)四.修改车辆信息(通过型号查找再修改)五.退出系统2.存储数据的描述由于本学期c++关于类的知识学的不精,我定义的是上学期学习的结构体,并利用文件存储fopen与fclose产生一个名为information的txt文件存储数据,方便程序的读写。
3.概要设计说明书4.源程序#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>using namespace std;typedef struct car{char Brand[20];char Model[20];char Manufacturar[20];//manufacturer 厂家 char Price[30] ;char Linkman[20];struct car *next;} car,*cheliang;int init(cheliang &s);void shuru(cheliang &s);void shuchu(cheliang &s);void find (cheliang &s);void findBrand(cheliang &s);void findModel(cheliang &s);void change(cheliang &s);void putfile(cheliang &s);void getfile(cheliang &s);void welcome();void PrintfSurface(){cout<<"**************************************************************"<<endl;cout<<" * *"<<endl;cout<<" * Welcome To Use 车辆信息管理系统 *"<<endl;cout<<" * *"<<endl;cout<<" * By:软件15-7子墨 *"<<endl;cout<<"**************************************************************"<<endl;cout<<"初始密码123456"<<endl;}int jud=0;void welcome(){int b;char code[7];cout<<"请输入密码:"<<endl;while(b!=3){cin>>code;b++;if(strcmp(code,"123456")!=0) {if(b!=3)cout<<"密码错误,请重新输入:"<<endl; continue;}else{jud=1;break;}}}int main(){system("color 1e");PrintfSurface();welcome();if (jud==0){return 0;}system("cls");cheliang s;init(s);cout<<"\t\t\t&&&&&&&&&&&&&&&&&&&&&&&&&&&"<<endl;cout<<"\t\t\t& &"<<endl;cout<<"\t\t\t& 车辆信息管理系统 &"<<endl;cout<<"\t\t\t& 软7 子墨 &"<<endl;cout<<"\t\t\t&&&&&&&&&&&&&&&&&&&&&&&&&&&"<<endl;cout<<" "<<endl;cout<<endl;while(1){int i;mainint:cout<<"请选择相关操作:"<<endl<<"1.建立车辆信息."<<endl<<"2.浏览车辆信息."<<endl;cout<<"3.查询车辆信息."<<endl<<"4.修改车辆信息."<<endl<<"5.退出管理系统." <<endl<<"请选择:"<<endl;cin>>i;if(i<=0||i>5){cout<<"数字错误,请重新输入!"<<endl<<endl;goto mainint;}switch(i){case 1:shuru(s);break;case 2:shuchu(s);putfile(s);break;case 3:find(s);break;case 4:change(s);break;case 5:cout<<"感使用"<<endl; exit(0);}}}int init(cheliang &s){s=(cheliang)malloc(sizeof(car));//sizeof Pascal的一种存容量度量函数 malloc 动态存分配if (s){s->next=NULL;return 0;}else return -1;}void shuru(cheliang &s) //insert{cout<<endl;cheliang p,q;p=(cheliang)malloc(sizeof(car));cout<<"请输入车辆信息:"<<endl;cout<<"品牌:";cin>>p->Brand;cout<<endl;cout<<"型号:";cin>>p->Model;cout<<endl;cout<<"厂家:";cin>>p->Manufacturar;cout<<endl;cout<<"价格:";cin>>p->Price;cout<<endl;cout<<"联系人:";cin>>p->Linkman;cout<<endl;q=s;while(!(q->next==NULL)&&(q->next->Model<p->Model)) q=q->next;p->next=q->next;q->next=p;}void shuchu(cheliang &s){int a;a=0;cheliang p;p=s->next;cout<<"品牌"<<"型号" <<"厂家"<<"价格"<<"联系人"<<endl;while(p){a++;cout<<p->Brand<<" "<<p->Model<<" "<<p->Manufacturar<<" "<<p->Price<<" "<<p->Linkman<<" "<<endl;p=p->next;}cout<<endl;if (a==0)cout<<"还没有车辆信息!"<<endl<<endl ;}void find (cheliang &s){findl:cout<<"请选择查找方法:"<<endl<<"1.按品牌查找."<<endl<<"2.按型号查找."<<endl;cout<<"请选择:";int k;cin>>k;if(k<0||k>2){cout<<"请输入正确数字"<<endl<<endl; goto findl;}switch(k){case 1:findBrand(s);break;case 2:findModel(s);break;}}void findBrand(cheliang &s) //find by name {cheliang p;p=s->next;cout<<"请输入品牌:";char Brand[20];int j;j=0;cin>>Brand;cout<<"你要查找的资料是:"<<endl;cout<<"品牌"<<"型号" <<"厂家"<<"价格"<<"联系人"<<endl;while(p){if (strcmp(p->Brand,Brand)==0){cout<<p->Brand<<" "<<p->Model<<" "<<p->Manufacturar<<" "<<p->Price<<" "<<p->Linkman<<" "<<endl;j++;}p=p->next;}cout<<endl;if(j==0)cout<<"厂家错误!"<<endl<<endl ;}void findModel(cheliang &s) //find by number{cheliang p;p=s->next;cout<<"请输入型号:";char Model[20];int j;j=0;cin>>Model;cout<<"你要查找的资料是:"<<endl;cout<<"品牌"<<"型号"<<"厂家"<<"价格"<<"联系人"<<endl;while(p){if (strcmp(p->Model,Model)==0){cout<<p->Brand<<" "<<p->Model<<" "<<p->Manufacturar<<" "<<p->Price<<" "<<p->Linkman<<" "<<endl;j++;}p=p->next;}cout<<endl;if(j==0)cout<<"对不起,没这车。
车友信息管理系统一、课题内容和要求【课题内容】该系统要求建立某一车友会车友信息管理系统,并具有排序、查找、计算、显示等功能。
通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用。
由于大多数同学的是c++程序,还使大家掌握类的建立和应用,以及流的操作。
【功能要求】(1)车友信息应包括:车主信息(会员名,昵称,性别,职业,驾龄,年龄等),驾车信息(车辆品牌,车款,颜色等)等。
(2)需要实现的功能1) 要求进入系统需要输入口令验证2) 建立车友信息库,按照年龄从小到大显示车友信息3) 实现车友会新加入会员信息和退会会员信息的更新4) 按照车款查询车友信息5) 计算会员总数,及某一车辆品牌的车友总数6) 查找女性车友的信息7) 将该车友会的信息内容存为文件。
(3)界面友好,输入信息符合逻辑如驾龄为正值等。
除了以上必须要求外,还可以加入自己的人为比较好的功能,或者是优化一些功能,比如上述为输入信息符合逻辑,我们可以在程序里要求用户输入信息必须为符合逻辑的内容,否则不予执行等。
二、需求分析根据程序要求,我定义了几个类,用来实现程序的不同功能。
首先,在class CarFriend中,先将各数据定义类型并分为公有还是私有,再在之后分别处理。
接下来是print函数,其作用为输出录入车友信息时的录入信息。
Build是建立录入系统,实现车有信息录入;Add是增加车友信息,实现车有信息的随时添加;Delete是对已有的车有信息进行删除,用来实现对退会人员的资料删除;Show是在要求资料显示时,显示所有会员名单及资料;AgeSort是对年龄进行从小到大排序;SexFind是按性别对车有进行查找;CarIDC是对所输入品牌数量进行统计;CarTypec是按车款查询车友信息;WriteFile是将信心写入文件储存;Munu()是显示主菜单;Password()是进入系统的口令验证;三、概要设计运行程序,首先进入口令验证,口令输入正确后可记入主菜单,共有10项选择分别执行不同命令。
车辆管理系统java简单的代码车辆管理系统是一种用于记录车辆信息、管理车辆的运转状态和使用情况的软件系统。
在这个系统中,我们会使用Java编程语言编写一些简单的代码,来实现系统管理和数据处理的功能。
接下来,我将为您介绍一些车辆管理系统Java代码的基础知识。
1. 关于Java编程语言的认识Java是一种高级编程语言,它具有面向对象、平台无关性、容易学习和灵活的特点。
Java程序可以在多种操作系统和硬件平台上运行,不需要进行代码的重新编译或修改。
因此,Java成为许多企业和开发者选择的首选编程语言。
在车辆管理系统中,我们需要记录车辆的基本信息、维修记录、车辆保养情况等,这些内容都需要通过编写Java程序来实现。
以下是一些车辆管理系统Java代码的示例:(1)实现车辆信息管理的Java代码:public class Vehicle {String vnumber; //车辆编号String vtype; //车辆类型String vowner; //车主姓名int vcost; //购买价格public void display() { //显示车辆信息System.out.println("车辆编号:" + vnumber);System.out.println("车辆类型:" + vtype);System.out.println("车主姓名:" + vowner);System.out.println("购买价格:" + vcost);}}在上面的代码中,我们定义了一个Vehicle类,其中包含车辆编号、车辆类型、车主姓名以及购买价格等属性,还定义了一个用于显示车辆信息的display()方法。
3. 总结由上述代码可以看出,Java编程语言可以很好地用于实现车辆管理系统的开发。
借助Java的面向对象、易读和可扩展的特性,我们可以快速构建出一个功能完整、易用和可扩展的车辆管理系统。
c语言课程设计车辆管理系统一、教学目标本课程的目标是让学生掌握C语言的基本语法,能够运用C语言设计一个简单的车辆管理系统。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法,理解变量、数据类型、运算符、控制结构等基本概念。
2.技能目标:学生能够运用C语言编写程序,实现对车辆信息的增删改查功能。
3.情感态度价值观目标:培养学生对编程的兴趣,提高学生解决问题的能力,培养学生的团队合作精神。
二、教学内容本课程的教学内容主要包括C语言的基本语法、变量、数据类型、运算符、控制结构等。
具体安排如下:1.第一章:C语言概述,介绍C语言的基本语法和编程环境。
2.第二章:数据类型和变量,讲解整型、浮点型、字符型等数据类型以及变量的使用。
3.第三章:运算符和表达式,介绍算术运算符、关系运算符、逻辑运算符等。
4.第四章:控制结构,讲解顺序结构、选择结构、循环结构等。
5.第五章:函数,介绍函数的定义、声明和调用,以及常用的库函数。
6.第六章:指针,讲解指针的概念和运用,以及指针数组和指向指针的指针。
7.第七章:车辆管理系统,运用所学知识设计一个简单的车辆管理系统。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:通过讲解C语言的基本语法、数据类型、运算符等概念,使学生掌握基础知识。
2.案例分析法:通过分析实际案例,让学生理解控制结构、函数、指针等知识点在实际编程中的应用。
3.实验法:安排实验课程,让学生动手编写程序,培养实际编程能力。
四、教学资源1.教材:《C程序设计语言》(K&R)2.参考书:《C Primer Plus》、《C语言编程思想》3.多媒体资料:PPT课件、教学视频4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。
具体评估标准如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程任务等。
辽宁工业大学 SQL数据库设计课程设计说明书题目:车队管理信息系统院(系): 软件工程学院专业班级:软件工程133班学号: 1313010链接网址:指导教师:佟玉军教师职称:副教授起止时间:20113.12.30-2014.01.10目录第1章课程设计目的与要求 (2)1.1设计目的 (2)1.2设计环境 (2)1.3主要参考资料 (2)1.4设计内容及要求 (2)第2章课程设计内容 (3)2.1数据库设计 (3)2.1.2概念设计 (3)2.1.3逻辑设计 (5)2.1.4物理设计 (6)2.1.5数据库实现 (7)2.2程序设计 (7)2.2.1概要设计 (7)2.2.2程序实现 (9)第3章课程设计总结 (14)参考文献 (15)第1章课程设计目的与要求1.1设计目的(1)、掌握运用管理系统及数据库原理知识进行系统分析和设计的方法;(2)掌握关系数据库的设计方法;(3)掌握SQL Server 2000技术应用;(4)掌握简单的数据库应用程序编写方法;(5)理解C/S模式结构。
1.2设计环境硬件:一台配置中等的计算机。
软件:vb做的前台,SQL做的后台,来完成的车队管理信息系统。
1.3主要参考资料1.《管理信息系统》黄梯云高等教育出版社2.《数据库系统概论》萨师煊高等教育出版社3.《SQL Server 2000 数据库应用系统开发技术》朱如龙编,机械工业出版社。
4.《SQL Server 2000 数据库应用系统开发技术实验指导》朱如龙编,机械工业出版社5.《SEO探索网》1.4设计内容及要求一、内容1.要求根据管理信息系统及数据库设计原理,按照数据库系统设计的步骤和规范,完成各阶段的设计内容。
2.需求分析具体实际,数据流图、数据字典、关系模型要正确规范3.在sql server2000 上实现设计的数据库模型。
4.对应用程序进行概要设计。
5.用VB实现简单的应用程序编写。
二、要求设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。
先建立四个头文件cr.h;prepare.h;file.h;list.h;;;;在D盘建立一个“文件.txt”即可。
文件代码cr.h#ifndef _CR#define _CR#include<stdio.h>struct Carfriend{long VIPnum;char name[10];char sex[7];char job[10];int age[2];char brand[10];char type[7];char colour[8];};typedef struct Carfriend Type;const int sizeCfr=sizeof(Type); //车友信息所需要的内存空间大小struct node{Type data;struct node *next;};const int size=sizeof(struct node); //结点所需要的内存空间的大小#endifPrepare.h#ifndef _PREPARE#define _PREPARE#include"cr.h"#include<stdio.h>#include<string.h>void printHead() //打印表头函数{printf("%8s%9s%9s%9s%7s%7s%13s%7s%7s\n","会员名","昵称","性别","职业","驾龄","年龄","车辆品牌","车款","颜色");}void printNode(Type data) //输出结点所有数据域的值{int i;printf("%8ld",data.VIPnum);printf("%9s",);printf("%9s",data.sex);printf("%9s",data.job);for(i=0;i<2;i++)printf("%7d",data.age[i]);printf("%13s",data.brand);printf("%7s",data.type);printf("%7s",data.colour);}void readNode(Type *pdata) //根据提示读入结点的相关数据域的值int i;printf("Input one carfriend\'s information\n");printf("VIPnum: ");scanf("%ld",&pdata->VIPnum);printf("name: ");scanf("%s",&pdata->name);printf("sex(Male or Female): ");scanf("%s",&pdata->sex);printf("job: ");scanf("%s",&pdata->job);printf("Input the driving years and the age of the carfriend\n"); for(i=0;i<2;i++){scanf("%d",&pdata->age[i]);}printf("brand of the car: ");scanf("%s",&pdata->brand);printf("type: ");scanf("%s",&pdata->type);printf("colour of the car: ");scanf("%s",&pdata->colour);int endWith(Type data) //输入结点数据时会员名域为0作为结束条件{return data.VIPnum==0;}int equal(Type data1,Type data2,int condition){if(condition==1)if(strcmp(data1.brand,data2.brand)==0)return 0;elsereturn 1;elseif(condition==2)if(strcmp(data1.sex,data2.sex)==0)return 0;elsereturn 1;elsereturn 1;}int larger(Type data1,Type data2,int condition){if(condition==1)return data1.age[1]>data2.age[1];return 1;}#endiffile.h#include<stdio.h>#include<stdlib.h>#include"list.h"void createFile() //建立初始的数据文件{Type data;int n,i;FILE *fp;if((fp=fopen("D:\\文件.txt","w"))==NULL) //指定好文件名,以写入方式打开{printf("can not open file cashbox.txt!\n"); //若打开失败,输出提示信息,退出exit(0);}printf("how many records do you want to add?\n");scanf("%d",&n);printf("input Carfriends\' information\n");for(i=1;i<=n;i++){readNode(&data);fwrite(&data,sizeCfr,1,fp); //将刚才读入的一条记录写入文件printf("\n");}fclose(fp); //关闭文件}struct node *readFile(struct node *head) //将文件中的内容读出置于单链表中{Type data;FILE *fp;head=NULL;if((fp=fopen("D:\\文件.txt","r"))==NULL) //以读的方式打开指定文件{printf("can not open file!\n"); //如果打开失败输出提示信息,退出exit(0);}fread(&data,sizeCfr,1,fp); //读出第一条记录while(!feof(fp)) //文件结束时循环{head=InsertOrder(head,data,1);//从文件中读出后按年龄顺序插入链表fread(&data,sizeCfr,1,fp);//再读出下一条记录printf("\n");}fclose(fp); //关闭文件return head; //返回单链表的头指针}void saveFile(struct node *head) // 将链表中各结点的值依次写入文件{struct node *p=head;FILE *fp;if((fp=fopen("D:\\文件.txt","w"))==NULL) //以写的方式打开指定文件{printf("can not open file!\n"); //如果打开失败,输出提示信息,退出exit(0);}if(head==NULL) //如果头指针为空输出提示信息,退出{printf("\nNo Record\n");return ;}while(p) //p从head开始,如果链表未结束{fwrite(&p->next,sizeCfr,1,fp); //则将p所指的结点数据值写入文件中p=p->next; //p指针后移,准备处理下一个结点}fclose(fp); //关闭文件}list.h#ifndef _LIST#define _LIST#include"prepare.h" //文件包含,本文件是对结点数据域为Type类型的单链表进行的处理#include<stdio.h>#include<math.h>struct node *CreateBackward(); //后插法新建链表struct node *CreateForward(); //前插法新建链表struct node *CreateInsert(); //按序插入法新建链表struct node *printList(struct node *head); //链表的遍历struct node *SearchNode(struct node *head,Type data,int condition); //单链表的查找struct node *InsertAfter(struct node *head,Type data); //尾部插入struct node *InsertOrder(struct node *head,Type data,int condition); //有序插入struct node *Delete(struct node *head,Type data); //删除结点struct node *Recerse(struct node *head); //单链表的逆置struct node *printList(struct node *head) //链表的遍历{struct node *p;if(head==NULL) //如果链表原来为空{printf("\nNo Records\n"); //输出提示信息,然后返回return NULL;}for(p=head;p;p=p->next) //p从头指针开始,每循环一次向后移1结点位置{printNode(p->data); //p非空时执行循环体,调用printNode函数输出结点的元素值printf("\n");}printf("\n"); //然后换行return head; //返回头指针}struct node *CreateBackward() //后插法新建链表{struct node *head,*p,*tail; //tail用来定位于当前链表中最后一个结点位置Type data;head=NULL; //链表未建时对头指针和尾指针进行清零处理tail=NULL;printf("Input data end with 0:\n");readNode(&data); //调用readNode输入一个结点的数据域的值while(!endWith(data)) //endWith(data)函数值为真时结束链表结点的生成{p=(struct node *)malloc(size); //利用指针p申请结点的动态空间p->data=data; //数据域赋值p->next=NULL; //新结点的指针域赋值if(head=NULL) //初始链为空时,要修改头文件head=p;else //链非空时,将p置于tail所指结点之后tail->next=p;tail=p; //使指向新的链尾,便于下次插入readNode(&data); //继续读入下一个结点的数据域的值}return head; //返回头指针}struct node *CreateForward() //前插法新建链表{struct node *head,*p;Type data;head=NULL; //链表未建时对头指针进行清零处理printf("Input data end with 0:\n");readNode(&data); //调用readNode输入一个结点的数据域的值while(!endWith(data)) //endWith(data)函数值为真时结束链表结点的生成{p=(struct node *)malloc(size); //利用指针p申请结点的动态空间p->data=data; //数据域赋值p->next=head; //新结点的指针域赋值为head head=p; //修改头指针readNode(&data); //继续读入下一个结点的数据域的值}return head; //返回头指针}void Revise(struct node *head,char s[20],long a){struct node *p;int count=0;if(head==NULL) //如果链表原来就为空{printf("\nNO Records\n"); //输出提示信息return ; //返回空指针}for(p=head;p;p=p->next){if(p->data .VIPnum==a&&strcmp(p->,s)==0){count=1;readNode(&p->data);break;}}if(count==0)printf("it is not in the list!\n");return;}struct node *SearchNode(struct node *head,Type data,int condition) //单链表的查找{struct node *p=head; //p从head开始int count=0;if(head==NULL) //如果链表原来就为空{printf("\nNO Records\n"); //输出提示信息return 0; //返回空指针}while(p){if(equal(p->data,data,condition)==0){printHead();printNode(p->data);printf("\n");count++;}p=p->next;}if(count==0)printf("it is not in the list!\n");return 0;}struct node *InsertAfter(struct node *head,Type data) //尾部插入{struct node *p,*p1;p=(struct node*)malloc(size); //利用指针p申请动态空间p->data=data; //数据域赋值p->next=NULL; //指针域直接赋值为空,因为它是新链最后的结点if(head==NULL) //如果链表原来为空{head=p; //修改头指针return head; //返回头指针}p1=head; //链表原来非空,则指针p1从头指针开始while(p1->next) //如果指针还没有指向链表的最后一个结点处{p1=p1->next; //p1顺着链向后移动} //循环停止时,p1指向了链表的最后一个结点处p1->next=p; //将新结点连在p1之后return head; //返回头指针}struct node *InsertOrder(struct node *head,Type data,int condition) //有序插入法{struct node *p,*p1,*p2;p2=head;p=(struct node*)malloc(size); //利用指针p申请动态空间p->data=data; //数据域赋值p->next=NULL; //指针域直接赋值为空,以后根据插入位置再修改if(head==NULL) //原链表为空时的插入{head=p; //新插入结点成为头结点return head;}//原链表不为空时的插入,larger是一个通用函数while(p2&&larger(p->data ,p2->data,condition)) //第一参数大于第二参数,返回真{p1=p2; //p1是p2的前趋结点,二者同时后移p2=p2->next;}if(head==p2) //如果要在最前面插入,则要修改head指针head=p;else //否则p插在p1的后面p1->next=p;p->next=p2; //p2作为p的后继结点,即p插在p1和p2之间return head; //返回头指针}struct node *CreateInsert() //按序插入法新建链表{struct node *head;Type data;head=NULL;printf("Input data end with 0:\n");readNode(&data); //调用readNode输入一个结点的数据域的值while(!endWith(data)) //endWith(data)函数值为真时结束链表结点的生成head=InsertOrder(head,data,1); //直接InserOrder函数插入新结点readNode(&data); //继续读入下一个结点的数据域的值}return head; //返回头指针}struct node *Delete(struct node *head,Type data) //删除结点{struct node *p=head,*q=NULL;if(head==NULL) //如果原来链表为空,则给出提示信息并返回{printf("\nNo Records\n");return head;}while(p&&!equal(p->data,data,1)) //如果链表非空,则从第1个结点开始比较{q=p; //如果没有找到要删除的结点,则p和q同时向后移p=p->next; //动一个结点位置,q始终是p的前趋}if(p) //如果找到需要删除的结点if(q) //如果删除的不是第一个结点q->next=p->next; //修改的域,使p的后继成为q的后继else //如果删除的是第一个结点(q保持初值NULL)head=head->next; //修改head指针free(p); //释放指针p所指向的结点空间}else //如果没有待删除的点printf("it is not in the list.\n"); //则输出提示信息return head; //返回头指针}struct node *Recerse(struct node *head) //单链表的逆置{struct node *p=head,*q; //p是当前要处理的结点指针,从原head开始head=NULL; //head置为空值while(p) //用遍历思想{q=p->next; //q记下p的后继结点,便于下次继续处理p->next=head; //修改p的next域,前趋变后趋head=p; //head指向已逆置完成的新的第一个结点处p=q; //p移向原链表的下一个结点处,再进行处理}return head; //返回头指针}#endif主程序代码#include<stdio.h>#include<stdlib.h>#include"list.h"#include"file.h"#include"string.h"#include"ctype.h"#include"windows.h"#include"conio.h"#include"malloc.h"#include"cr.h"void menu() //一级菜单函数{printf("************1. 显示车友信息*******************\n"); printf("************2. 车友信息管理*******************\n"); printf("************3. 车友人数统计*******************\n"); printf("************4. 根据条件查询*******************\n"); printf("************0. 退出*******************\n"); printf("\n");}void menuBase() //车友信息管理的二级菜单{printf("************1. 增加车友信息*******************\n");printf("************2. 删除车友信息*******************\n");printf("************3. 修改车友信息*******************\n");printf("************0. 返回上级菜单*******************\n");printf("\n");}void menuCount() //车友人数统计的二级菜单{printf("************1. 车友总人数*******************\n"); printf("************2. 车辆品牌的车友人数*******************\n"); printf("************0. 返回上级菜单*******************\n"); printf("\n");}void menuSearch() //根据条件查询的二级菜单{printf("************1. 根据车款查询车友信息*******************\n"); printf("************2. 根据性别查询车友信息*******************\n"); printf("************0. 返回上级菜单*******************\n"); printf("\n");}struct node * baseManage(struct node *head) //车友信息管理模块的实现{int choice;Type data;long s1;char s2[20];do //用do~while语句可以多次选择二级菜单{menuBase(); //调用二级菜单显示函数printf("choice one operation you want to do:\n");scanf("%d",&choice); //输入选择项switch(choice){case 1: readNode(&data); //首先读入待插入的车友信息,再插入head=InsertOrder(head,data,1);break;case 2: printf("Input the VIP number deleted\n");//读入会员名,根据会员名进行删除(会员名就是一个号,相当于学号)scanf("%d",&data.VIPnum);head=Delete(head,data);break;case 3: printf("P;ease input thr VIP number and his name to be xiugai.\n");printf("VIPnum: ");scanf("%ld",&s1);printf("name: ");scanf("%s",&s2);Revise(head,s2,s1);break;case 0: break;}}while(choice); //还是回到二级菜单允许再次选择二级功能return head;}int Count(struct node *head) //求总人数{struct node *p;int count=0; //count统计总人数for(p=head;p;p=p->next){count++;}return count;}int brandCount(struct node *head,char *s){int count=0;struct node *p;for(p=head;p;p=p->next){if((strcmp(p->data.brand,s)==0))count++;}return count;}struct node *countManage(struct node *head) //车友人数统计模块的实现{int choice,all,brandcount;char s[20];do{menuCount();printf("choice one operation you want to do:\n");scanf("%d",&choice);switch(choice){case 1: printf("the number of the people is:\n");all=Count(head);printf("all=%d",all);printf("\n");break;case 2: printf("Please input the brand will be searched:\n");scanf("%s",s);brandcount=brandCount(head,s);printf("brandcount=%d",brandcount);printf("\n");printf("\n");break;case 0: saveFile(head);break;}}while(choice);return head;}struct node *searchManage(struct node *head) //根据条件查询模块的实现{int choice;Type data;do //用do~while语句可以多次选择二级菜单{menuSearch();printf("choice one operation you want to do:\n");scanf("%d",&choice); //输入选择项switch(choice){case 1: printf("Input a VIP\'s car\'s brand will be searched:\n");scanf("%s",&data.brand); //输入车款,将根据车款查询SearchNode(head,data,choice);printf("\n");break;case 2: printf("Input a VIP\'s sex will be searched:\n");scanf("%s",&data.sex); //输入性别,将根据性别查询SearchNode(head,data,choice);printf("\n");break;case 0:break;}}while(choice); //返回二级菜单允许再次选择二级功能return head; //返回头指针}struct node* runMain(struct node *head,int choice) //该函数受main调用,根据选择项分别调用{ //函数实现各模块的功能switch(choice){case 1: printHead(); //选择1.先输出表头head=printList(head); //调用函数完成显示车友信息的功能break;case 2: head=baseManage(head); //选择2.调用函数完成车友信息管理功能break;case 3: head=countManage(head); //选择3,调用函数完成车友人数统计的功能break;case 4: head=searchManage(head); //选择4,调用函数完成根据条件查询的功能break;case 0: break;}return head; //返回头指针}int main(){char d[6];char m[6];m[0]='8',m[1]='8',m[2]='0',m[3]='5',m[4]='0',m[5]='5'; //数组比较printf("请输入六位数密码:"); //输入密码for (int n=0;;){for(int i=0;i<6;i++){d[i]=getch();if(d[i]>='0'||d[i]<='9'||d[i]>='a'||d[i]<='z'||d[i]>='A'||d[i]<='Z')putchar('*');}if(d[0]==m[0]&&d[1]==m[1]&&d[2]==m[2]&&d[3]==m[3]&&d[4]==m[4]&&d[5]==m[5]) {printf("\n欢迎使用!\n");printf("\n按任意键继续\n");}if(d[0]!=m[0]||d[1]!=m[1]||d[2]!=m[2]||d[3]!=m[3]||d[4]!=m[4]||d[5]!=m[5]) //当密码错误时如下printf("\n密码错误!请重新输入:");if (n>3){printf("error\n");exit (0);}n++;}struct node *head=NULL;int choice;head=readFile(head);if(!head){createFile();head=readFile(head);}do{printf("Please input your choice:");scanf("%d",&choice);if(choice>=0&&choice<=4)head=runMain(head,choice);elseprintf("erroe input,please input your choice again!\n");}while(choice);saveFile(head);return 0;}用的时候注意修改修改,不然大家都一样啦。