本文实例为大家分享了C语言实现自行车存放管理系统的具体代码,供大家参考,具体内容如下
系统包括以下内容
1.数据录入:录入系统基本数据,用数组或链表组织;
2.数据存储:用文件的形式将录入的数据存储;
3.数据读写:对文件中的数据可以进行读写操作;
4.数据修改:可以对已存在的旧数据进行修改操作;
5.数据插入:可以将新数据插入到任意指定的位置;
6.数据删除:可以对已存在的旧数据进行删除操作;
7.数据查询:按要求对数据进行查询,至少含两项
简单查询以及一项组合查询;
8.数据统计:按要求对数据进行统计
含简单统计及综合统计;
9.数据排序:按要求对数据进行排序
含升序排序及降序排序;
10.数据报表:按要求对数据打印报表,
依规定的报表格式对数据打印报表;
11.界面:设计总体菜单界面。
附加项目:
登录、注册部分;
(密码设置密码的隐式输出、简单的加密解密)
附代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
struct bicycle{
char tele_num[12];//用户的电话号码
char name[13];//用户的姓名
char sex[7];//用户的性别
char bic_num[12];//自行车的编号
struct bicycle *next;
};
int iCount=0;
struct bicycle *pHead=NULL;
void key();
void menu();
void create();
void print();
void insert();
void search();
void dele();
void modify();
void excheng(struct bicycle *pStra,struct bicycle *Midd);
void sort();
int main(){
menu();
printf("123");
return 0;
}
//密码管理页面
void key(){
char key[20],m[20];
FILE *k;
k=fopen("key.txt","r");
if(k==NULL)
{ k=fopen("key.txt","wt");
printf("请创建管理密码:\n");
scanf("%s",key);
fprintf(k,"%s",key);
fclose(k);
printf("恭喜您创建成功!\n");
getchar();
printf("按任意键继续...");
getchar();
return ;
}
else
{ fscanf(k,"%s",m);
fclose(k);
printf("请输入管理密码:");
scanf("%s",key);
if(strcmp(m,key)==0)
{
printf("密码正确!\n");
getchar();
printf("按任意键继续...");
getchar();
return ;
}
else
{
printf("密码错误!\n");
getchar();
printf("按任意键继续...");
getchar();
return ;
}
}
}
//显示景点的信息
void menu(){
key();
int select=-1;
while(select!=0){
system("cls");
printf("\n\n\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\t1.录入自行车的信息LV5\n");
printf("\t\t\t\t\t\t\t\t2.修改自行车的信息LV5\n");
printf("\t\t\t\t\t\t\t\t3.删除自行车的信息LV5\n");
printf("\t\t\t\t\t\t\t\t4.查询自行车的信息LV5\n");
printf("\t\t\t\t\t\t\t\t5.打印自行车的信息LV5\n");
printf("\t\t\t\t\t\t\t\t6.自行车信息的排序LV5\n");
printf("\t\t\t\t\t\t\t\t7.插入自行车的信息LV5\n");
printf("\t\t\t\t\t\t\t\t0.退 出 菜 单LV5\n");
printf("\n请选择:");
scanf("%d",&select);
switch(select){
case 1:
create();
break;
case 2:
modify();
break;
case 3:
dele();
break;
case 4:
search();
break;
case 5:
print();
break;
case 6:
sort();
break;
case 7:
insert();
break;
case 0:break;
default:
exit(1);
break;
}
}
}
//创建链表函数
void create(){
//页面优化
system("cls");
struct bicycle *pEnd,*pNew;
struct bicycle *p;
pEnd=pNew=(struct bicycle *)malloc(sizeof(struct bicycle));
printf("请输入存放自行车的信息(退出请按0):\n");
//录入自行车编号,编号不可以重复
int flag1=1,flag2,n;
struct bicycle *pTemp;
printf("\n自行车的编号(退出请按0):");
scanf("%s",pNew->bic_num);
while(flag1){
if(strcmp(pNew->bic_num,"0")==0) {
flag1=1;
break;
}
else{
pTemp=pHead;
n=iCount;
flag2=1;
while(n&&flag2){
if(strcmp(pTemp->bic_num,pNew->bic_num)==0) flag2=0;
pTemp=pTemp->next;
n=n-1;
}
if(flag2==0){
printf("请重新输入,自行车编号%s存在!(退出请按0):\n",pNew->bic_num);
printf("自行车的编号:");
scanf("%s",pNew->bic_num);
flag1=1;
}
if(flag2==1) flag1=0;
}
}
//录入其他信息,如果flag1=0,则表明要退出,那么其他信息不用再录
if(flag1!=1){
printf("姓名:");
scanf("%s",pNew->name);
//性别只能输入female或male,否则是不规范的
while(1){
printf("性别(female或male):");
scanf("%s",pNew->sex);
if(strcmp(pNew->sex,"female")==0||strcmp(pNew->sex,"male")==0) break;
else printf("性别输入不规范,请核对后重输!\n");
}
//电话必须11位数,否则是不规范的
while(1){
printf("电话(11位数):");
scanf("%s",pNew->tele_num);
if(strlen(pNew->tele_num)==11) break;
else printf("电话输入不规范,必须11位数!\n");
}
}
while(strcmp(pNew->bic_num,"0")!=0)
{
iCount++;
if(pHead==NULL){
pNew->next=NULL;
pEnd=pNew;
pHead=pNew;
}
else{
p=pHead;
while(p&&p->next!=NULL) p=p->next;
{
p->next=pNew;
pNew->next=NULL;
}
}
pNew=(struct bicycle *)malloc(sizeof(struct bicycle));
printf("\n自行车的编号(退出请按0):");
scanf("%s",pNew->bic_num);
flag1=1;//每次循环结束flag1=1退出;flag1=0则继续,所以要值0
while(flag1){
if(strcmp(pNew->bic_num,"0")==0){
flag1=1;
break;
}
else{
pTemp=pHead;
n=iCount;
flag2=1;
while(n&&flag2){
if(strcmp(pTemp->bic_num,pNew->bic_num)==0) flag2=0;
pTemp=pTemp->next;
n=n-1;
}
if(flag2==0) {
printf("请重新输入,自行车的编号%s存在!(退出请按0):\n",pNew->bic_num);
printf("自行车的编号:");
scanf("%s",pNew->bic_num);
flag1=1;
}
if(flag2==1) flag1=0;
}
}
//录入其他信息,如果flag1=0,则表明要退出,那么其他信息不用再录
if(flag1!=1){
printf("姓名:");
scanf("%s",pNew->name);
//性别只能输入female或male,否则是不规范的
while(1){
printf("性别(female或male):");
scanf("%s",pNew->sex);
if(strcmp(pNew->sex,"female")==0||strcmp(pNew->sex,"male")==0) break;
else printf("性别输入不规范,请核对后重输!\n");
}
//电话必须11位数,否则是不规范的
while(1){
printf("电话(11位数):");
scanf("%s",pNew->tele_num);
if(strlen(pNew->tele_num)==11) break;
else printf("电话输入不规范,必须11位数!\n");
}
} //22
}
free(pNew);
}
//输出链表自行车的信息
void print(){
//页面优化
system("cls");
printf("\n\n\t\t\t\t===================5.打印自行车的信息===================\n");
struct bicycle *pTemp;
int iIndex=1;
printf("**********本名单中共有%d个自行车信息,所有的信息如下:**********\n",iCount);
printf("序号 姓名 性别 电话 自行车编号 \n");
pTemp=pHead;
while(pTemp!=NULL){
printf("%d %s %s %s %s\n",iIndex,pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num);
pTemp=pTemp->next;
iIndex++;
}
printf("按任意键返回上一级");
getch();
}
//插入自行车的信息
void insert(){
//页面优化
system("cls");
printf("\n\n\t\t\t\t===================7.插入自行车的信息===================\n");
printf("#\n说明:插入任意位置都可以\n#");
create();
printf("插入信息成功,");
printf("按任意键返回上一级");
getch();
}
//信息查询函数
void search(){
//页面优化
printf("\n\n\t\t\t\t===================4.查询自行车的信息===================");
int select=-1;
while(select!=0){
system("cls");
printf("\n\t\t=======请选择功能列表=======\n");
printf("\t\t\t1.按自行车的编号查询(lv4)\n");
printf("\t\t\t2.按 姓 名 查 询 (lv1)\n");
printf("\t\t\t0.退出此页面(lv4)\n");
printf("请选择:");
scanf("%d",&select);
int flag=1,flag1=1;
char number[12];
char name[12];
struct bicycle *pTemp=pHead;
//按自行车的编号查询
if(select==1){
printf("请输入你要查找的自行车编号:");
scanf("%s",number);
while(pTemp!=NULL&&flag)
{
if(strcmp(pTemp->bic_num,number)==0)
{
printf("%s找到了,具体信息如下:\n\n",number);
printf("\t姓名 性别 电话 自行车编号 \n");
printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num);
printf("\n");
flag=0;
}
pTemp=pTemp->next;
}
if(flag==1) printf("编号%s不存在!\n",number);
}
//按姓名查询
if(select==2){
printf("请输入你要查找的姓名:");
scanf("%s",name);
while(pTemp!=NULL&&flag)
{
if(strcmp(pTemp->name,name)==0)
{
printf("%s找到了,具体信息如下\n",name);
printf("\t姓名 性别 电话 自行车编号 \n");
printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num);
printf("\n");
flag=0;
}
pTemp=pTemp->next;
}
if(flag==1) printf("姓名%s不存在!",name);
}
printf("按任意键返回上一级");
getch();
}
}
//删除信息函数
void dele(){
//页面优化
system("cls");
printf("\n\n\t\t\t\t===================3.删除自行车的信息(按编号)===================");
int select=-1;
while(select!=0){
printf("\n\t\t=======请选择功能列表=======\n");
printf("\t\t\t1.按自行车的编号删除(lv4)\n");
printf("\t\t\t2.按 姓 名 删 除 (lv1)\n");
printf("\t\t\t0.退出此页面(lv4)\n");
printf("请选择:");
scanf("%d",&select);
if(select==0) return;
else if(select==1||select==2) break;
else printf("输入有误请重新输入\n");
}
if(select==1){
if(iCount==0) printf("\n\n暂无数据无法进行此操作,按任意键退出!\n");
else
{ //33
char number[12];
int i,flag=1;
char option;
struct bicycle *pTemp;
struct bicycle *pPre;
pTemp=pHead;
int iIndex=0;
printf("\n请输入要删除自行车的编号:");
scanf("%s",number);
while(pTemp!=NULL&&flag){
if(strcmp(pTemp->bic_num,number)==0){
printf("\n%s找到了,将要删除的信息如下\n\n",number);
//显示将要删除人的信息
printf("\t姓名 性别 电话 自行车编号 \n");
printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num);
printf("\n");
flag=0;
printf("确认删除请输1,否则按任意数字键退出\n");
scanf("%d",&option);
}
pTemp=pTemp->next;
iIndex++;
}
if(flag==1) {printf("编号%s不存在!",number); return;}
if(option==1){
pTemp=pHead;
pPre=pTemp;//可能多余
//printf("----------删除第%d个学生----------\n",iIndex);
if(iIndex!=1)
{
for(i=1;i<iIndex;i++)
{
pPre=pTemp;
pTemp=pTemp->next;
}
pPre->next=pTemp->next;
}
if(iIndex==1) pHead=pTemp->next;
free(pTemp);
iCount--;
printf("删除成功按任意键退出!");
}
else printf("删除失败按任意键退出!");
} //33
getch();
}
else{
if(iCount==0) printf("\n\n暂无数据无法进行此操作,按任意键退出!\n");
else
{ //33
char name[12];
int i,flag=1;
char option;
struct bicycle *pTemp;
struct bicycle *pPre;
pTemp=pHead;
int iIndex=0;
printf("\n请输入要删除自行车对应户主的姓名:");
scanf("%s",name);
while(pTemp!=NULL&&flag){
if(strcmp(pTemp->name,name)==0){
printf("\n%s找到了,将要删除的信息如下\n\n",name);
//显示将要删除人的信息
printf("\t姓名 性别 电话 自行车编号 \n");
printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num);
printf("\n");
flag=0;
printf("确认删除请输1,否则按任意数字键退出\n");
scanf("%d",&option);
}
pTemp=pTemp->next;
iIndex++;
}
if(flag==1) {printf("姓名%s不存在!",name); return;}
if(option==1){
pTemp=pHead;
pPre=pTemp;//可能多余
//printf("----------删除第%d个学生----------\n",iIndex);
if(iIndex!=1)
{
for(i=1;i<iIndex;i++)
{
pPre=pTemp;
pTemp=pTemp->next;
}
pPre->next=pTemp->next;
}
if(iIndex==1) pHead=pTemp->next;
free(pTemp);
iCount--;
printf("删除成功按任意键退出!");
}
else printf("删除失败按任意键退出!");
} //33
getch();
}
}
//2.修改自行车的信息
void modify(){
//页面优化
system("cls");
printf("\n\n\t\t\t\t===================2.修改自行车的信息===================");
int post;
int flag=1,flag1;
char number[12];
struct bicycle *pTemp=pHead,*pPre=pTemp;
printf("\n请输入你要修改自行车信息对应自行车的编号:");
scanf("%s",number);
while(pTemp!=NULL&&flag)
{
if(strcmp(pTemp->bic_num,number)==0)
{
printf("将要修改的学号%s具体信息如下\n",number);
printf("\t姓名 性别 电话 自行车编号 \n");
printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num);
printf("\n");
flag=0;
}
pPre=pTemp;//保存pTemp
pTemp=pTemp->next;
}
if(flag==1) printf("你要修改的学号%s不存在!",number);
else
{
printf("确认修改请按1,放弃请按任意数字键!\n请选择:");
scanf("%d",&post);
while(post==1)
{
printf("请选择你要修改的项目(1.姓名 2.性别 3.电话号码 4.自行车的编号 5.修改全部)\n");
scanf("%d",&flag1);
if(flag1==1)
{
printf("新姓名:");
scanf("%s",pPre->name);
printf("修改完成,按任意键退出!");
}
else if(flag1==2)
{
printf("新性别:");
scanf("%s",pPre->sex);
printf("修改完成,按任意键退出!");
}
else if(flag1==3)
{
while(1){
printf("电话(11位数):");
scanf("%s",pPre->tele_num);
if(strlen(pPre->tele_num)==11) break;
else printf("电话输入不规范,必须11位数!\n");
}
printf("修改完成,按任意键退出!");
}
else if(flag1==4)
{
printf("新编号:");
scanf("%d",&pPre->bic_num);
printf("修改完成,按任意键退出!");
}
else{
printf("新姓名:");
scanf("%s",pPre->name);
printf("新性别:");
scanf("%s",pPre->sex);
while(1){
printf("电话(11位数):");
scanf("%s",pPre->tele_num);
if(strlen(pPre->tele_num)==11) break;
else printf("电话输入不规范,必须11位数!\n");
}
printf("新编号:");
scanf("%s",pPre->bic_num);
}
break;
}
}
printf("修改完成,按任意键退出");
getch();
}
//交换函数
void excheng(struct bicycle *pStra,struct bicycle *pMidd){
int t;
struct bicycle *pTemp;
pTemp=(struct bicycle *)malloc(sizeof(struct bicycle));
strcpy(pTemp->tele_num,pStra->tele_num);
strcpy(pStra->tele_num,pMidd->tele_num);
strcpy(pMidd->tele_num,pTemp->tele_num);
strcpy(pTemp->bic_num,pStra->bic_num);
strcpy(pStra->bic_num,pMidd->bic_num);
strcpy(pMidd->bic_num,pTemp->bic_num);
strcpy(pTemp->name,pStra->name);
strcpy(pStra->name,pMidd->name);
strcpy(pMidd->name,pTemp->name);
strcpy(pTemp->sex,pStra->sex);
strcpy(pStra->sex,pMidd->sex);
strcpy(pMidd->sex,pTemp->sex);
free(pTemp);
}
//6.自行车信息的排序
void sort(){
//页面优化
printf("\n\n\t\t===================4.排序系统===================");
int i,j;
struct bicycle *pStra,*pMidd;
int result;
int select=-1;
while(select!=0)
{
system("cls");
printf("\n\t\t\t=======请选择功能列表=======\n");
printf("\t\t\t1.按自行车编号升序排序(lv4)\n");
printf("\t\t\t2.按自行车编号降序排序(lv1)\n");
printf("\t\t\t3.按姓名升序排序(lv4)\n");
printf("\t\t\t4.按姓名降序排序(lv1)\n");
printf("\t\t\t0.退出此页面(lv4)\n");
printf("请选择:");
scanf("%d",&select);
result=select;
if(select!=1&&select!=2&&select!=3&&select!=4) return;
pStra=pHead;
pMidd=pStra->next;
for(i=0;i<iCount;i++)
{
pStra=pHead;
pMidd=pStra->next;
for(j=0;j<iCount-i-1&&pMidd!=NULL;j++)
{
if(result==1) {if(strcmp(pStra->bic_num,pMidd->bic_num)>0) excheng(pStra,pMidd);}
else if(result==2) {if(strcmp(pStra->bic_num,pMidd->bic_num)<0) excheng(pStra,pMidd);}
else if(result==3) {if(strcmp(pStra->name,pMidd->name)>0) excheng(pStra,pMidd);}
else if(result==4) {if(strcmp(pStra->name,pMidd->name)<0) excheng(pStra,pMidd);}
pStra=pMidd;
pMidd=pMidd->next;
}
}
printf("\t\t\t5.显示排完序后的结果为:\n\n");
printf("------------------------------------------------------");
struct bicycle *pTemp;
int iIndex=1;
printf("**********本名单中共有%d个自行车信息,所有的信息如下:**********\n",iCount);
printf("序号 姓名 性别 电话 自行车编号 \n");
pTemp=pHead;
while(pTemp!=NULL){
printf("%d %s %s %s %s\n",iIndex,pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num);
pTemp=pTemp->next;
iIndex++;
}
printf("------------------------------------------------------");
printf("\n\n排序成功,按任意键返回!");
getch();
}
}