广告位联系
返回顶部
分享到

C语言实现共享单车管理系统

C语言 来源:互联网 作者:佚名 发布时间:2022-09-01 21:37:24 人浏览
摘要

1.功能模块图; 2.各个模块详细的功能描述。 1.登陆:登陆分为用户登陆,管理员登陆以及维修员登录,登陆后不同的用户所执行的操作不同,权限不同。 (1)管理员登录:管理员

1.功能模块图;

2.各个模块详细的功能描述。

1.登陆:登陆分为用户登陆,管理员登陆以及维修员登录,登陆后不同的用户所执行的操作不同,权限不同。

(1)管理员登录:管理员登陆之后,可使用键盘的上下键来控制菜单上的选项,管理员权限不多,可执行最多的操作,可以对单车进行投放,删除,修改,查找,车牌号排序,查看所有单车信息,所有用户信息,管理员能通过或驳回正在申请注册的维修员,还可以查看完全通过认证的维修员。   

(2)用户登录:用户登录时需要输入注册时的账号和密码,或者是之前注册的有效账号及密码,用户可以查看自己附近的车,立即用车当车密码出现的时候就开始计时了,还车后停止计时,一个时间段内没有还车不能再借车了,另外还有报修,报修的信息会上传到维修员那里,还可以查看自己的信息修改自己的信息,当用户账号不足100元时不能再借车了,所以还有充值这一项功能。

(3)维修员登录:维修员登录时也需要账户和密码(管理员认证的),维修员权限较大,只可以查看自己的信息,修改自己的信息,以及查看用户报修的单车信息。

2.注册:注册有用户注册和维修员注册。

(1)用户注册:用户注册时,手机号即为登录账户,有查重的功能,每个手机号只能注册一个用户,设置密码时,系统会对你的密码的安全系数进行评分,以及需要确认密码,两次不一致注册失败,输入年龄,年龄不满10岁不可注册,注册成功后需要起一个用户名,需要绑定充值卡,首次充值200元,即可登录。

(2)维修员注册:维修员注册时,手机号即为登录账户,也有查重的功能,每个手机号只能注册一个用户,设置密码时,系统会对你的密码的安全系数进行评分,以及需要确认密码,两次不一致注册失败,后需要起一个用户名,输入年龄,年龄不满18岁不可注册,但此时并没有注册成功,只是完成了申请,不可登录,等待管理员认证,通过,注册成功,即可登录,驳回,注册失败。

3.增加:增加单车信息到文件 中。

4.修改:修改单车信息,修改用户个人信息,修改维修员个人信息。

5.删除:删除单车。

6.查找:查找单车并按所选顺序查看。

3.详细设计

(1).功能函数的调用关系图

(2).各功能函数的数据流程图

a.(查找单车)

b.(增加单车)

c.(删除单车)

d.(修改单车信息)

e.(查看所有用户信息)

f.(查看所有维修员信息)

g.(注册)

h.(登陆)

3.代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

436

437

438

439

440

441

442

443

444

445

446

447

448

449

450

451

452

453

454

455

456

457

458

459

460

461

462

463

464

465

466

467

468

469

470

471

472

473

474

475

476

477

478

479

480

481

482

483

484

485

486

487

488

489

490

491

492

493

494

495

496

497

498

499

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

522

523

524

525

526

527

528

529

530

531

532

533

534

535

536

537

538

539

540

541

542

543

544

545

546

547

548

549

550

551

552

553

554

555

556

557

558

559

560

561

562

563

564

565

566

567

568

569

570

571

572

573

574

575

576

577

578

579

580

581

582

583

584

585

586

587

588

589

590

591

592

593

594

595

596

597

598

599

600

601

602

603

604

605

606

607

608

609

610

611

612

613

614

615

616

617

618

619

620

621

622

623

624

625

626

627

628

629

630

631

632

633

634

635

636

637

638

639

640

641

642

643

644

645

646

647

648

649

650

651

652

653

654

655

656

657

658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

674

675

676

677

678

679

680

681

682

683

684

685

686

687

688

689

690

691

692

693

694

695

696

697

698

699

700

701

702

703

704

705

706

707

708

709

710

711

712

713

714

715

716

717

718

719

720

721

722

723

724

725

726

727

728

729

730

731

732

733

734

735

736

737

738

739

740

741

742

743

744

745

746

747

748

749

750

751

752

753

754

755

756

757

758

759

760

761

762

763

764

765

766

767

768

769

770

771

772

773

774

775

776

777

778

779

780

781

782

783

784

785

786

787

788

789

790

791

792

793

794

795

796

797

798

799

800

801

802

803

804

805

806

807

808

809

810

811

812

813

814

815

816

817

818

819

820

821

822

823

824

825

826

827

828

829

830

831

832

833

834

835

836

837

838

839

840

841

842

843

844

845

846

847

848

849

850

851

852

853

854

855

856

857

858

859

860

861

862

863

864

865

866

867

868

869

870

871

872

873

874

875

876

877

878

879

880

881

882

883

884

885

886

887

888

889

890

891

892

893

894

895

896

897

898

899

900

901

902

903

904

905

906

907

908

909

910

911

912

913

914

915

916

917

918

919

920

921

922

923

924

925

926

927

928

929

930

931

932

933

934

935

936

937

938

939

940

941

942

943

944

945

946

947

948

949

950

951

952

953

954

955

956

957

958

959

960

961

962

963

964

965

966

967

968

969

970

971

972

973

974

975

976

977

978

979

980

981

982

983

984

985

986

987

988

989

990

991

992

993

994

995

996

997

998

999

1000

1001

1002

1003

1004

1005

1006

1007

1008

1009

1010

1011

1012

1013

1014

1015

1016

1017

1018

1019

1020

1021

1022

1023

1024

1025

1026

1027

1028

1029

1030

1031

1032

1033

1034

1035

1036

1037

1038

1039

1040

1041

1042

1043

1044

1045

1046

1047

1048

1049

1050

1051

1052

1053

1054

1055

1056

1057

1058

1059

1060

1061

1062

1063

1064

1065

1066

1067

1068

1069

1070

1071

1072

1073

1074

1075

1076

1077

1078

1079

1080

1081

1082

1083

1084

1085

1086

1087

1088

1089

1090

1091

1092

1093

1094

1095

1096

1097

1098

1099

1100

1101

1102

1103

1104

1105

1106

1107

1108

1109

1110

1111

1112

1113

1114

1115

1116

1117

1118

1119

1120

1121

1122

1123

1124

1125

1126

1127

1128

1129

1130

1131

1132

1133

1134

1135

1136

1137

1138

1139

1140

1141

1142

1143

1144

1145

1146

1147

1148

1149

1150

1151

1152

1153

1154

1155

1156

1157

1158

1159

1160

1161

1162

1163

1164

1165

1166

1167

1168

1169

1170

1171

1172

1173

1174

1175

1176

1177

1178

1179

1180

1181

1182

1183

1184

1185

1186

1187

1188

1189

1190

1191

1192

1193

1194

1195

1196

1197

1198

1199

1200

1201

1202

1203

1204

1205

1206

1207

1208

1209

1210

1211

1212

1213

1214

1215

1216

1217

1218

1219

1220

1221

1222

1223

1224

1225

1226

1227

1228

1229

1230

1231

1232

1233

1234

1235

1236

1237

1238

1239

1240

1241

1242

1243

1244

1245

1246

1247

1248

1249

1250

1251

1252

1253

1254

1255

1256

1257

1258

1259

1260

1261

1262

1263

1264

1265

1266

1267

1268

1269

1270

1271

1272

1273

1274

1275

1276

1277

1278

1279

1280

1281

1282

1283

1284

1285

1286

1287

1288

1289

1290

1291

1292

1293

1294

1295

1296

1297

1298

1299

1300

1301

1302

1303

1304

1305

1306

1307

1308

1309

1310

1311

1312

1313

1314

1315

1316

1317

1318

1319

1320

1321

1322

1323

1324

1325

1326

1327

1328

1329

1330

1331

1332

1333

1334

1335

1336

1337

1338

1339

1340

1341

1342

1343

1344

1345

1346

1347

1348

1349

1350

1351

1352

1353

1354

1355

1356

1357

1358

1359

1360

1361

1362

1363

1364

1365

1366

1367

1368

1369

1370

1371

1372

1373

1374

1375

1376

1377

1378

1379

1380

1381

1382

1383

1384

1385

1386

1387

1388

1389

1390

1391

1392

1393

1394

1395

1396

1397

1398

1399

1400

1401

1402

1403

1404

1405

1406

1407

1408

1409

1410

1411

1412

