这个项目是我今年的C语言课设。做这个项目一个人大概用了一天的时间来完成,整体将近700行,量不是很多,所以也没用多文件什么的,当然也是采用了模块化设计的思路,在代码中写了几个函数来实现特定的功能。
以下是这个项目的一些要求和全部源码。
该软件主要是使用C语言设计开发一个简单的车辆租赁管理系统,实现租赁信息的查询、修改、删除、添加以及订单的查询等功能。
程序中采用结构体数组存储租赁信息。租赁结构体成员包括:订单号、身份证号、车牌号、费用。数组的长度不超过100。
输入租赁信息包括:订单号、身份证号、车牌号、费用。还车前费用为0。在录入数据的同时,系统将对信息的合法性进行检验,若录入了不合法的数据系统应作出提示,并且要求重新输入。
将租赁信息在屏幕上列表输出。要求先显示提示信息“订单号、身份证号、车牌号、费用”,然后再显示租赁信息,每行显示一条租赁信息。
输入身份证号进行查询,输出符合条件的租赁信息,输出订单号、身份证号、车牌号、费用。
输入车牌号进行查询,输出该车所有租赁的总费用。输出车牌号、总费用。
输入新的租赁信息,将新的信息插入原租赁信息清单中,并将新的列表输出,以方便用户确认。
通过身份证号对某条租赁信息进行进行修改和删除,并将租赁信息列表输出,以方便用户确认。
(1)统计输出当月订单总金额
(2)统计输出订单金额最高的车牌号
以下是该程序的全部代码
#include
#include
#include
#include
#include
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
int loop = 0;
int menu();
int menu_2();
int menu_3();
void gotoxy();
void HideCursor();
void InsertInformation();
void PrintInformation();
void IdSearch();
void PlateNumber();
void ExitSystem();
void ReviseInformation();
void DeleteInformation();
void AddInformation();
void MoneySum();
void ChampionCar();
struct information{
int theOrderNumber;
char IdNumber[20];
char PlateNumber[10];
double Cost;
}car[999999];
int key;
int main(){
HideCursor();
menu();
key = menu();
switch(key){
case 1:
InsertInformation();
break;
case 2:
PrintInformation();
break;
case 3:
menu_2();
switch(menu_2()){
case 1:
MoneySum();
break;
case 2:
ChampionCar();
break;
case 3:
system("cls");
main();
break;
case 4:
ExitSystem();
break;
}
break;
case 4:
ReviseInformation();
break;
case 5:
DeleteInformation();
break;
case 6:
AddInformation();
break;
case 7:
menu_3();
switch(menu_3()){
case 1:
MoneySum();
break;
case 2:
ChampionCar();
break;
case 3:
system("cls");
main();
break;
case 4:
ExitSystem();
break;
}
break;
case 8:
ExitSystem();
break;
}
return 0;
}
void gotoxy(short x, short y) {
COORD coord = { x,y };/*定义结构体变量coord*/
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
void HideCursor() {
CONSOLE_CURSOR_INFO cursor_info = { 1,0 };
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
int menu(void){
int i,choose;
gotoxy(50,5);
for(i = 0;i < 20 ; i++){
printf("-");
}
for(i = 0;i <5; i++){
gotoxy(49 - 2 * i,6 + i);
printf("/");
}
for(i = 0;i < 50;i++){
gotoxy(25+i,10);
printf("-");
}
for(i = 0;i < 5;i++){
gotoxy(25,11+i);
printf("|");
}
gotoxy(35,13);
printf("欢迎使用汽车租赁管理系统");
gotoxy(40,15);
printf("[1]信息录入");
gotoxy(40,16);
printf("[2]信息显示");
gotoxy(40,17);
printf("[3]查询信息");
gotoxy(40,18);
printf("[4]修改信息");
gotoxy(40,19);
printf("[5]删除信息");
gotoxy(40,20);
printf("[6]追加信息");
gotoxy(40,21);
printf("[7]统计信息");
gotoxy(40,22);
printf("[8]退出");
gotoxy(40,26);
printf("Zenith 版权所有");
gotoxy(40,23);
printf("请选择(1-8):");
scanf("%d",&choose);
while(choose<1 || choose>8){
printf("请输入范围为1-8的整数");
gotoxy(40,23);
printf("请选择(1-8):");
scanf("%d",&choose);
}
return choose;
}
int menu_2(void){
system("cls");
int i,choose;
gotoxy(50,5);
for(i = 0;i < 20 ; i++){
printf("-");
}
for(i = 0;i <5; i++){
gotoxy(49 - 2 * i,6 + i);
printf("/");
}
for(i = 0;i < 50;i++){
gotoxy(25+i,10);
printf("-");
}
for(i = 0;i < 5;i++){
gotoxy(25,11+i);
printf("|");
}
gotoxy(35,13);
printf("欢迎使用汽车租赁管理系统");
gotoxy(40,15);
printf("[1]按照身份证号检索");
gotoxy(40,16);
printf("[2]按照车牌号检索");
gotoxy(40,17);
printf("[3]返回主菜单");
gotoxy(40,18);
printf("[4]退出系统");
gotoxy(40,26);
printf("Zenith 版权所有");
gotoxy(40,23);
printf("请选择(1-4):");
scanf("%d",&choose);
while(choose<1 || choose>8){
printf("请输入范围为1-4的整数");
gotoxy(40,23);
printf("请选择(1-4):");
scanf("%d",&choose);
}
return choose;
}
int menu_3(void){
system("cls");
int i,choose;
gotoxy(50,5);
for(i = 0;i < 20 ; i++){
printf("-");
}
for(i = 0;i <5; i++){
gotoxy(49 - 2 * i,6 + i);
printf("/");
}
for(i = 0;i < 50;i++){
gotoxy(25+i,10);
printf("-");
}
for(i = 0;i < 5;i++){
gotoxy(25,11+i);
printf("|");
}
gotoxy(35,13);
printf("欢迎使用汽车租赁管理系统");
gotoxy(40,15);
printf("[1]查看车辆总收入");
gotoxy(40,16);
printf("[2]查看盈利冠军车辆");
gotoxy(40,17);
printf("[3]返回主菜单");
gotoxy(40,18);
printf("[4]退出系统");
gotoxy(40,26);
printf("Zenith 版权所有");
gotoxy(40,23);
printf("请选择(1-4):");
scanf("%d",&choose);
while(choose<1 || choose>8){
printf("请输入范围为1-4的整数");
gotoxy(40,23);
printf("请选择(1-4):");
scanf("%d",&choose);
}
return choose;
}
void InsertInformation(){
system("cls");
int a,k,j,x,one;
double cost;
int i = 0;
do{
printf("\n----------------------------------------------------\n");
printf("\t ———信息录入———\n\n");
fflush(stdin); //清空缓冲区
printf("请输入订单号(1-999999):");
scanf("%d", &x);
while( x<1 || x>100){
printf("订单号范围为1~100:");
scanf("%d", &x);
}
one=0;
for(j=0;j < loop;j++){
if(x==car[j].theOrderNumber){
one=1;
printf("\n记录中已有!不得重复添加...");
getch();
system("cls");
menu();
}
}
if(one==0){
car[loop].theOrderNumber = x;
}
printf("请输入身份证号:");
getchar();
gets(car[loop].IdNumber);
printf("请输入车牌号:");
scanf("%s",&car[loop].PlateNumber);
printf("请输入费用:");
scanf("%lf", &cost);
car[loop].Cost = cost;
loop++;
printf("\n添加完毕! 目前共有%d辆车!\n按1回到主界面!按2继续添加信息!按其他键退出程序! ",loop);
scanf("%d", &a);
}while(a==2);
if (a == 1){
system("cls");
main();
}
if (a != 1){
ExitSystem();
}
}
void PrintInformation(){
system("cls");
int a,j;
printf("\n----------------------------------------------------\n");
printf("\t ———信息显示———\n\n");
if(loop == 0){
printf("Error,无数据,请添加数据后再试\n");
}
else{
gotoxy(3,5);
printf("订单号");
gotoxy(10,5);
printf("身份证号");
gotoxy(32,5);
printf("车牌号");
gotoxy(45,5);
printf("费用");
for(j = 0;j < loop;j++ ){
gotoxy(3,7+j);
printf("%d",car[j].theOrderNumber);
gotoxy(10,7+j);
printf("%s",car[j].IdNumber);
gotoxy(32,7+j);
printf("%s",car[j].PlateNumber);
gotoxy(45,7+j);
printf("%f",car[j].Cost);
}
}
printf("\n显示完毕! 目前共有%d辆车!\n按1回到主界面!按其他键退出程序! ",loop);
scanf("%d", &a);
if (a == 1){
system("cls");
main();
}
if (a != 1){
ExitSystem();
}
}
void IdSearch(){
char idnumber[20];
int i,j,a;
do{
system("cls");
printf("\n----------------------------------------------------\n");
printf("\t ———查询(按照身份证号)———\n\n");
if(loop == 0){
gotoxy(3,5);
printf("无数据,请录入数据后查询,输入任意键返回主菜单");
getch();
system("cls");
main();
}
gotoxy(3,5);
printf("请输入需要查询的身份证号:");
scanf("%s",&idnumber);
j = 0;
for(i=0;i < loop;i++){
if(strcmp(idnumber,car[i].IdNumber) == 0){
j=1;
gotoxy(3,7);
printf("订单号");
gotoxy(10,7);
printf("身份证号");
gotoxy(32,7);
printf("车牌号");
gotoxy(45,7);
printf("费用");
gotoxy(3,9);
printf("%d",car[i].theOrderNumber);
gotoxy(10,9);
printf("%s",car[i].IdNumber);
gotoxy(32,9);
printf("%s",car[i].PlateNumber);
gotoxy(45,9);
printf("%f",car[i].Cost);
break;
}
if(j == 0){
gotoxy(3,7);
printf("对不起,未查询到您输入的身份证号,请核实后重新输入");
break;
}
}
gotoxy(3,11);
printf("查询完成,输入1继续查询,输入2返回主菜单,按其他键退出程序!");
scanf("%d",&a);
}while(a == 1);
if (a == 2){
system("cls");
main();
}
if (a != 1){
ExitSystem();
}
}
void PlateNumber(){
char platenumber[10];
int i,j,a;
do{
system("cls");
printf("\n----------------------------------------------------\n");
printf("\t ———查询(按照车牌号)———\n\n");
if(loop == 0){
gotoxy(3,5);
printf("无数据,请录入数据后查询,输入任意键返回主菜单");
getch();
system("cls");
main();
}
gotoxy(3,5);
printf("请输入需要查询的车牌号:");
scanf("%s",&platenumber);
j = 0;
for(i=0;i < loop;i++){
if(strcmp(platenumber,car[i].PlateNumber) == 0){
j=1;
gotoxy(3,7);
printf("订单号");
gotoxy(10,7);
printf("身份证号");
gotoxy(32,7);
printf("车牌号");
gotoxy(45,7);
printf("费用");
gotoxy(3,9);
printf("%d",car[i].theOrderNumber);
gotoxy(10,9);
printf("%s",car[i].IdNumber);
gotoxy(32,9);
printf("%s",car[i].PlateNumber);
gotoxy(45,9);
printf("%f",car[i].Cost);
break;
}
if(j == 0){
gotoxy(3,7);
printf("对不起,未查询到您输入的车牌号,请核实后重新输入");
break;
}
}
gotoxy(3,11);
printf("查询完成,输入1继续查询,输入2返回主菜单,按其他键退出程序!");
scanf("%d",&a);
}while(a == 1);
if (a == 2){
system("cls");
main();
}
if (a != 1){
ExitSystem();
}
}
void ReviseInformation(){
char idnumber[20];
int i,j,a,b,c,cost;
do{
system("cls");
printf("\n----------------------------------------------------\n");
printf("\t ———信息修改———\n\n");
if(loop == 0){
gotoxy(3,5);
printf("无数据,请录入数据后查询,输入任意键返回主菜单");
getch();
system("cls");
main();
}
gotoxy(3,5);
printf("请输入需要修改的信息的身份证号:");
scanf("%s",&idnumber);
j = 0;
for(i=0;i < loop;i++){
if(strcmp(idnumber,car[i].IdNumber) == 0){
j=1;
do{
system("cls");
printf("\n----------------------------------------------------\n");
gotoxy(3,6);
printf("您想要修改的条目如下");
gotoxy(3,7);
printf("订单号");
gotoxy(10,7);
printf("身份证号");
gotoxy(32,7);
printf("车牌号");
gotoxy(45,7);
printf("费用");
gotoxy(3,9);
printf("%d",car[i].theOrderNumber);
gotoxy(10,9);
printf("%s",car[i].IdNumber);
gotoxy(32,9);
printf("%s",car[i].PlateNumber);
gotoxy(45,9);
printf("%f",car[i].Cost);
printf("\n\n\t ———信息修改———\n\n");
printf("请选择需要修改的项目\n");
printf("\t[1]身份证号\n");
printf("\t[2]车牌号\n");
printf("\t[3]费用\n");
scanf("%d",&b);
switch(b){
case 1:
printf("\n请输入身份证号:");
getchar();
gets(car[i].IdNumber);
break;
case 2:
printf("\n请输入车牌号:");
scanf("%s",&car[i].PlateNumber);
break;
case 3:
printf("请输入费用:");
scanf("%lf", &cost);
car[i].Cost = cost;
break;
}
printf("修改完成,输入1继续修改,输入其他键结束对此条目的修改");
scanf("%d",&c);
}while(c == 1);
break;
}
if(j == 0){
gotoxy(3,7);
printf("对不起,未查询到您输入的身份证号,请核实后重新输入");
break;
}
}
gotoxy(3,15);
printf("输入1继续修改其他条目,输入2返回主菜单,按其他键退出程序!");
scanf("%d",&a);
}while(a == 1);
if (a == 2){
system("cls");
main();
}
if (a != 1){
ExitSystem();
}
}
void DeleteInformation(){
int j,x,k;
char idnumber[20];
system("cls");
printf("\n----------------------------------------------------\n");
printf("\t ———信息删除———\n\n");
printf("\t 请输入需要删除的条目的身份证号:");
scanf("%s",idnumber);
k=0;
for(j=0;j <= loop;j++){
if(strcmp(idnumber,car[j].IdNumber)==0){
k=1;
for( x = j; x<=loop ; x++){
car[x]=car[x+1];
}
loop--;
printf("\n\t 删除成功!");
break;
}
}
if(k==0){
printf("\t 对不起,记录中没有此条目...");
printf("输入任意键退出");
getch();
system("cls");
main();
}
printf("输入任意键退出");
getch();
system("cls");
main();
}
void AddInformation(){
int i,x,j,one,row;
double cost;
loop++;
system("cls");
printf("\n----------------------------------------------------\n");
printf("\t ———信息追加———\n\n");
gotoxy(3,5);
if(loop == 1){
printf("请在录入信息后选择此功能,按任意键退出!");
getch();
loop--;
system("cls");
main();
}
printf("请输入在第几行增添数据");
scanf("%d",&row);
if(row >= loop){
do{
printf("输入的行数必须小于已有的条目数!请重新输入:");
scanf("%d",&row);
}while(row<=loop);
}
for(i = loop;i >= row;i--){
car[i] = car[i - 1];
}
printf("请输入订单号(1-100):");
scanf("%d", &x);
while( x<1 || x>100){
printf("订单号范围为1~100:");
scanf("%d", &x);
}
one=0;
for(j=0;j < loop;j++){
if(x==car[j].theOrderNumber){
one=1;
printf("\n记录中已有!不得重复添加...");
getch();
system("cls");
main();
}
}
if(one==0){
car[row].theOrderNumber = x;
}
printf("请输入身份证号:");
getchar();
gets(car[row].IdNumber);
printf("请输入车牌号:");
scanf("%s",&car[row].PlateNumber);
printf("请输入费用:");
scanf("%lf", &cost);
car[row].Cost = cost;
printf("\n\t追加完成,请按任意键返回主菜单");
getch();
system("cls");
main();
}
void MoneySum(){
int i;
double sum = 0;
system("cls");
printf("\n----------------------------------------------------\n");
printf("\t ———信息统计(车辆总收入)———\n\n");
for(i = 0;i <= loop ; i++){
sum = sum + car[i].Cost;
}
gotoxy(3,5);
printf("截至目前所有车辆总收入为%lf",sum);
gotoxy(3,6);
printf("按任意键返回主菜单");
getch();
system("cls");
main();
}
void ChampionCar(){
int i,j;
double high = 0;
system("cls");
printf("\n----------------------------------------------------\n");
printf("\t ———信息统计(盈利冠军车辆)———\n\n");
for(i = 0;i < loop;i++){
if(car[i].Cost >= high){
high = car[i].Cost;
j = i;
}
}
gotoxy(3,5);
printf("截止目前盈利冠军车辆为收入%lf元的%s",high,car[j].PlateNumber);
gotoxy(3,6);
printf("按任意键返回主菜单");
getch();
system("cls");
main();
}
void ExitSystem(){
system("cls");
printf("\n退出系统中...");
Sleep(1000);
exit(0);
}