#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 80
struct VIP_record{
char VIP_Name[20];
int VIP_Years;
};
struct VIP_List{
struct VIP_record vip[MAXSIZE];
int length;
};
VIP_List vip_list;
void menu();
void Create_VIP();
void Print_VIP();
void Print_Elem();
void Insert_VIP();
void Delete_VIP();
void Bubble_Sort_Name();
void Bubble_Sort_Years();
int Find_VIP(char *delname);
int main(){
vip_list.length=0;
menu();
return 0;
}
void menu(){
system("cls");
int choice;
printf("\t\t\t*******************************************\n");
printf("\t\t\t************* 客户信息管理 **************\n");
printf("\t\t\t*******************************************\n");
printf("\t\t\t******* 1----输入客户信息 ********\n");
printf("\t\t\t******* 2----显示客户信息 ********\n");
printf("\t\t\t******* 3----插入客户信息 ********\n");
printf("\t\t\t******* 4----删除客户信息 ********\n");
printf("\t\t\t******* 0----退出 ********\n");
printf("\t\t\t*******************************************\n");
printf("请选择:\n");
scanf("%d",&choice);
switch(choice){
case 1:Create_VIP();break;
case 2:Print_VIP();break;
case 3:Insert_VIP();break;
case 4:Delete_VIP();break;
case 0:exit(0);
default:printf("输入错误\n");
}
}
void Create_VIP(){
int c,i;
printf("********创建客户表*********\n");
printf("请输入人数(<=80):\n");
scanf("%d", &vip_list.length);
getchar();
for(i=0;i<vip_list.length;i++){
printf("请输入第%d个客户的姓名:",i+1);
gets(vip_list.vip[i].VIP_Name);
printf("请输入第%d个客户的年限:",i+1);
scanf("%d",&vip_list.vip[i].VIP_Years);
getchar();
}
Print_Elem();
printf("返回主菜单?\n1----返回主菜单\n2-结束程序\n");
printf("请选择:\n");
scanf("%d",&c);
if(c==1) menu();
else exit(0);
}
void Print_Elem(){
system("cls");
printf("********输出客户表*********\n");
int i;
printf("客户信息如下:\n");
printf("序号\t姓名\t客户年限\n");
for(i=0;i<vip_list.length;i++)
printf("%d\t%s\t%d\n",i+1,vip_list.vip[i].VIP_Name,vip_list.vip[i].VIP_Years);
printf("\n");
}
void Print_VIP(){
int choice;
while(1){
printf("请选择:\n1----按姓名排序\n2----按年限排序\n0----返回主菜单\n");
scanf("%d",&choice);
if(choice==0) {printf("再见!\n");menu();break;}
if(choice==1){
Bubble_Sort_Name();
Print_Elem();
}
else{
Bubble_Sort_Years();
Print_Elem();
}
}
}
void Bubble_Sort_Name(){
int i,j;
struct VIP_record t;
for(i=1;i<=vip_list.length-1;i++){
for(j=0;j<vip_list.length-i;j++){
if(strcmp(vip_list.vip[j].VIP_Name,vip_list.vip[j+1].VIP_Name)>0){
t=vip_list.vip[j];
vip_list.vip[j]=vip_list.vip[j+1];
vip_list.vip[j+1]=t;
}
}
}
}
void Bubble_Sort_Years(){
int i,j;
struct VIP_record t;
for(i=1;i<=vip_list.length-1;i++){
for(j=0;j<vip_list.length-i;j++){
if(vip_list.vip[j].VIP_Years>vip_list.vip[j+1].VIP_Years){
t=vip_list.vip[j];
vip_list.vip[j]=vip_list.vip[j+1];
vip_list.vip[j+1]=t;
}
}
}
}
void Insert_VIP(){
int c=1;
printf("********插入客户信息*********\n");
while(c){
getchar();
printf("请输入客户姓名:\n");
gets(vip_list.vip[vip_list.length].VIP_Name);
printf("请输入客户年限:");
scanf("%d",&vip_list.vip[vip_list.length].VIP_Years);
vip_list.length++;
printf("是否继续输入?\n1----输入下一位客户\n2----结束输入\n");
printf("请选择:\n");
scanf("%d",&c);
if(c!=1)break;
}
printf("返回主菜单?\n1----返回主菜单\n2-结束程序\n");
printf("请选择:\n");
scanf("%d",&c);
if(c==1) menu();
else exit(0);
}
void Delete_VIP(){
int num,i,c=1;
char delname[20];
printf("********删除客户信息*********\n");
while(c){
printf("请输入要删除的客户姓名:\n");
scanf("%s",delname);
num=Find_VIP(delname);
if(num==-1){
printf("未找到要删除的客户\n重新输入请按1,返回主菜单请按2");
scanf("%d",&c);
if(c==1)continue;
else {
menu();
}
}
for(i=num;i<vip_list.length-1;i++){
strcpy(vip_list.vip[i].VIP_Name,vip_list.vip[i+1].VIP_Name);
vip_list.vip[i].VIP_Years=vip_list.vip[i+1].VIP_Years;
}
vip_list.length--;
printf("是否继续删除?\n1----删除下一位客户\n2----结束删除\n");
printf("请选择:\n");
scanf("%d",&c);
if(c!=1)break;
}
printf("返回主菜单?\n1----返回主菜单\n2-结束程序\n");
printf("请选择:\n");
scanf("%d",&c);
if(c==1) menu();
else exit(0);
}
int Find_VIP(char *delname){
int i;
for(i=0;i<vip_list.length;i++){
if (strcmp(vip_list.vip[i].VIP_Name,delname)==0){
return i;
}
}
return -1;
}
# include <stdio.h>
# include <stdlib.h>
# include <process.h>
typedef struct LNode{
int data;
struct LNode *next;
} LNode,*LinkList;
/***************************/
/***************************/
void CreateList_L(LinkList &L, int n) {
int i;
LinkList p;
L = (LinkList) malloc (sizeof (LNode));
L->next = NULL;
for (i = n; i > 0; --i) {
p = (LinkList) malloc (sizeof (LNode));
printf("请输入第%d个元素:",i);
scanf("%d",&p->data);
p->next = L->next; L->next = p;
}
}
/***************************/
/***************************/
void PrintList(LinkList L){
LinkList p;
p=L;
printf("Begin to print the LinkList...\n");
while(p->next!=NULL){
printf("%d->",p->next->data);
p=p->next;
}
printf("----------The LinkList ended!\n");
}
/***************************/
/***************************/
int Listlength(LinkList L){
int i=0;
LNode *p=L;
while(p->next!=NULL){
i++;
p=p->next;
}
return i;
}
/***************************/
/***************************/
int InsertList(LinkList &L,int i,int e){
LinkList p,s;
p = L;
int j = 0;
while (p && j < i-1) {
p = p->next;
++j;
}
if (!p || j > i-1) return 0;
s = (LinkList)malloc(sizeof(LNode));
s->data = e; s->next = p->next;
p->next = s;
return 1;
}
/***************************/
/***************************/
int DeleteList(LinkList &L,int i){
LinkList p,q;
int e;
p = L;
int j = 0;
while (p->next && j < i-1) {
p = p->next;
++j;
}
if (!(p->next) || j > i-1) return 0;
q = p->next;
p->next = q->next;
e = q->data;
free(q);
return 1;
}
void BubbleSort (LinkList &L){
LNode *cur,*teil;
cur = L->next ;
teil=NULL;
while(cur != teil)
{
while(cur->next != teil)
{
if(cur->data > cur->next ->data )
{
int tmp = cur->data ;
cur->data = cur->next ->data ;
cur->next ->data = tmp;
}
cur = cur->next ;
}
teil = cur;
cur = L->next ;
}
return ;
}
int main(){
LinkList L;
int length;
int i,e;
CreateList_L(L,10);
PrintList(L);
length=Listlength(L);
printf("the length of the list is %d\n",length);
printf("input the delete position \n");
scanf("%d",&i);
DeleteList(L,i);
PrintList(L);
printf("Input the insert position and e:\n");
scanf("%d%d",&i,&e);
InsertList(L,i,e);
PrintList(L);
BubbleSort (L);
printf("After sort:\n");
PrintList(L);
getchar();
system("pause");
}