1413

1414

1415

1416

1417

1418

1419

1420

1421

1422

1423

1424

1425

1426

1427

1428

1429

1430

1431

1432

1433

1434

1435

1436

1437

1438

1439

1440

1441

1442

1443

1444

1445

1446

1447

1448

1449

1450

1451

1452

1453

1454

1455

1456

1457

1458

1459

1460

1461

1462

1463

1464

1465

1466

1467

1468

1469

1470

1471

1472

1473

1474

1475

1476

1477

1478

1479

1480

1481

1482

1483

1484

1485

1486

1487

1488

1489

1490

1491

1492

1493

1494

1495

1496

1497

1498

1499

1500

1501

1502

1503

1504

1505

1506

1507

1508

1509

1510

1511

1512

1513

1514

1515

1516

1517

1518

1519

1520

1521

1522

1523

1524

1525

1526

1527

1528

1529

1530

1531

1532

1533

1534

1535

1536

1537

1538

1539

1540

1541

1542

1543

1544

1545

1546

1547

1548

1549

1550

1551

1552

1553

1554

1555

1556

1557

1558

1559

1560

1561

1562

1563

1564

1565

1566

1567

1568

1569

1570

1571

1572

1573

1574

1575

1576

1577

1578

1579

1580

1581

1582

1583

1584

1585

1586

1587

1588

1589

1590

1591

1592

1593

1594

1595

1596

1597

1598

1599

1600

1601

1602

1603

1604

1605

1606

1607

1608

1609

1610

1611

1612

1613

1614

1615

1616

1617

1618

1619

1620

1621

1622

1623

1624

1625

1626

1627

1628

1629

1630

1631

1632

1633

1634

1635

1636

1637

1638

1639

1640

1641

1642

1643

1644

1645

1646

1647

1648

1649

1650

1651

1652

1653

1654

1655

1656

1657

1658

1659

1660

1661

1662

1663

1664

1665

1666

1667

1668

1669

1670

1671

1672

1673

1674

1675

1676

1677

1678

1679

1680

1681

1682

1683

1684

1685

1686

1687

1688

1689

1690

1691

1692

1693

1694

1695

1696

1697

1698

1699

1700

1701

1702

1703

1704

1705

1706

1707

1708

1709

1710

1711

1712

1713

1714

1715

1716

1717

1718

1719

1720

1721

1722

1723

1724

1725

1726

1727

1728

1729

1730

1731

1732

1733

1734

1735

1736

1737

1738

1739

1740

1741

1742

1743

1744

1745

1746

1747

1748

1749

1750

1751

1752

1753

1754

1755

1756

1757

1758

1759

1760

1761

1762

1763

1764

1765

1766

1767

1768

1769

1770

1771

1772

1773

1774

1775

1776

1777

1778

1779

1780

1781

1782

1783

1784

1785

1786

1787

1788

1789

1790

1791

1792

1793

1794

1795

1796

1797

1798

1799

1800

1801

1802

1803

1804

1805

1806

1807

1808

1809

1810

1811

1812

1813

1814

1815

1816

1817

1818

1819

1820

1821

1822

1823

1824

1825

1826

1827

1828

1829

1830

1831

1832

1833

1834

1835

1836

1837

1838

1839

1840

1841

1842

1843

1844

1845

1846

1847

1848

1849

1850

1851

1852

1853

1854

1855

1856

1857

1858

1859

1860

1861

1862

1863

1864

1865

1866

1867

1868

1869

1870

1871

1872

1873

1874

1875

1876

1877

1878

1879

1880

1881

1882

1883

1884

1885

1886

1887

1888

1889

1890

1891

1892

1893

1894

1895

1896

1897

1898

1899

1900

1901

1902

1903

1904

1905

1906

1907

1908

1909

1910

1911

1912

1913

1914

1915

1916

1917

1918

1919

1920

1921

1922

1923

1924

1925

1926

1927

1928

1929

1930

1931

1932

1933

#include<stdio.h>

#include<string.h> 

#include<stdlib.h>

#include<conio.h>

#include<windows.h> 

#include<time.h>

#include<process.h>

#define Up 0x48

#define Down 0x50

#define LEN sizeof(struct node)

#define LEN_ sizeof(struct node_user)

#define LEN_1 sizeof(struct node_repairman)

typedef struct node

{    

    char number[100];

    char mima[100];

    char address[100];

    char profit[100];

    struct node *next;    

}NODE;

typedef struct node_user

{    

    char number_user[200];

    char mima_user[100];

    char mima_user2[100];

    char name_user[200];

    char bank_card[200];

    int age;

    int h;

    int purse;

    struct node_user *next;    

}NODE_USER;

typedef struct node_repairman

{    

    char number_repairman[100];

    char mima_repairman[100];

    char mima_repairman2[100];

    char name_repairman[100];

    int age;

    struct node_repairman *next;    

}NODE_REPAIRMAN;

int icount,j,w=1,k;

//**********************函数声明**************************

void Gotoxy(int x, int y); 

NODE *input ();    

void show ();                             //管理员创建单车信息 

NODE * add_node (NODE *phead);                  //管理员增加单车信息 

void delete_node ();                      //管理员删除单车信息 

void print ();

void print_user(NODE_USER *m);

void print_repairman_(NODE_REPAIRMAN *m);

void print_repairman_1(NODE_REPAIRMAN *m);               //输出 

void modify ();       //修改 

NODE *look_for ();

void look_for2 (NODE_USER *n);

NODE_REPAIRMAN *look_for3 ();

void look_for_bike (NODE *a);

NODE *look_for_repetition (char a[20]);                 //查找 

void savefile(NODE *phead);       //写文件(A+) 

void savefile_(NODE *phead);

void savefile_user(NODE *phead);

void savefile_user_(NODE_USER *m);

void savefile_repairman_check_1();            //写文件(W) 

NODE *readfile();

NODE_USER *readfile_user();    

NODE_REPAIRMAN *readfile_repairman();

void user (NODE_USER *l);

void repairman_ (NODE_REPAIRMAN *l);

void admin ();      //读文件 

void welcome();               //欢迎函数 

void send_back (NODE *d); 

void sort_num();

void sign_in ();                                                            

void menu_1 ();           //菜单 

void choice ();

void goodbye(); 

//********************************************************

void Gotoxy(int x, int y)  //光标移动

{

    HANDLE hout;//定义句柄变量

    COORD coord;//定义结构体

    coord.X = x;

    coord.Y = y;

    hout = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准输出句柄

    SetConsoleCursorPosition(hout, coord);//移动光标

    return;

}

NODE *input ()       //管理员创建单车信息 

{

    char s[100];

    NODE *phead,*pnew,*pend;

    phead=NULL;

    icount=0;

    pend=pnew=(NODE *)malloc(LEN);

    for(;;)

    {

        printf("\t\t\t共享单车的车牌号(数字):");

        scanf("%s",pnew->number);

        strcpy(s,pnew->number);

        if(strlen(pnew->number)>8) 

        {

            printf("请输入少于8位的车牌号!\n");

        }     

        for(j=0;(size_t)j<strlen(s);j++)

        {

            if(s[j]<'0'||s[j]>'9')

            {

                   printf("车牌号只能为数字!重新输入!\n");

                break;

            }         

        }

        if(strlen(pnew->number)<=8&&(size_t)j==strlen(s))

        {

            break;

        }

    }

    printf("\n\n\t\t\t请为该共享单车设置密码:");

    scanf("%s",pnew->mima);

    for(;;)

    {

        loop2:

        menu_1();

    //    system("color 07");

        printf("请选择该共享单车的初始投放地点:");

        scanf("%s",pnew->address);

        strcpy(s,pnew->address);

        for(j=0;(size_t)j<strlen(s);j++)

        {

            if(s[j]<'0'||s[j]>'7')

            {

                system("cls");

                printf("\a");

          //      system("color 0A");

                   printf("\n\n\n\n\n\t\t\t\t抱歉,目前只有这几个投放地点呦! ^_^ \n");

                   Sleep(500);

                   system("cls");

                   goto loop2;

            }         

        }

        if(strlen(pnew->address)<=8&&(size_t)j==strlen(s))

        {

            break;

        } 

    }

    while(strcmp(pnew->number,"0")==1)

    {

        system("cls");

        icount++;

        if(icount==1)

        {

            pnew->next=NULL;

            phead=pnew;

        } 

        else

        {

            pnew->next=NULL;

            pend->next=pnew;

            pend=pnew;

        }

        pnew=(NODE *)malloc(LEN);

        for(;;)

        {

            printf("共享单车的车牌号(数字):");

            scanf("%s",pnew->number);

            strcpy(s,pnew->number);

            if(strlen(pnew->number)>8) 

            {

                printf("请输入少于8位的车牌号!\n");

            }     

            for(j=0;(size_t)j<strlen(s);j++)

            {

                if(s[j]<'0'||s[j]>'9')

                {

                       printf("车牌号只能为数字!重新输入!\n");

                    break;

                }         

            }

            if(strlen(pnew->number)<=8&&(size_t)j==strlen(s))

            {

                break;

            }

        }

        printf("请为该共享单车设置密码:");

        scanf("%s",pnew->mima);

        for(;;)

        {

            loop3:

            menu_1();

        //    system("color 07");

            printf("请选择该共享单车的初始投放地点:");

            scanf("%s",pnew->address);

            strcpy(s,pnew->address);

            for(j=0;(size_t)j<strlen(s);j++)

            {

                if(s[j]<'0'||s[j]>'7')

                {

                    system("cls");

                    printf("\a");

            //        system("color 0A");

                       printf("\n\n\n\n\n\t\t\t\t抱歉,目前只有这几个投放地点呦! ^_^  \n");

                       Sleep(500);

                       system("cls");

                       goto loop3;

                }         

            }

            if(strlen(pnew->address)<=8&&(size_t)j==strlen(s))

            {

                break;

            } 

        }

    }

    printf("正在保存!");

    savefile(phead);

    free(pnew);

    return phead;

}

