① 11. 共享单车信息管理系统 (难度系数:6) 问题描述:设计一个简单的共享单车信息管理系统。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
#include<time.h>

//初始界面输入神秘代码10086进入????????界面

float bike_money;//定义金额
char gName[20];

void print(); //初始界面
void begin();//选择注册或登录
void regist();//注册
void creatInform();//用户基本信息
void after_regist();//创建后选择回到上一级或者登录
void login();//登录界面
int match(char a[20],char b[20]);//检测文件中账号密码 和输入是否匹配
void user_menu();//用户界面
void userKey();//用户选择
void use_bike();//租车
void print_time();//打印时间
void get_time();//获取当前时间并存入文件
int num_bike();//统计单车信息
void user_browseBike();//浏览单车信息
void return_bike();//还车
int num_use_bike();//统计使用中的单车个数
int calculate_time();//计算使用时间
int get_num(float data);//统计余额位数
float calculate_money(int data,float money);//计算用户花费金额
void delete_time();//删除用完的时间
void add_money();//充值系统
void check_money();//查看余额
void change_pas();//更改密码
void manage_menu();//管理员菜单
void keyDown();//对管理员菜单的选择
void add_bike();//添加单车
void delete_bike();//删除单车
void lookup_choice();//查找信息
void lookup_bike();//查找单车信息
void lookup_user();//查找用户信息
int num_user();//统计用户信息
void browseUser();//浏览用户信息
void browseBike();//浏览单车信息
float calculate();//资金流动情况

typedef struct User//用户登录信息
{
char username[20];
char userpas[20];
struct User *next;
}User,*uNode;

typedef struct Inform//用户账号信息
{
char username[20];
char name[20];
int age;
char sex[10];
char tel[12];
float money;
struct Inform *next;
}Inform,*iNode;

typedef struct Bike//单车信息
{
char address[100];//地址
char num[20];//单车编号
int usetime;//使用次数,每使用20次检查一遍并清空
float price;//每小时花费金额
float makemoney; //赚取的金额
float cost;//成本价格
struct Bike *next;
}Bike,*bNode;

typedef struct Time//时间信息
{
char num[20];
int time;
struct Time *next;
}Time,*tNode;

void print() //初始界面
{
system("cls");
printf("\n\n\n\n\n\n\t\t\t\t_______________________________________\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 请选择 |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 我已注册过——请按 1 |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 我是新用户——请按 2 |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 退 出——请按 0 |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t|______________________________________|\n");
printf("\t\t\t\t请输入:");
begin();
}

void begin()//选择注册或登录
{
int choice=0;
scanf("%d",&choice);
switch(choice)
{
case 1:
login();
break;
case 2:
regist();
break;
case 10086:
manage_menu();
break;
case 0:
exit(1);
default:
print();
break;
}
}

void regist()//注册
{
system("title 创建账号");//改变标题
FILE *fp;
int hit;
char username[20],_username[20];
char userpas[20],userpas1[20],_userpas[20];
if((fp=fopen("user.txt","r"))==NULL)//如果不存在user.txt,创建user.txt
{
fp=fopen("user.txt","w+");
fclose(fp);
}
system("cls");
for(;;)
{
printf("\n\n\n\n\n\n\t\t\t\t_____________________________________________\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 注册界面 |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 请输入用户名: |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 请输入密 码: |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 再次确认密码: |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t|____________________________________________|\n");
COORD sin_up_name = { 57, 10 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), sin_up_name);//改变光标位置
scanf("%s",&username);
fp=fopen("user.txt","r");
for(;!feof(fp);)
{
fscanf(fp,"%s%s",_username,_userpas);
if(strcmp(username,_username)==0)
{
COORD name_same = { 32, 18 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), name_same);
printf("该用户名已存在,请输入其他用户名.");
getch();
regist();
}
}
fclose(fp);
strcpy(gName,username);
COORD sin_up_pasword = { 57, 12 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), sin_up_pasword);//改变光标位置
char key;
int i=0,j=0;
while((key=_getch())!='\r')//如果没有输入回车
{
if(i<19)
{
userpas[i++]=key;//每输入一个字符,打印一个*,让密码不可见
printf("*");
}
else
{
COORD sin_pas_too_long = { 32, 18 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), sin_pas_too_long);
printf("密码过长,该密码不可用!\n");
printf("\t\t\t\t即将返回重新注册...");
getch();
regist();
}
}
COORD sin_up_pasword_again = { 57, 14 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), sin_up_pasword_again);//改变光标位置
while((key=_getch())!='\r')//如果没有输入回车
{
if(j<19)
{
userpas1[j++]=key;
printf("*");
}
else
{
COORD sin_pas_again_too_long = { 32, 18 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), sin_pas_again_too_long);
printf("\t密码过长,该密码不可用!\n");
printf("\t即将返回重新注册...");
getch();
regist();
}
}
if(strcmp(userpas,userpas1)==0)//对比两次输入密码是否一致
{
fp=fopen("user.txt","a");//打开user.txt指针指到文件最后
fprintf(fp,"%s\t%s\n",username,userpas);
break;
}
else
{
COORD sin_pas_error = { 28, 18 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), sin_pas_error);
printf("\t两次密码不一致,请重新输入,退出请按ESC");
hit=getch();
if(hit=27) ;
system("cls");
print();
}
}
fclose(fp);
COORD sin_up_sucess = { 28, 18 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), sin_up_sucess);
printf("\t创建成功,按任意键返回");
getch();
system("cls");
creatInform();
after_regist();
}

