C语言自行车存放管理系统
改改改不完的Bug...... 人气:0系统包括以下内容
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(); } }
加载全部内容