void delete_node ()     //管理员删除单车信息 

{

    NODE *l,*n,*m;

    char s[100];

    m=l=readfile();

    printf("\t\t\t\t请输入您要删除的共享单车的车牌号:\n");

    scanf("%s",s);

    while(l!=NULL)

    {

        if(strcmp(m->number,s)==0)

        {

            m=m->next;

            printf("删除成功!\n");    

            break;

        } 

        if(strcmp(l->next->number,s)==0)

        {

            n=l;

            n=n->next;

            l->next=n->next;

            printf("删除成功!\n");

            break;

        } 

        l=l->next;

        if(l->next==NULL)

        {

            printf("\t\t\t\t无删除项\n");

            break;

        } 

    } 

    free(n);

    savefile_(m);

void modify ()    //管理员修改单车信息 

{

    NODE *ma,*m;

    char z[100];

    m=ma=readfile();

    printf("\t\t\t\t请输入您要修改共享单车的车牌号:\n");

    scanf("%s",z);

    while(ma!=NULL)

    {

        if(strcmp(ma->number,z)==0)

        {

            printf("请修改该共享单车的密码:");

            scanf("%s",ma->mima);

            break;

        }

        ma=ma->next;

        if(ma->next==NULL)

        {

            printf("无修改项!\n");

            break;

        }    

    }

    savefile_(m);

}

 

NODE *look_for (NODE_USER *l)            //管理员查找单车信息  

{

    NODE *m;

    char q[100];

    m=readfile();

    if(l->purse <=100)

    {

        printf("您的金额已经不足100元!请尽快充值!\n\n");

        Sleep(500);

        return NULL;

    }

    printf("\t\t\t\t请输入你要查找的共享单车的车牌号:\n");

    scanf("%s",q);

    while(m!=NULL)

    {

        if(strcmp(m->number,q)==0)

        {

            l->h=1;

            printf("车牌号        密码      停放地点\n\n");

            printf("%s\t  \t",m->number);

            printf("%s\t  ",m->mima);

            if(strcmp(m->address,"0")==0)

                printf("长安广场");

            if(strcmp(m->address,"1")==0)

                printf("南大学城");

            if(strcmp(m->address,"2")==0)

                printf("三森");

            if(strcmp(m->address,"3")==0)

                printf("紫薇都市");

            if(strcmp(m->address,"4")==0)

                printf("韦曲西街");

            if(strcmp(m->address,"5")==0)

                printf("航天城");

            if(strcmp(m->address,"6")==0)

                printf("韦曲南站"); 

            if(strcmp(m->address,"7")==0)

                printf("秦岭沿线"); 

            break;

        }

        m=m->next;

    }

    if(m==NULL)

        printf("\n还没有投放该编号的车哦!"); 

    printf("\n");

    return m;

NODE *look_for_0 ()      //管理员查找单车信息  

{

    NODE *m,*n;

    int a,b=0;

    char q[100],p[100];

    n=m=readfile();

    int flag;

    int l = 8;

    printf("\n");

    printf("-->管理员端"); 

    while (1)

    {

        b=0;

        Gotoxy(53, 8);

        printf("1.按车牌号查找");

        Gotoxy(53, 10); 

        printf("2.按停放地点查询");

        Gotoxy(53, 12);

        printf("3.按车号和地点查询");

        Gotoxy(53, 14);

        printf("4.退出查询");

        Gotoxy(52, l);

        printf("★");

        flag = _getch();

        if (flag == Down)

        {

            l=l+2;

            if (l == 16)

                l = 8;

        }

        if (flag == Up)

        {

            l=l-2;

            if (l == 6)

                l = 14;

        }

        if (flag == 13)

        {

            if (l == 8)   

            {

                system("cls");

                printf("\n->请输入您要查找的车的车牌号:");

                scanf("%s",q);

                while(n!=NULL)

                {

                    if(strcmp(n->number,q)==0)

                    {

                        b++;

                    }    

                    n=n->next;

                }

                if(b!=0)

                    printf("车牌号        密码      停放地点\n\n");

                while(m!=NULL)

                {

                    if(strcmp(m->number,q)==0)

                    {

                        printf("%s\t  \t",m->number);

                        printf("%s\t  ",m->mima);

                        if(strcmp(m->address,"0")==0)

                            printf("长安广场");

                        if(strcmp(m->address,"1")==0)

                            printf("南大学城");

                        if(strcmp(m->address,"2")==0)

                            printf("三森");

                        if(strcmp(m->address,"3")==0)

                            printf("紫薇都市");

                        if(strcmp(m->address,"4")==0)

                            printf("韦曲西街");

                        if(strcmp(m->address,"5")==0)

                            printf("航天城");

                        if(strcmp(m->address,"6")==0)

                            printf("韦曲南站"); 

                        if(strcmp(m->address,"7")==0)

                            printf("秦岭沿线"); 

                        break;

                    }

                    m=m->next;

                }

                if(m==NULL)

                    printf("\n还没有投放该编号的车哦!"); 

                printf("\n");

                _getch();

            }

            if (l == 10)

            {

                system("cls");

                menu_1();

                printf("\n->请输入您要查找在该停放位置的车:");

                scanf("%s",q);

                while(n!=NULL)

                {

                    if(strcmp(n->address,q)==0)

                    {

                        b++;

                    }    

                    n=n->next;

                }

                if(b!=0)

                    printf("车牌号        密码      停放地点\n\n");

                while(m!=NULL)

                {

                    if(strcmp(m->address,q)==0)

                    {

                        printf("%s\t  \t",m->number);

                        printf("%s\t  ",m->mima);

                        if(strcmp(m->address,"0")==0)

                            printf("长安广场");

                        if(strcmp(m->address,"1")==0)

                            printf("南大学城");

                        if(strcmp(m->address,"2")==0)

                            printf("三森");

                        if(strcmp(m->address,"3")==0)

                            printf("紫薇都市");

                        if(strcmp(m->address,"4")==0)

                            printf("韦曲西街");

                        if(strcmp(m->address,"5")==0)

                            printf("航天城");

                        if(strcmp(m->address,"6")==0)

                            printf("韦曲南站"); 

                        if(strcmp(m->address,"7")==0)

                            printf("秦岭沿线"); 

                        a=1;

                        printf("\n");

                    }

                    m=m->next;

                }

                if(a!=1)

                {

                    printf("\n\n\n->该停放点的车都被骑走了哟!");

                }

                _getch();

            }

            if (l == 12)

            {

                system("cls");

                printf("\n->请输入您要查找的车的车牌号:");

                scanf("%s",q);

                menu_1();

                printf("\n->请输入您要查找在该停放位置的车:");

                scanf("%s",p);

                while(m!=NULL)

                {

                    if(strcmp(m->number,q)==0 && strcmp(m->address,p)==0)

                    {

                        printf("车牌号        密码      停放地点\n\n");

                        printf("%s\t  \t",m->number);

                        printf("%s\t  ",m->mima);

                        if(strcmp(m->address,"0")==0)

                            printf("长安广场");

                        if(strcmp(m->address,"1")==0)

                            printf("南大学城");

                        if(strcmp(m->address,"2")==0)

                            printf("三森");

                        if(strcmp(m->address,"3")==0)

                            printf("紫薇都市");

                        if(strcmp(m->address,"4")==0)

                            printf("韦曲西街");

                        if(strcmp(m->address,"5")==0)

                            printf("航天城");

                        if(strcmp(m->address,"6")==0)

                            printf("韦曲南站"); 

                        if(strcmp(m->address,"7")==0)

                            printf("秦岭沿线"); 

                    }

                    m=m->next;

                }

                if(m==NULL)

                    printf("\n没有符合条件的车哦!"); 

                printf("\n");

                _getch();

            }

            if(l == 14)

            {

                return NULL;

            } 

            return m;

        }

    }        

NODE *look_for_bike (char a[100])           //报修时查找单车信息  

{

    NODE *m;

    m=readfile();

    while(m!=NULL)

    {

        if(strcmp(m->number,a)==0)

        {

            break;

        }

        m=m->next;

    }

    if(m==NULL)

        printf("\n亲!报修信息有误!还没有投放该编号的车哦!"); 

    printf("\n");

    return m;

void send_back (NODE *d)      //用户归还共享单车 

{

    NODE *m,*l;

    char s[100];

    l=m=readfile();

    while(m!=NULL)

    {

        if(strcmp(m->number,d->number)==0)

        {

            menu_1 ();

            printf("\t\t\t请选择您归还的地点:"); 

            scanf("%s",m->address); 

            strcpy(s,m->address);

            for(j=0;(size_t)j<strlen(s);j++)

            {

                if(s[j]<'0'||s[j]>'7')

                {

                    system("cls");

                    printf("\a");

                       printf("\n\n\n\n\n\t\t\t\t抱歉,目前只有这几个投放地点呦! ^_^ \n");

                       Sleep(500);

                       system("cls");

                }         

            }

            if(strlen(m->address)<=8&&(size_t)j==strlen(s))

            {

                break;

            } 

        }

        m=m->next;

    }

    if(m==NULL)

        printf("\n还没有投放该编号的车哦!"); 

    printf("\n");

    savefile_(l);        

NODE_USER *look_for2 ()       //登录 

    loop_:

    NODE_USER *m,*n;

    int i=0;

    char c,a[100],b[100];

    char x[100],password[100],p[100];

    int l = 8;

    system("cls");

    n=m=readfile_user();

    printf("-->请输入正确的账号和密码\n"); 

    printf("\n\n\n\n");

    printf("\t\t\t\t\t╔════════════════╗\t\t\t\n");

    printf("\t\t\t\t\t║☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆║\t\t\t\n");

    printf("\t\t\t\t\t║┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄║\t\t\t\n");

    printf("\t\t\t\t\t║                                ║\t\t\t\n");

    printf("\t\t\t\t\t║                                ║\t\t\t\n");

    printf("\t\t\t\t\t║                                ║\t\t\t\n");

    printf("\t\t\t\t\t╚════════════════╝\t\t\t\n");

    while (1)

    {

        Gotoxy(44, 8);

        printf("★我的账号:");

        Gotoxy(44, 10); 

        printf("★我的密码:");

        Gotoxy(44, l);

        if(l == 8)

        {

            printf("☆");

            Gotoxy(56,8);

            scanf("%s",x);

            Gotoxy(44,10);

            printf("☆");

            Gotoxy(56,10);

            while((c=getch())!=13)

            {

                if(c==8)

                {

                    printf("\b \b");

                    i--;

                    continue;

                }

                password[i++]=c;

                putchar('*');

            }

            password[i]='\0';

            printf("\n");

        }

        break;

    }

    while(m!=NULL)

    {

        if(strcmp(m->number_user,x)==0&&strcmp(m->mima_user,password)==0)

        {

            system("cls");

            printf("登陆成功!"); 

            break;

        }

        m=m->next;

    }

    if(m==NULL)

    {

        mm:

        printf("\n\n\n\t\t\t\t\t 账号或密码错误!请重新输入!\n");

        Sleep(500);

        printf("是否忘记密码,需要找回?"); 

        scanf("%s",p);

        for(;;)

        {

            if(strcmp(p,"y")==0||strcmp(p,"Y")==0)

            {

                printf("\n->请输入账号:");

                scanf("%s",a);

                printf("\n->请输入充值卡号:");

                scanf("%s",b);

                while(n!=NULL)

                {

                    if(strcmp(n->number_user,a)==0 && strcmp(n->bank_card,b)==0)

                    {

                        system("cls");

                        printf("\n\n->成功找回!下次可别忘了哟!"); 

                        printf("\n\n我的用户名:%s",n->name_user);

                        printf("\n\n我的账号:%s\t",n->number_user);

                        printf("\n\n我的密码:%s\t",n->mima_user);

                        printf("\n\n我的钱包:¥ %d",n->purse);

                        getch();

                        break;

                    }

                    n=n->next;

                }

                break;

            }

            else if(strcmp(p,"n")==0||strcmp(p,"N")==0)

            {

                printf("->已取消操作!\n");

                Sleep(500);

                system("cls");

                break;

            }

            else if(strcmp(p,"y")!=0 && strcmp(p,"Y")!=0 && strcmp(p,"n")!=0 && strcmp(p,"N")!=0)

            {

                printf("亲!只能输入y/n哦!手误的话重新输入吧!^_^\n");

                Sleep(500);

                system("cls");

                goto mm;

            }

        }

        goto loop_; 

    }    

    printf("\n");

    return m;

}

NODE_REPAIRMAN *look_for3 ()      //登录 

    loop_:

    int i=0;

    char c;

    char x[100],password[100];

    int l = 8;

    NODE_REPAIRMAN *m;

    system("cls");

    m=readfile_repairman();

    printf("-->请输入正确的账号和密码\n"); 

    printf("\n\n\n\n");

    printf("\t\t\t\t\t╔════════════════╗\t\t\t\n");

    printf("\t\t\t\t\t║☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆║\t\t\t\n");

    printf("\t\t\t\t\t║┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄║\t\t\t\n");

    printf("\t\t\t\t\t║                                ║\t\t\t\n");

    printf("\t\t\t\t\t║                                ║\t\t\t\n");

    printf("\t\t\t\t\t║                                ║\t\t\t\n");

    printf("\t\t\t\t\t╚════════════════╝\t\t\t\n");

    while (1)

    {

        Gotoxy(44, 8);

        printf("★我的账号:");

        Gotoxy(44, 10); 

        printf("★我的密码:");

        Gotoxy(44, l);

        if(l == 8)

        {

            printf("☆");

            Gotoxy(56,8);

            scanf("%s",x);

            Gotoxy(44,10);

            printf("☆");

            Gotoxy(56,10);

            while((c=getch())!=13)

            {

                if(c==8)

                {

                    printf("\b \b");

                    i--;

                    continue;

                }

                password[i++]=c;

                putchar('*');

            }

            password[i]='\0';

            printf("\n");

        }

        break;

    }

    while(m!=NULL)

    {

        if(strcmp(m->number_repairman,x)==0&&strcmp(m->mima_repairman,password)==0)

        {

            system("cls");

            printf("登陆成功!"); 

            break;

        }

        m=m->next;

    }

    if(m==NULL)

    {

        printf("\n\n\t\t\t\t\t 账号或密码错误!请重新输入!\n");

        goto loop_; 

    }    

    printf("\n");

    return m;

}

void look_for_user (NODE_USER *m)            //查找 

    NODE_USER *n;

    n=readfile_user();

    while(n!=NULL)

    {

        if(strcmp(n->number_user,m->number_user)==0)

        {

            system("cls");

            printf("****我的信息->\n"); 

            printf("用户名:%s\n",n->name_user);

            printf("账号:%s\n",n->number_user);

            printf("密码:%s\n",n->mima_user);

            break;

        }

        n=n->next;

    }    

    printf("\n");

}

void look_for_repairman (NODE_REPAIRMAN *m)                //查找 

    NODE_REPAIRMAN *n;

    n=readfile_repairman();

    while(n!=NULL)

    {

        if(strcmp(n->number_repairman,m->number_repairman)==0)

        {

            system("cls");

            printf("****我的信息->\n"); 

            printf("用户名:%s\n",n->name_repairman);

            printf("账号:%s\n",n->number_repairman);

            printf("密码:%s\n",n->mima_repairman);

            break;

        }

        n=n->next;

    }    

    printf("\n");

}

void savefile(NODE *phead)          //写文件 

{

    FILE *fp;

    NODE *p;

    if((fp = fopen("bike.txt", "a+"))==NULL)

        printf("\a error! Can not open the file!");

//    fputs("车牌号 密码 停车点\n",fp); 

    for(p=phead;p!=NULL;p=p->next)

    {

        fprintf(fp,"%s %s %s \n",p->number,p->mima,p->address);

    }

    printf("\n\n->按任意键返回!\n");

    fclose(fp);

}

void savefile_(NODE *phead)    //写文件 

{

    FILE *fp;

    NODE *p;

    if((fp = fopen("bike.txt", "w"))==NULL)

        printf("\a error! Can not open the file!");

    for(p=phead;p!=NULL;p=p->next)

    {

        fprintf(fp,"%s %s %s \n",p->number,p->mima,p->address);

    }

    fclose(fp);

}

void savefile_user_bike(NODE *m)      //写文件 

{

    FILE *fp;

    if((fp = fopen("repairman_.txt", "a+"))==NULL)

        printf("\a error! Can not open the file!");

    fprintf(fp,"%s %s %s \n",m->number,m->mima,m->address);

    printf("\n\n->按任意键返回!\n");

    fclose(fp);

}

void savefile_user(NODE_USER *m)      //写文件 

{

    FILE *fp;

    if((fp = fopen("user.txt", "a+"))==NULL)

        printf("\a error! Can not open the file!");

        fprintf(fp,"%s %s %s %s %d \n",m->name_user,m->number_user,m->mima_user,m->bank_card,m->purse);

    printf("\n\n->按任意键返回!\n");

    fclose(fp);

}

void savefile_user_(NODE_USER *n)     //写文件 

{

    NODE_USER *m;

    FILE *fp;

    if((fp = fopen("user.txt", "w"))==NULL)

        printf("\a error! Can not open the file!");

    for(m=n;m!=NULL;m=m->next)

    {

        fprintf(fp,"%s %s %s %s %d \n",m->name_user,m->number_user,m->mima_user,m->bank_card,m->purse);

    }

    printf("\n\n->按任意键返回!\n");

    fclose(fp);

}

void savefile_repairman(NODE_REPAIRMAN *m)            //写文件 

{

    FILE *fp;

    if((fp = fopen("repairman.txt", "a+"))==NULL)

        printf("\a error! Can not open the file!");

        fprintf(fp,"%s %s %s \n",m->name_repairman,m->number_repairman,m->mima_repairman);

    printf("\n\n->按任意键返回!\n");

    fclose(fp);

}

void savefile_repairman_check(NODE_REPAIRMAN *m)                                                         //写文件 

{

    FILE *fp;

    if((fp = fopen("repairman_check.txt", "a+"))==NULL)

        printf("\a error! Can not open the file!");

    fprintf(fp," %s %s %s \n",m->name_repairman,m->number_repairman,m->mima_repairman);

/*    fprintf(fp,"%s\n",m->name_repairman);

    fprintf(fp,"%s\n",m->number_repairman);

    fprintf(fp,"%s\n",m->mima_repairman);*/

    printf("\n\n->按任意键返回!\n");

    fclose(fp);

}

void savefile_repairman_check_1()  //写文件 

{

    FILE *fp;

    fp = fopen("repairman_check.txt", "w");

    fclose(fp);

}

NODE *readfile()            //读文件 

    NODE *head,*u;

    FILE *fp;

    head=(NODE *)malloc(LEN);

    head->next=NULL;

    fp=fopen("bike.txt","a+");

    fclose(fp);

    if((fp=fopen("bike.txt","r"))==NULL)  

    {  

        printf("\n--->没有找到文件!\n");  

        Sleep(1000);

        exit(0);

    } 

  /*  else

    {

        rewind(fp); 

        fgets(a,66,fp);

    } 

    */

    while(!feof(fp))

    {

        u=(NODE *)malloc(LEN);

        u->next=NULL;

        fscanf(fp,"%s %s %s \n",u->number,u->mima,u->address);

        u->next=head->next;

        head->next=u;

    }

    fclose(fp);

    return (head->next);

NODE_USER *readfile_user()        //读文件 

    NODE_USER *head,*m;

    FILE *fp;

    head=(NODE_USER *)malloc(LEN_);

    head->next=NULL;

    fp=fopen("user.txt","a+");

    fclose(fp);

    if((fp=fopen("user.txt","r"))==NULL)  

    {  

        printf("\n--->没有找到文件!\n");  

        Sleep(1000);

        exit(0);

    }

    while(!feof(fp))

    {

        m=(NODE_USER *)malloc(LEN_);

        m->next=NULL;

        fscanf(fp,"%s %s %s %s %d \n",m->name_user,m->number_user,m->mima_user,m->bank_card,&m->purse);

        m->next=head->next;

        head->next=m;

    }

    fclose(fp);

    return (head->next);

NODE *readfile_user_bike()

{

    char ch;

    NODE *head,*m;

    FILE *fp;

    head=(NODE *)malloc(LEN);

    head->next=NULL;

    fp=fopen("repairman_.txt","a+");

    fclose(fp);

    if((fp=fopen("repairman_.txt","r"))==NULL)  

    {  

        printf("\n--->没有找到文件!\n");  

        Sleep(1000);

        exit(0);

    }

    ch=fgetc(fp);

    if(ch==EOF)

    {

        printf("还没有人报修呢!可以休息等等哦!\n\n");

        k=1;

        return NULL;

    }

    while(!feof(fp))

    {

        m=(NODE *)malloc(LEN);

        m->next=NULL;

        fscanf(fp,"%s %s %s \n",m->number,m->mima,m->address);

        m->next=head->next;

        head->next=m;

    }

    fclose(fp);

    return (head->next);

}

NODE_REPAIRMAN *readfile_repairman()   //读文件 

    NODE_REPAIRMAN *head,*m;

    FILE *fp;

    head=(NODE_REPAIRMAN *)malloc(LEN_);

    head->next=NULL;

    fp=fopen("repairman.txt","a+");

    fclose(fp);

    if((fp=fopen("repairman.txt","r"))==NULL)  

    {  

        printf("\n--->没有找到文件!\n");  

        Sleep(1000);

        exit(0);

    }

    while(!feof(fp))

    {

        m=(NODE_REPAIRMAN *)malloc(LEN_);

        m->next=NULL;

        fscanf(fp,"%s %s %s \n",m->name_repairman,m->number_repairman,m->mima_repairman);

        m->next=head->next;

        head->next=m;

    }

    fclose(fp);

    return (head->next);

}