void creatInform()//用户基本信息
{
system("title 用户信息录入");
FILE *fp;
char username[20],name[20],sex[10],tel[12],s[12];
int age,i=0,j;
float money;
if((fp=fopen("Inform.txt","r"))==NULL)
{
fp=fopen("Inform.txt","w");
fclose(fp);
}
fp=fopen("Inform.txt","a");
system("cls");
printf("请输入您的基本信息,务必确认用户名输入正确,否则将无法使用单车!\n");
getch();
system("cls");
printf("\n\n\n\n\n\n\t\t\t\t_____________________________________________\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 用户信息 |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 请输入用户名: |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 姓 名: |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 年 龄: |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 性 别: |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t| 电 话: |\n");
printf("\t\t\t\t| |\n");
printf("\t\t\t\t|____________________________________________|\n");
COORD sin_up_name = { 57, 10 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), sin_up_name);//改变光标位置
scanf("%s",&username);
if(strcmp(gName,username)!=0)
{
COORD user_name = { 31, 22 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), user_name);//改变光标位置
printf("用户名检测错误,请输入与注册时相同的用户名!");
getch();
creatInform();
}
COORD user_name = { 57, 12 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), user_name);//改变光标位置
scanf("%s",&name);
COORD user_age = { 57, 14 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), user_age);//改变光标位置
scanf("%d",&age);
COORD user_sex = { 57, 16 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), user_sex);//改变光标位置
scanf("%s",&sex);
for(;;)
{
COORD error = { 31, 22 };
COORD user_tel = { 57, 18 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), user_tel);
printf(" ");
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), user_tel);
scanf("%s",&tel) ;
strcpy(s,tel);
if(strlen(tel)!=11)
{
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), error);
printf(" ");
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), error);
printf("请输入十一位电话号码!");
getch();
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), error);
printf(" ");
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), user_tel);
}
for(j=0;(size_t)j<strlen(s);j++)
{
if(s[j]<'0'||s[j]>'9')
{
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), error);
printf(" ");
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), error);
printf("电话号只能为数字!重新输入!");
getch();
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), error);
printf(" ");
break;
}
}
if(strlen(tel)==11&&(size_t)j==strlen(s))
{
break;
}
}
fprintf(fp,"%s\t%s\t%d\t%s\t%s\t",username,name,age,sex,tel);
COORD over = { 31, 22 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), over);
printf("数据录入成功!");
getch();
system("cls");
printf("当前余额为%.1f,无法使用单车,请充值后使用",money);
printf("\n充值金额:");
scanf("%f",&money);
fprintf(fp,"%.1f\n",money);
fclose(fp);
}

void after_regist()//创建后选择回到上一级或者登录
{

② 共享单车盈利模式受挑战是怎么回事

最近微信朋友圈流行的段子是“共享单车的颜色已经不够用了”,一句话道尽了目前共享单车平台发展的尴尬。随着越来越多的共享单车平台进入市场,不同颜色的共享单车涌上城市街头,而原本被评价为设计巧妙的靠押金盈利的商业模式,在持续扩大的投资竞争中也受到严重挑战。

30年前,自行车曾经是中国人最熟悉的交通工具。伴随着改革开放和经济发展,汽车市场快速增长,一度将自行车遥遥甩在后边。数据显示,到2016年底全国汽车保有量达1.94亿辆,且保持10%以上的增长,有49个城市超过100万辆,18个城市超过200万辆,6个城市超过300万辆。快速增长的汽车保有量使得许多城市交通开始堵塞,城市生态环境日趋恶化,城市生活质量也随之急剧下降。


当然,在如此庞大的资本角逐中,也会带来共享单车各种技术的创新发展,从齿轮传动、实心轮胎、整体铸造、智能车锁、自发电技术、隐蔽性刹车到红包点名、骑行社交、客户信息定制、骑行服务再增值、移动智能运维等,可能会为未来的共享单车平台运营者提供更好的产品载体和技术基础。

事实上,共享单车平台的横空出世给城市绿色交通提供了创新性的解决方案,也符合“互联网+”智能交通的落地推广要求,但其给城市带来的负面效应也在逐步显现,未来必然会出台一系列管控政策,这些管控政策一方面会鼓励共享单车继续对绿色交通作出贡献,另一方面,则会通过设置更高的门槛来弱化其在运营及管理上的失范。而作为市场机制下的共享单车运营主体则必须要提前考量,在未来管控政策规范下,如何逃出规模报酬递减区间,真正实现可盈利性发展。

本文作者为中交协危险品专委会常务副会长,清华大学博导

③ 共享电动车有哪些

1、哈啰助力车——哈啰出行
哈啰单车2017年获得蚂蚁金服20亿元的融资,在回与OFO、摩拜的竞争下,逐答渐发展成为国内市场占有率第一的共享单车企业。

2、小蜜电动单车——宝驾出行
小蜜单车是电动单车分时共享出行服务提供商,宝驾(北京)信息技术有限公司旗下。2018年已投放超过20个城市,投放车辆6万余台。李如彬,学大教育创始人兼董事长、宝驾租车创始人兼CEO。

3、小遛电单车——小遛共享
小遛共享2017年在宁波孵化落地,上线投放一年期间,在宁波已服务300万余次,宁波投放车辆约有2万辆。朱波,小遛共享创始人&董事长。开心老爸(上海)投资管理有限公司董事长;宁波快乐白日梦儿童游乐有限公司董事长;“茶风”“主食故事”轻餐饮连锁品牌创始人

④ 国内共享单车累计投放量约多少辆

一千六百万辆。