标红的一行有错,求改正
#include <stdio.h>#include <malloc.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>
#define N 1000
typedef struct
{
long int num; /*学号*/
char name[9]; /*姓名*/
char gender[3]; /*性别*/
char roomnum[8]; /*宿舍号*/
char bednum[8]; /*床位号*/
char age[4]; /*年龄*/
char spe[10]; /*专业*/
char phone[15]; /*电话*/
}DataType;
typedef struct node
{
DataType data;
struct node *next;
}ListNode;
typedef ListNode *LinkList;
LinkList head;
int menu()
{
system("cls");
int a,i;
printf(" -------------------------------------------------- ");
printf(" 西邮宿舍信息管理系统 ");
printf(" -------------------------------------------------- ");
printf(" ☆ 1. 录入住宿学生信息 ☆ ");
printf(" ☆ 2. 显示住宿学生信息 ☆ ");
printf(" ☆ 3. 查询住宿学生信息 ☆ ");
printf(" ☆ 4. 插入住宿学生信息 ☆ ");
printf(" ☆ 7. paixu住宿学生信息 ☆ ");
printf(" ☆ 5. 删除住宿学生信息 ☆ ");
printf(" ☆ 6. 退出程序 ☆ ");
printf("\n");
printf(" Armo版权所有 ");
printf("\t\t\t请选择1-7:");
for(i=0;i<3;i++)
{
scanf("%d",&a);
if (a<1||a>7)
printf("\n\t输入错误,请重选1-7\n");
else
break;
}
return a;
}
LinkList inputList(void)
{
system("cls");
ListNode *p,*rear;
int i,j;
printf("需要插入数据数量:");
scanf("%d",&j);
head = (ListNode *)malloc(sizeof(ListNode));
rear = head;
for(i=1;i<=j;i++)
{
printf("请出去第%d位信息:\n",i);
p=(ListNode *)malloc(sizeof(ListNode));
printf("学号:");
scanf("%d",p->data.num);
printf("姓名:");
scanf("%s",p->data.name);
printf("性别:");
scanf("%s",p->data.gender);
printf("宿舍号:");
scanf("%s",p->data.roomnum);
printf("床位号:");
scanf("%s",p->data.bednum);
printf("年龄:");
scanf("%s",p->data.age);
printf("专业:");
scanf("%s",p->data.spe);
printf("电话:");
scanf("%s",p->data.phone);
rear->next = p;
rear = p;
}
rear->next = NULL;
return head;
}
void showList(LinkList head)
{
system("cls");
ListNode *p;
p=head->next;
printf("\n学号 姓名 性别 宿舍号 床位号 年龄 专业 电话\n");
printf("------------------------------------------------------------------\n");
while(p!=NULL)
{
printf("%d %s %s %s %s %s %s %s\n",p->data.num,p->data.name,p->data.gender,p->data.roomnum,p->data.bednum,p->data.age,p->data.spe,p->data.phone);
printf("------------------------------------------------------------------\n");
p=p->next;
}
system("pause");
}
void sortList(LinkList head) { // head为链表的头结点
ListNode *p,*s,*pt;
p=head->next;
s=p->next;
while(p->next != NULL) {
while(s->next != NULL) {
if(p->next->data.num > s->next->data.num)
{
pt->next = p->next;
p->next = s->next->next;
s->next = pt->next;
}
s = s->next;
}
p = p->next;
pt = s;
}
system("pause");
}
int insertNode(LinkList head,ListNode *p,int i)
{
system("cls");
ListNode *p1;
int j=1;
p1=head;
if(p1->next==NULL)
{
if(i==0)
{
p1->next=p;
p->next=NULL;
}
else
return 1;
}
while((j<=i-1)&&(p1!=NULL))
{
p1=p1->next;
j++;
}
if(p1==NULL)
return 1;
p->next=p1->next;
p1->next=p;
system("pause");
}
ListNode *findList(LinkList head)
{
system("cls");
ListNode *p;
long int num;
char name[9];
int a;
printf("===========================\n");
printf("1、按学号查询\n");
printf("2、按姓名查询\n");
printf("===========================\n");
printf(" 请选择: ");
p=head->next;
scanf("%d",&a);
if (a==1)
{
printf("学号:");
scanf("%s",num);
while((p && strcmp(p->data.num,num)!=0))
p=p->next;
}
else
if (a==2)
{
printf("姓名:");
scanf("%s",name);
while (p && strcmp(p->data.name,name)!=0)
p=p->next;
}
return p;
system("pause");
}
void deleteNode(LinkList head)
{
system("cls");
ListNode *p,*q;
p=findList(head);
if(p==NULL)
{
printf("没有查到学生信息");
system("pause");
return;
}
q=head;
while(q!=NULL && q->next!=p) q=q->next;
q->next=p->next;
free(p);
fflush(stdin);
printf("该学生信息已删除!\n");
system("pause");
}
ListNode *deleteList(LinkList head)
{
system("cls");
ListNode *p;
long int num;
char name[9];
int a;
printf("===========================\n");
printf("1、按学号删除\n");
printf("2、按姓名删除\n");
printf("===========================\n");
printf(" 请选择: ");
p=head->next;
scanf("%d",&a);
if (a==1)
{
printf("学号:");
scanf("%s",num);
while((p && strcmp(p->data.num,num)!=0))
p=p->next;
}
else
if (a==2)
{
printf("姓名:");
scanf("%s",name);
while (p && strcmp(p->data.name,name)!=0)
p=p->next;
}
return p;
system("pause");
}
bool campare(char *a,char *b)
{
int i=0;
int j=0;
while(*(a+i)!=NULL)
{
i++;
}
while(*(b+j)!=NULL)
{
j++;
}
if(i==j)
{
for(int k=0;k<i;k++)
{
if(*(a+k)!=*(b+k))
return false;
}
return true;
}
return false;
}
void main()
{
system( "color 3A ");
char id[20]="0";
char password[20]="0";
printf("\n");
printf("\n");
printf("\n");
printf("\t\t ——————————————————\n");
printf("\t\t| 西邮宿舍管理系统 |\n");
printf("\t\t ——————————————————\n");
printf("\t\t\t请输入帐户名:");
scanf("%s",id);
while(!campare(id,"armo"))
{
printf("\t\t\t您的帐户不对\n\t\t\t请输入帐户:");
scanf("%s",id);
}
printf("\t\t\t请输入密码:");
scanf("%s",password);
while(!campare(password,"jing"))
{
printf("\t\t\t您的密码不对\n\t\t\t请重新密码:");
scanf("%s",password);
}
printf("\t\t\t系统密码解除,");
system("pause");
ListNode *p;
int i;
while(1){
switch(menu())
{
case 1:head = inputList();break;
case 2:showList(head); break;
case 3:p=findList(head);
if(p!=NULL)
{
printf("\n学号 姓名 性别 宿舍号 床位号 年龄 专业 电话\n");
printf("------------------------------------------------------------------\n");
printf("%s %s %s %s %s %s %s %s\n",p->data.num,p->data.name,p->data.gender,p->data.roomnum,p->data.bednum,p->data.age,p->data.spe,p->data.phone);
printf("------------------------------------------------------------------\n");
system("pause");
}
else
{ printf("没查到要查询的学生信息!");
system("pause");
}
break;
case 4:p=(ListNode *)malloc(sizeof(ListNode));
printf("学号:");
scanf("%d",p->data.num);
printf("姓名:");
scanf("%s",p->data.name);
printf("性别:");
scanf("%s",p->data.gender);
printf("宿舍号:");
scanf("%s",p->data.roomnum);
printf("床位号:");
scanf("%s",p->data.bednum);
printf("年龄:");
scanf("%s",p->data.age);
printf("专业:");
scanf("%s",p->data.spe);
printf("电话:");
scanf("%s",p->data.phone);
printf("请输入要插入的位置:\n");
fflush(stdin);
scanf("%d",&i);
if(insertNode(head,p,i)==1)
{
printf("没有合适的插入点!\n");
system("pause");
}
else
{
printf("插入完成\n");
}
break;
case 5:deleteNode(head);break;
case 7:sortList(&head);break;
case 6:printf("退出程序!\n");getchar();return;
}
}
}