NODE_REPAIRMAN *readfile_repairman_check()      //读文件 

    char ch;

    NODE_REPAIRMAN *head,*m;

    FILE *fp;

    head=(NODE_REPAIRMAN *)malloc(LEN_);

    head->next=NULL;

    fp=fopen("repairman_check.txt","a+");

    fclose(fp);

    if((fp=fopen("repairman_check.txt","r"))==NULL)  

    {  

        printf("\n--->没有找到文件!\n");  

        Sleep(1000);

        exit(0);

    }

    ch=fgetc(fp);

    if(ch==EOF)

    {

        w=0;

    }

    while(!feof(fp))

    {

        m=(NODE_REPAIRMAN *)malloc(LEN_);

        m->next=NULL;

        fscanf(fp," %s %s %s \n",m->name_repairman,m->number_repairman,m->mima_repairman);

        m->next=head->next;

        head->next=m;

    }

    fclose(fp);

    return (head->next);

void submit()

{

    int i; 

    system("cls");   

    printf("\n\n\n\n\t\t\t\t");

       printf("★正在提交您的信息!★");

       printf("\n\t\t\t     ");

      for(i=0;i<7;i++)

       {

        printf("->  ");

        Sleep(300);

    }

    system("cls");

}

void goodbye()

{

    int i; 

    system("cls");   

    printf("\n\n\n\n\t\t\t\t");

       printf("★正在退出!★");

       printf("\n\t\t\t     ");

      for(i=0;i<5;i++)

       {

        printf("->  ");

        Sleep(300);

    }

    system("cls");

}

