资源描述
基于C的车辆信息管理系统
24
2020年4月19日
文档仅供参考
哈尔滨理工大学
软件学院
课程实践报告
课程设计 C++课程实践
题 目 车辆信息管理
班 级 软件15-7
学 生 ***
学 号 ***
指导教师 ***
管理系统的功能说明
1. 存储数据的描述
2. 概要设计说明书
3. 源程序
4. 测试分析(用户操作手册)
5. 总结报告
1. 管理系统功能说明
车辆管理系统有五项功能:
一. 增加车辆信息
二. 浏览所有的车辆信息
三. 查询车辆信息(按车辆品牌和型号)
四. 修改车辆信息(经过型号查找再修改)
五. 退出系统
2. 存储数据的描述
由于本学期c++关于类的知识学的不精,我定义的是上学期学习的结构体,并利用文件存储fopen与fclose产生一个名为information的txt文件存储数据,方便程序的读写。
3. 概要设计说明书
4.对对应地址的信息进行修改
对应地址信息进行输出
输入查找内容,与对应信息类型内数据进行逐个比对,相同返回对应地址。
3.对查找类型进行选择。
1.利用指针将存储地址传给参数,储存数据
2.浏览
依次输出车辆信息
5.退出
对用户要求做出反应:
1. 浏览
2. 增加
3. 查找
4. 修改
5. 退出
系统初始界面并初始化数据内存。
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<<"对不起,没这车。"<<endl<<endl ;
}
void change(cheliang &s) //modifay
{
cheliang q,p,l,m;
int j;
j=0;
q=s->next;
l=s;
m=s;
cout<<"请输入要修改的型号:" ;
char Model[20];
cin>>Model;
cout<<"品牌 "<<"型号 "<<"厂家 "<<"价格 "<<"联系人 "<<endl;
while(q)
{
if (strcmp(q->Model,Model)==0)
{
cout<<"你要修改的信息是:"<<endl;
cout<<q->Brand<<" "<<q->Model<<" "<<q->Manufacturar<<" "<<q->Price<<" "<<q->Linkman<<" "<<endl;
j++;
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;
l->next=q->next;
free(q);
goto tt;
}
else
{
l=q;
q=q->next;
}
}
cout<<endl;
if (j==0) cout<<"没找到你要的数据!"<<endl<<endl ;
tt:
while(!(m->next==NULL)&&(m->next->Model<p->Model))
m=m->next;
p->next=m->next;
m->next=p;
}
void putfile(cheliang &s)
{
cheliang p;
p=s->next;
FILE *fp;
if((fp=fopen("information.txt","w"))==NULL)
{
exit(0);
}
while(p)
{
if(fwrite(p,sizeof(struct car),1,fp)!=1 )
{
return;
}
p=p->next;
}
fclose(fp) ;
}
void getfile(cheliang &s)
{
cheliang p,q;
q=s;
FILE *fp1 ;
if((fp1=fopen("information.txt","r"))==NULL)
{
exit(0);
}
cout<<"品牌 "<<"型号 "<<"厂家 "<<"价格 "<<"联系人 "<<endl;
p=(cheliang)malloc(sizeof(car));
while(fread(p,sizeof(struct car),1,fp1)!=0)
{
cout<<p->Brand<<" "<<p->Model<<" "<<p->Manufacturar<<" "<<p->Price<<" "<<p->Linkman<<" "<<endl;
while(!(q->next==NULL)&&(q->next->Model<p->Model))
q=q->next;
p->next=q->next;
q->next=p;
p=(cheliang)malloc(sizeof(car));
}
fclose(fp1);
cout<<endl;
}
5. 测试分析(用户操作手册)
进入开始界面
输入密码进入系统界面
密码可输入三次
输入正确密码进入初始界面
输入1+回车键建立车辆信息
输入2+回车键进行信息浏览
输入3+回车键进入信息查询的选择界面
此时输入1+回车将按照品牌查找车辆
返回主程序后输入4+回车键进行车辆信息修改并经过输入型号查找修改车辆
主程序中输入4+回车键将修改车辆信息
主程序中输入5+回车键将退出系统
6. 总结报告
程序有一部分直接套用上学期的程序,还向学长进行了请教,总算在规定时间内将程序写完,有很多地方是照着书现看现打的,总是出现一些莫名其妙的错误,后来也终于消除了基本上所有的BUG,也感觉到了自己编程能力的下降,总算是没有大毛病。总的来说,这学期的学习不甚满意,我需要好好看看类与对象还有复制构造函数和析构函数。争取下次完全靠自己完成。
展开阅读全文