void show ()

{

    printf("-->使用指南!\n\n");

    printf("    欢迎使用共享单车系统!该管理系统面向大众,可使用手机号自\n\n");

    Sleep(500);

    printf("行注册用户端以及维修员,用户完成注册后即可使用,维修员需要等\n\n");

    Sleep(500);

    printf("待管理员审核通过即可工作,每个手机号只能注册一次。\n\n\n");

    Sleep(500);

    printf("    用户租车收费:每半个小时1元,不满半小时按照一小时计算。\n\n\n\n\n\n\n");

    Sleep(500);

    printf("感谢您的阅读。按任意键进入系统 ^_^ ");

    getch();

}

void check ()

{

    NODE_REPAIRMAN *d;

    int flag;

    int l = 8;

    printf("\n");

    printf("-->管理员端"); 

    while (1)

    {

        Gotoxy(53, 8);

        printf("1.待认证的维修员 ");

        Gotoxy(53, 10); 

        printf("2.已注册的维修员");

        Gotoxy(53, 12);

        printf("3.返回上一层");

        Gotoxy(52, l);

        printf("★");

        flag = _getch();

        if (flag == Down)

        {

            l=l+2;

            if (l == 14)

                l = 8;

        }

        if (flag == Up)

        {

            l=l-2;

            if (l == 6)

                l = 12;

        }

        if (flag == 13)

        {

            if (l == 8)   

            {

                system("cls");

                d=readfile_repairman_check();

                print_repairman_(d);

                _getch();

            }

            if (l == 10)

            {

                system("cls");

                d=readfile_repairman();

                print_repairman_1(d);

                printf("\n\n->按任意键继续!");

                getch();

                system("cls");

                _getch();

            }

            if (l == 12)

            {

                system("cls");

                return;

            }

        }

    }

}

void menu_1 ()

{

    printf("\t\t ----------------------------------------------------------- \t\t\t\n");

    printf("\t\t|                  共享单车 长安区停放地点                  |\t\t\t\n");

    printf("\t\t|-----------------------------------------------------------|\t\t\t\n");

    printf("\t\t|  【0】:长安广场      【1】:南大学城      【2】:三森    |\t\t\t\n");

    printf("\t\t|                                                           |\t\t\t\n");

    printf("\t\t|  【3】:紫薇都市      【4】:韦曲西街      【5】:航天城  |\t\t\t\n");

    printf("\t\t|                                                           |\t\t\t\n");

    printf("\t\t|  【6】:韦曲南站      【7】:秦岭沿线                     |\t\t\t\n");

    printf("\t\t ----------------------------------------------------------- \t\t\t\n");

void sign_in ()

{

    NODE_USER *n;

    NODE_REPAIRMAN *l;

    int flag;

    int z = 8;

    system("cls");

    while (1)

    {

        Gotoxy(53, 8);

        printf("1.管理员登陆");

        Gotoxy(53, 10); 

        printf("2.用户登陆");

        Gotoxy(53, 12);

        printf("3.维修员登陆");

        Gotoxy(53, 14);

        printf("0.退出登录");

        Gotoxy(52, z);

        printf("★");

        flag = _getch();

        if (flag == Down)

        {

            z=z+2;

            if (z == 16)

                z = 8;

        }

        if (flag == Up)

        {

            z=z-2;

            if (z == 6)

                z = 14;

        }

        if (flag == 13)

        {

            if (z == 8)

            {

                system("cls");

                admin();

                _getch();

            }

            if (z == 10)

            {

                    n=look_for2();

                    user (n);

                    system("cls");

                    _getch();

            }

            if (z == 12)   //权限在老师端之上才能注册

            {

                    l=look_for3();

                    repairman_(l);

                    _getch();

            }

            if (z == 14)

            {

                system("cls");

                return;

            }

        }

    }

}

void print ()           //输出单车信息 

{

    NODE *m;

    m=readfile();

    printf("车牌号           密码       停放地点\n\n");

    while(m!=NULL)

    {

        printf("%s\t\t",m->number);

        printf("%s\t  ",m->mima);

        if(strcmp(m->address,"0")==0)

            printf("长安广场");

        if(strcmp(m->address,"1")==0)

            printf("南大学城");

        if(strcmp(m->address,"2")==0)

            printf("三森");

        if(strcmp(m->address,"3")==0)

            printf("紫薇都市");

        if(strcmp(m->address,"4")==0)

            printf("韦曲西街");

        if(strcmp(m->address,"5")==0)

            printf("航天城");

        if(strcmp(m->address,"6")==0)

            printf("韦曲南站"); 

        if(strcmp(m->address,"7")==0)

            printf("秦岭沿线"); 

        m=m->next;

        printf("\n\n");

    }    

void print_user(NODE_USER *m)

{

    int i=0;

    while(m!=NULL)

    {

        i++;

        printf("第%d个用户:\t",i);

        printf("用户名:%-16s",m->name_user);

        printf("账号:%-16s\t",m->number_user);

        printf("密码:%-16s\t",m->mima_user);

        printf("账户余额:¥ %d",m->purse);

        m=m->next;

        printf("\n\n");

    }

    printf("->按任意键继续!");

    getch();

}

void print_repairman_(NODE_REPAIRMAN *m)

{

    int i=0;

    char n[10];

    if(w==0)

    {

        printf("\n-->还没有人申请哦!\n");

        printf("\n->请按任意键继续。"); 

        return;

    }

    printf("-->正等待认证通过\n\n\n"); 

    while(m!=NULL)

    {

        i++;

        printf("第%d个申报维修人员:\t",i);

        printf("用户名:%s\t\t",m->name_repairman);

        printf("账号:%s\t\t",m->number_repairman);

        printf("密码:%s\t\t",m->mima_repairman);

        printf("\n\n是否通过?(y/n):"); 

        scanf("%s",n);

        if(strcmp(n,"y")==0 || strcmp(n,"Y")==0)

        {

            printf("\n\n->已通过认证!\n");

            savefile_repairman(m); 

        }

        if(strcmp(n,"n")==0 || strcmp(n,"N")==0)

        {

            printf("\n\n->已驳回申诉!\n");

        }

        m=m->next;

        printf("\n\n");

    }

    savefile_repairman_check_1();

}

void print_repairman_1(NODE_REPAIRMAN *m)

{

    int i=0;

    while(m!=NULL)

    {

        i++;

        printf("第%d个维修人员:",i);

        printf("用户名:%-15s",m->name_repairman);

        printf("账号:%-18s",m->number_repairman);

        printf("密码:%s",m->mima_repairman);

        m=m->next;

        printf("\n\n");

    }

}

void print_repairman ()     //输出报修单车信息 

{

    NODE *m;

    m=readfile_user_bike();

    if(k==0)

        printf("车牌号           密码       停放地点\n\n");

    while(m!=NULL)

    {

        printf("%s\t\t",m->number);

        printf("%s\t  ",m->mima);

        if(strcmp(m->address,"0")==0)

            printf("长安广场");

        if(strcmp(m->address,"1")==0)

            printf("南大学城");

        if(strcmp(m->address,"2")==0)

            printf("三森");

        if(strcmp(m->address,"3")==0)

            printf("紫薇都市");

        if(strcmp(m->address,"4")==0)

            printf("韦曲西街");

        if(strcmp(m->address,"5")==0)

            printf("航天城");

        if(strcmp(m->address,"6")==0)

            printf("韦曲南站"); 

        if(strcmp(m->address,"7")==0)

            printf("秦岭沿线"); 

        m=m->next;

        printf("\n\n");

    }    

}

void welcome()         //输入密钥进入管理员 

    int i=0;

    char c;

    char password[100];

    char num[100];

    strcpy(num,"152323");

    loopback3:

    system("cls");

    printf(" \n\n\n\n\n\n\n\n");

    printf("\t\t\t\t欢迎使用共享单车管理系统!\n\n\n");

    printf("\t\t\t\t请输入管理员密码:");

    while((c=getch())!=13)

    {

        if(c==8)

        {

            printf("\b \b");

            i--;

            continue;

        }

        password[i++]=c;

        putchar('*');

    }

    password[i]='\0';

    if(strcmp(password,num)==0)

    {  

        system("cls");

    }

    else

    {

        printf("\t\t\t\t 密码错误!");         //密码错误重新输出 

        Sleep(100);

        system("cls");

        goto loopback3;

    } 

}

void user (NODE_USER *l)

{

    time_t first,second;

    double s;

    int p=1,q=0,t=0;

    char n[100],yn[100],h[100]; 

    NODE *m,*g,*v,*y;

    NODE_USER *o,*k,*f;

    int flag;

    int z = 4,d;

    f=k=o=readfile_user();

    while(k!=NULL)

    {

        if(strcmp(l->number_user,k->number_user)==0)

            break;

        k=k->next;

    }

    printf("\n");

    printf("-->用户端"); 

    while (1)

    {

        q=0;

        Gotoxy(53, 4); 

        printf("1.附近的车");

        Gotoxy(53, 6);

        printf("2.立即用车");

        Gotoxy(53, 8); 

        printf("3.立即还车");

        Gotoxy(53, 10);

        printf("4.我要报修");

        Gotoxy(53, 12);

        printf("5.我的信息");

        Gotoxy(53, 14);

        printf("6.我去充值");

        Gotoxy(53, 16); 

        printf("0.退出登录");

        Gotoxy(52, z);

        printf("★");

        flag = _getch();

        if (flag == Down)

        {

            z=z+2;

            if (z == 18)

                z = 4;

        }

        if (flag == Up)

        {

            z=z-2;

            if (z == 2)

                z = 16;

        }

        if (flag == 13)

        {

            if(z == 4)

            {

                system("cls");

                menu_1();

                printf("请选择您所在的地点代号:"); 

                scanf("%s",h);

                y=v=readfile();

                while(y!=NULL)

                {

                    if(strcmp(y->address,h)==0)

                    {

                        t++;

                    }

                    y=y->next;

                }

                if(t!=0)

                    printf("车牌号        密码      停放地点\n\n");

                while(v!=NULL)

                {

                    if(strcmp(v->address,h)==0)

                    {

                        q=1;

                        printf("%s\t  \t",v->number);

                        printf("%s\t  ",v->mima);

                        if(strcmp(v->address,"0")==0)

                            printf("长安广场");

                        if(strcmp(v->address,"1")==0)

                            printf("南大学城");

                        if(strcmp(v->address,"2")==0)

                            printf("三森");

                        if(strcmp(v->address,"3")==0)

                            printf("紫薇都市");

                        if(strcmp(v->address,"4")==0)

                            printf("韦曲西街");

                        if(strcmp(v->address,"5")==0)

                            printf("航天城");

                        if(strcmp(v->address,"6")==0)

                            printf("韦曲南站"); 

                        if(strcmp(v->address,"7")==0)

                            printf("秦岭沿线");

                        printf("\n"); 

                    }

                    v=v->next;

                }

                if(q==0)

                {

                    printf("\n\n->这里的小车都被骑走啦!"); 

                    Sleep(500);

                }

                printf("\n");

                getch();

                system("cls");

            } 

            if (z == 6)   

            {

                system("cls");

                if(k->h==1)

                {

                    printf("->您已经在使用共享单车了!一个账号只能同时租一个哦!\n");

                    printf("->按任意键继续。。。\n");

                    getch();

                }

                else

                {

                    system("cls");

                    g=look_for (k);

                    first=time(NULL);

                    printf("->按任意键继续。。。\n");

                    getch();

                }

                _getch();

            }

            if (z == 8)

            {

                system("cls");

                if(k->h==1)

                {

                    send_back(g);

                    second=time(NULL);

                    s=difftime(second,first);

                    k->h=0;

                } 

                else

                {

                    printf("还没有借车呐!快去骑共享单车哦!\n\n");

                    goto mn;

                      

                }

                while(1)

                {

                    if(s > 1800.0)

                    {

                        s=s-1800.0;

                        p++;

                    }

                    else

                        break;

                }

                system("cls");

                if(p==1)

                {

                    k->purse=k->purse-1;

                    printf("您总共骑行%0.1f秒,您需要支付 $1 yuan\n",s);

                    printf("\n\n账户余额%d元",k->purse);

                    savefile_user_(o);    

                }    

                else

                    printf("您总共骑行%0.1f秒,您需要支付 $%d yuan\n",s,p);

                mn:

                _getch();

            }

            if (z == 10)

            {

                system("cls");

                loop__1:

                while(1)

                {

                    printf("请输入您要报修的共享单车的车牌号:");

                    scanf("%s",n);

                    m=look_for_bike (n);

                    if(m!=0)

                    {

                        break;

                    }

                }

                printf("您确定要报修吗?(y/n)");

                scanf("%s",yn);

                for(;;)

                {

                    if(strcmp(yn,"y")==0||strcmp(yn,"Y")==0)

                    {

                        printf("感谢您的反馈!如果我们确认申报无误的话,会给您加分哦!\n");

                        savefile_user_bike(m);

                        break;

                    }

                    else if(strcmp(yn,"n")==0||strcmp(yn,"N")==0)

                    {

                        printf("->已取消操作!\n");

                        Sleep(500);

                        system("cls");

                        break;

                    }

                    else if(strcmp(yn,"y")!=0 && strcmp(yn,"Y")!=0 && strcmp(yn,"n")!=0 && strcmp(yn,"N")!=0)

                    {

                        printf("亲!只能输入y/n哦!手误的话重新输入吧!^_^\n");

                        Sleep(500);

                        system("cls");

                        goto loop__1;

                    }

                }

                _getch();

            }

            if (z == 12)

            {

                system("cls");

                look_for_user (l);

                printf("浏览完毕后,按任意键继续!\n");

                _getch();

            }

            if (z == 14)

            {

                system("cls");

                printf("您已绑定充值卡!请输入充值金额:");

                scanf("%d",&d);

                while(f!=NULL)

                {

                    if(strcmp(l->number_user,f->number_user)==0)

                        break;

                    f=f->next;

                } 

                printf("\n当前余额%d元,充值后为%d元",f->purse,f->purse+d);

                f->purse=f->purse+d;

                savefile_user_(o);

                printf("\n\n->充值成功!"); 

                Sleep(1000);

                system("cls");

            }

            if (z == 16)

            {

                return;

            }

        }

    }

}

void repairman_ (NODE_REPAIRMAN *l)

{

    int flag;

    int z = 8;

    system("cls");

    printf("\n->维修员端");

    while (1)

    {

        Gotoxy(53, 8);

        printf("1.我的信息");

        Gotoxy(53, 10); 

        printf("2.用户报修车辆");

        Gotoxy(53, 12);

        printf("0.返回上一层");

        Gotoxy(52, z);

        printf("★");

        flag = _getch();

        if (flag == Down)

        {

            z=z+2;

            if (z == 14)

                z = 8;

        }

        if (flag == Up)

        {

            z=z-2;

            if (z == 6)

                z = 12;

        }

        if (flag == 13)

        {

            if (z == 8)

            {

                system("cls");

                look_for_repairman (l);

                _getch();

            }

            if (z == 10)

            {

                    system("cls");

                    print_repairman ();

                    _getch();

            }

            if (z == 12)   //权限在老师端之上才能注册

            {

                system("cls");

                return; 

            }

        }

    }    

}

void admin ()

{

    NODE_USER *m;

    welcome(); 

    NODE *phead;

    int flag;

    int l = 4;

    printf("\n");

    printf("-->管理员端"); 

    while (1)

    {

        Gotoxy(53, 4);

        printf("1.添加单车");

        Gotoxy(53, 6); 

        printf("2.删除单车");

        Gotoxy(53, 8);

        printf("3.修改单车密码");

        Gotoxy(53, 10); 

        printf("4.查找单车");

        Gotoxy(53, 12);

        printf("5.所有单车及其盈利");

        Gotoxy(53, 14);

        printf("6.用户信息");

        Gotoxy(53, 16);

        printf("7.维修员信息");

        Gotoxy(53, 18); 

        printf("0.退出登录");

        Gotoxy(52, l);

        printf("★");

        flag = _getch();

        if (flag == Down)

        {

            l=l+2;

            if (l == 20)

                l = 4;

        }

        if (flag == Up)

        {

            l=l-2;

            if (l == 2)

                l = 18;

        }

        if (flag == 13)

        {

            if (l == 4)

            {

                system("cls");

                phead=input ();

                printf("\a 保存成功!");

                Sleep(500);

                system("cls");

                _getch();

            }

            if (l == 6)

            {

                system("cls");

                delete_node ();

                system("cls");

                _getch();

            }

            if (l == 8)   

            {

                system("cls");

                modify ();

                system("cls");

                _getch();

            }

            if (l == 10)

            {

                system("cls");

                look_for_0();

                system("cls");

                _getch();

            }

            if (l == 12)

            {

                system("cls");

                printf("--->读取成功!\n\n");

                print() ;

                getch();

            //    system("cls");

                _getch();

            }

            if (l == 14)

            {

                system("cls");

                m=readfile_user();

                print_user(m);

                system("cls");

                _getch();

            }

            if (l == 16)

            {

                system("cls");

                check();

                system("cls");

                _getch();

            }

            if (l == 18)

            {

                system("cls");

                return;

            }

        }

    }    

}

void choice()

{

    char c[5];

    int flag;

    int z = 8;

    while (1)

    {

        Gotoxy(53, 8);

        printf("1.登录");

        Gotoxy(53, 10); 

        printf("2.注册");

        Gotoxy(53, 12);

        printf("3.退出");

        Gotoxy(52, z);

        printf("★");

        flag = _getch();

        if (flag == Down)

        {

            z=z+2;

            if (z == 14)

                z = 8;

        }

        if (flag == Up)

        {

            z=z-2;

            if (z == 6)

                z = 12;

        }

        if (flag == 13)

        {

            if (z == 8)

            {

                sign_in ();

            }

            if (z == 10)

            {

                    NODE_USER *m,*n;

                    m=(NODE_USER *)malloc(LEN_);

                    m->next=NULL;

                    NODE_REPAIRMAN *k,*l;

                    k=(NODE_REPAIRMAN *)malloc(LEN_1);

                    k->next=NULL;

                    system("cls");

                    printf("注册用户请按1\t注册维修员请按2(需要等待审核)\n\n");

                    printf("请选择:");

                    scanf("%s",c);

                    if(strcmp(c,"1")==0)

                    {

                        printf("★亲!请按照指示操作完成用户注册哦!\n");

                        for(;;)

                        {

                            printf("\n\n请输入绑定的手机号(账号):");

                            scanf("%s",m->number_user);          //报修时查找单车信息  

                            n=readfile_user();

                            while(n!=NULL)

                            {

                                if(strcmp(n->number_user,m->number_user)==0)

                                {

                                    printf("亲!这个手机号已经被注册过了呦!");

                                    break;

                                }

                                n=n->next;

                            }

                            if(n==NULL)

                            {

                                printf("\t\t\t\t\t-------这个账号还没有人注册过呢!");

                                break;    

                            }

                            printf("\n");

                        } 

                        for(;;)

                        {

                            printf("\n\n请设置密码:");

                            scanf("%s",m->mima_user);

                            if(strlen(m->mima_user)<=2)

                                printf("\t\t\t\t\t安全系数★★,很不安全哦!");

                            if(strlen(m->mima_user)<=6&&strlen(m->mima_user)>2)

                                printf("\t\t\t\t\t安全系数★★★,一般安全!");

                            if(strlen(m->mima_user)>7)

                                printf("\t\t\t\t\t安全系数★★★★★,非常安全!");    

                            printf("\n\n请确认密码:"); 

                            scanf("%s",m->mima_user2);

                            printf("\n\n请输入您的年龄:");

                            scanf("%d",&m->age);

                            if(m->age <= 10)

                            {

                                printf("年龄过小哦!长大再骑吧!共享单车伴你成长!\n");

                                system("cls");

                                break;

                            }

                            if(m->age >= 65)

                            {

                                printf("您已超过使用年限!抱歉!\n");

                                system("cls");

                                break;

                            }

                            if(strcmp(m->mima_user,m->mima_user2)==0)

                            {

                                system("cls");

                                submit();

                                printf("\n->注册成功!");

                                printf("\n\n快为自己起一个霸气的用户名吧!\n");

                                scanf("%s",m->name_user);

                                printf("\n\n请先给自己钱包充值哦!(200元)");

                                printf("\n\n请输入充值卡号(系统将自动为您扣除):"); 

                                scanf("%s",m->bank_card);

                                m->purse=200;

                                savefile_user(m); 

                                break;

                            }

                            if(strcmp(m->mima_user,m->mima_user2)!=0)

                            {

                                printf("\a亲,两次输入密码不一样哦!\n");

                                Sleep(500);

                            }    

                        }

                    }

                    if(strcmp(c,"2")==0)

                    {

                        printf("★亲!请按照指示操作完成维修员注册哦!\n");

                        for(;;)

                        {

                            printf("\n\n请输入绑定的手机号(账号):");

                            scanf("%s",k->number_repairman);

                            getchar();

                            l=readfile_repairman();

                            while(l!=NULL)

                            {

                                if(strcmp(l->number_repairman,k->number_repairman)==0)

                                {

                                    printf("亲!这个手机号已经被注册过了呦!");

                                    break;

                                }

                                l=l->next;

                            }

                            if(l==NULL)

                            {

                                printf("\t\t\t\t\t-------这个账号还没有人注册过呢!");

                                break;    

                            }

                            printf("\n");

                        } 

                        for(;;)

                        {

                            printf("\n\n请设置密码:");

                            scanf("%s",k->mima_repairman);

                            getchar();

                            if(strlen(k->mima_repairman)<=2)

                                printf("\t\t\t\t\t安全系数★★,很不安全哦!");

                            if(strlen(k->mima_repairman)<=6&&strlen(k->mima_repairman)>2)

                                printf("\t\t\t\t\t安全系数★★★,一般安全!");

                            if(strlen(k->mima_repairman)>7)

                                printf("\t\t\t\t\t安全系数★★★★★,非常安全!");    

                            printf("\n\n请确认密码:"); 

                            scanf("%s",k->mima_repairman2);

                            printf("\n\n请输入您的年龄:");

                            scanf("%d",&k->age);

                            getchar();

                            if(k->age <= 10)

                            {

                                printf("年龄过小哦!不能注册维修员,共享单车伴你成长!\n");

                                system("cls");

                                break;

                            }

                            if(k->age >= 65)

                            {

                                printf("您已超过使用年限!抱歉!\n");

                                system("cls");

                                break;

                            }

                            if(strcmp(k->mima_repairman,k->mima_repairman2)==0)

                            {

                                system("cls");

                                submit();

                                printf("\n->申请成功!等待管理员审核!");

                                printf("\n\n快为自己起一个霸气的用户名吧!\n");

                                scanf("%s",k->name_repairman);

                                savefile_repairman_check(k); 

                                break;

                            }

                            if(strcmp(k->mima_repairman,k->mima_repairman2)!=0)

                            {

                                printf("\a亲,两次输入密码不一样哦!\n");

                                Sleep(500);

                            }    

                        }

                    }

                    _getch();

            }

            if (z == 12)  

            {

                goodbye();

                exit(0);

            }

        }

    }

}

//    admin();        //管理员

//    user();      //用户

//repairman();      //维修员 

int main (void)

{

    system("color F1");

    show ();

    system("cls");

    choice();

}


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/Q___Narcissus/article/details/76382997
相关文章
  • C++中类的六大默认成员函数的介绍

    C++中类的六大默认成员函数的介绍
    一、类的默认成员函数 二、构造函数Date(形参列表) 构造函数主要完成初始化对象,相当于C语言阶段写的Init函数。 默认构造函数:无参的构
  • C/C++实现遍历文件夹最全方法总结介绍

    C/C++实现遍历文件夹最全方法总结介绍
    一、filesystem(推荐) 在c++17中,引入了文件系统,使用起来非常方便 在VS中,可以直接在项目属性中调整: 只要是C++17即以上都可 然后头文件
  • C语言实现手写Map(数组+链表+红黑树)的代码

    C语言实现手写Map(数组+链表+红黑树)的代码
    要求 需要准备数组集合(List) 数据结构 需要准备单向链表(Linked) 数据结构 需要准备红黑树(Rbtree)数据结构 需要准备红黑树和链表适配策略
  • MySQL系列教程之使用C语言来连接数据库

    MySQL系列教程之使用C语言来连接数据库
    写在前面 知道了 Java中使用 JDBC编程 来连接数据库了,但是使用 C语言 来连接数据库却总是连接不上去~ 立即安排一波使用 C语言连接 MySQL数
  • 基于C语言实现简单学生成绩管理系统

    基于C语言实现简单学生成绩管理系统
    一、系统主要功能 1、密码登录 2、输入数据 3、查询成绩 4、修改成绩 5、输出所有学生成绩 6、退出系统 二、代码实现 1 2 3 4 5 6 7 8 9 10 11
  • C语言实现共享单车管理系统

    C语言实现共享单车管理系统
    1.功能模块图; 2.各个模块详细的功能描述。 1.登陆:登陆分为用户登陆,管理员登陆以及维修员登录,登陆后不同的用户所执行的操作
  • C++继承与菱形继承的介绍

    C++继承与菱形继承的介绍
    继承的概念和定义 继承机制是面向对象程序设计的一种实现代码复用的重要手段,它允许程序员在保持原有类特性的基础上进行拓展,增加
  • C/C++指针介绍与使用介绍

    C/C++指针介绍与使用介绍
    什么是指针 C/C++语言拥有在程序运行时获得变量的地址和操作地址的能力,这种用来操作地址的特殊类型变量被称作指针。 翻译翻译什么
  • C++进程的创建和进程ID标识介绍
    进程的ID 进程的ID,可称为PID。它是进程的唯一标识,类似于我们的身份证号是唯一标识,因为名字可能会和其他人相同,生日可能会与其他
  • C++分析如何用虚析构与纯虚析构处理内存泄漏

    C++分析如何用虚析构与纯虚析构处理内存泄漏
    一、问题引入 使用多态时,如果有一些子类的成员开辟在堆区,那么在父类执行完毕释放后,没有办法去释放子类的内存,这样会导致内存
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计