写的很烂有查询修改,
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
//include <.h>
typedef struct xuesheng
{
char xuehao[20]; //学号;
char xingming[20]; //姓名;
char haoma[20]; //号码;
char dizhi[20]; //地址;
char banji[20]; //班级;
struct xuesheng *next;
}XTONG;
XTONG *head; //指针头
void Creat(XTONG *head) //增添函数;
{
while (1) {
XTONG *p, *tail, *q;//q过程变量;
tail = head;
while (tail->next != NULL)
{
tail = tail -> next; //尾插法//找尾节点 ;
}
q = head->next;
int a = 0;
char xuehao1[20];
printf("请输入学生号\n");
scanf("%s",xuehao1);
if(strlen(xuehao1)>6)//
{
printf("请输入范围内学号");
continue;
}
while (q != NULL)
{
if (strcmp(q->xuehao, xuehao1) == 0)
{
a = 1;
printf("学号重复无法输入\n");
break;
}
else
{
q = q->next;
}
}
if (a == 1)
{
continue;
}
else
{
printf("没有重复符合要求\n");//break;
}
p = (XTONG*)malloc(sizeof(XTONG));//给节点开辟内存
strcpy(p->xuehao, xuehao1);
printf("输入姓名\n");
scanf("%s", p->xingming);
printf("输入班级\n");
scanf("%s", p->banji);
printf("号码\n");
scanf("%s", p->haoma);
printf("地址\n");
scanf("%s", p->dizhi);
p->next = NULL;//执行链表操作
tail->next = p;//执行链表操作
int i;
printf("是否继续添加\n添加输入1结束输入0\n");
while (1)
{
scanf("%d", &i);
if (i == 1 || i == 0)
{
break;
}
else
{
printf("请输入1或0\n");
continue;
}
}
if (i == 0)
{
system("pause");
system("cls");
break;
}
}
XTONG *c,*b,*tail; //对班级进行排序;
int x=0,n,i;
b=head;
while(b->next!=NULL)
{
x++;
b=b->next;
}
for(int i=0;i<x-1;i++)//冒泡排序
{
c=head->next;
b=c->next;
tail=head;
for(int n=0;n<x-1-i;n++)
{
if(strcmp(c->banji,b->banji)>0)
{
c->next=b->next; //进行交换;
b->next=c;
tail->next=b;
}
tail=tail->next;
c=tail->next;
b=c->next;
}
}
}
void Show(XTONG *head)
{
XTONG *p1 = head->next;
while (p1 != NULL) {
printf("学号: %s\n", p1->xuehao);
printf("姓名: %s\n", p1->xingming);
printf("班级: %s\n", p1->banji);
printf("号码: %s\n", p1->haoma);
printf("地址: %s\n\n", p1->dizhi);
p1 = p1->next;
}
system("pause");
system("cls");
}
void Delete(XTONG *head)
{
XTONG *qh = NULL, *h = NULL;
char xuehao1[20];
printf("请输入要删除的学生学号:\n");
scanf("%s", xuehao1);
qh = head;
h = head->next;
int a = 0;
while (h != NULL)
{
if (strcmp(h->xuehao, xuehao1) == 0)
{
qh->next=h->next;
free(h);//释放此内存
a = 1;
break;
}
qh=h;
h=h->next;
}
if (a==1)
{
printf("删除成功\n");
}
else
{
printf("没有找到这个学生,删除失败\n");
}
system("pause");
system("cls");
}
void Search(XTONG *head) //查找函数;
{
XTONG *q = NULL;
q = head->next;
int a = 0, b = 0;
printf("\t\t**************************\n\t\t* 欢迎使用查询系统 *\n");
printf("\t\t* 学生学号查询 *\n");
printf("\t\t**************************\n");
char xuehao1[20];
printf("输入你要查学生的学号\n");
scanf("%s", xuehao1);
while (q != NULL) {
if (strcmp(q->xuehao,xuehao1) == 0) {
printf("学号: %s\n", q->xuehao);
printf("姓名: %s\n", q->xingming);
printf("班级: %s\n", q->banji);
printf("号码: %s\n", q->haoma);
printf("地址: %s\n", q->dizhi);
b = 1;
}
q = q->next;
}
if (b == 1) {
printf("查询成功\n");
} else if(b == 0){
printf("查无此人\n");
}
system("pause");
system("cls");
getchar();
};
void Change(XTONG *head) //更改函数;
{
XTONG *q = NULL;
XTONG *q1;
q = head->next;
int a = 0;
while (1) {
printf("\t\t**************************\n");
printf("\t\t* 欢迎使用修改系统 *\n");
printf("\t\t* 请输入学生号修改 *\n");
printf("\t\t**************************\n");
char xuehao1[20];
printf("请输入学生号\n");
scanf("%s", xuehao1);
if(strlen(xuehao1)>6)//
{
continue;
}
if(q==NULL) //
{ //
printf("请先增加数据!"); //
break;
system("pause");
system("cls"); //
} //
while (q != NULL)
{
if (strcmp(q->xuehao, xuehao1) == 0)
{
int x = 0;
q1 = head->next;
while (x == 0)
{
char xuehao2[20];
a = 0;
printf("请重新输入学生号\n");//gai
scanf("%s", xuehao2);
while (q1 != NULL) {
if (strcmp(q1->xuehao, xuehao2) == 0) {
a = 1;
printf("学生号重复无法输入\n");
break;
} else {
q1 = q1->next;
}
}
if (a == 0) {
printf("没有重复符合要求\n");
x = 1;
} else if (a == 1) {
continue;
}
strcpy(q->xuehao, xuehao2);
}
a=0;
printf("输入姓名\n");
scanf("%s", q->xingming);
printf("输入班级\n");
scanf("%s", q->banji);
printf("号码\n");
scanf("%s", q->haoma);
printf("住址\n");
scanf("%s", q->dizhi);
}
else
{
q=q->next;
}
}
if (a == 0)
{
printf("修改成功\n");
}
else
{
printf("修改失败\n");
}
break;
}
system("pause");
system("cls");
}
void baocun(XTONG *head)
{
FILE *fp=fopen("D:\\学生管理系统信息.txt","w+");
XTONG *p;
p=head->next;
if(fp==NULL)
{
printf("保存失败");
exit(1);
}
while(p!=NULL)
{
fprintf(fp,"%s\n",p->xuehao);
fprintf(fp,"%s\n",p->xingming);
fprintf(fp,"%s\n",p->banji);
fprintf(fp,"%s\n",p->haoma);
fprintf(fp,"%s\n",p->dizhi);
p=p->next;
}
printf("保存成功.\n");
fclose(fp);
getchar();
}
int tui=0; //退出
void CHUSHI() //选择函数;
{
system("pause");
system("cls");
while (1)
{
printf("\t\t**************************************************\n");
printf("\t\t*******************学生通讯系统*******************\n");
printf("\t\t**************************************************\n");
printf("\t\t 1、新增学生信息并保存\n");
printf("\t\t 2、显示所有学生信息\n");
printf("\t\t 3、查询学生信息\n");
printf("\t\t 4、修改学生信息\n");
printf("\t\t 5、删除学生信息\n");
printf("\t\t 6、保存学生信息\n");
printf("\t\t 0、退出系统\n");
printf("\t\t请输入你的选择\n");
int a;
while (scanf("%d", &a) == 0 || getchar() != '\n'||a>7)
{
printf("您输入的超出范围,请重新输入:");
while (getchar() != '\n'); // 清除缓存区
}//
system("cls");
switch (a)
{
case 1:
Creat(head);
break;
case 2:
Show(head);
break;
case 3:
Search(head);
break;
case 4:
Change(head);
break;
case 5:
Delete(head);
break;
case 6:
baocun(head);
break;
case 0:
tui = 1;
printf("感谢你使用学生通信录管理系统,请关掉程序!!!\n");
break;
}
if(tui==1)
{
break;
}
}
}
int main()
{
system("color 9");
head = (XTONG*)malloc(sizeof(XTONG)); //开辟头
head->next = NULL;
char ZH1[20],ZH2[20];
char zh[20]="./";
char MM1[20],MM2[20];
char mm[20]="./";
int i=1,j=0;
while(i==1)
{
printf("\t\t**************************************************\n");
printf("\t\t******************学生通讯管理系统****************\n");
printf("\t\t**************************************************\n");
printf("\t\t请选择\n\t\t1.登录\n\t\t2.注册\n\t\t");
char xuanze[20];
scanf("%s",xuanze);
if
(strcmp(xuanze,"1")==0&& strcmp(ZH1, zh) != 0 && strcmp(MM1,mm) != 0) {
printf("\t\t请输入学生通信录管理系统的账号:\n");
printf("\t\t");
printf("账号:");
scanf("%s", ZH2);
printf("\t\t请输入学生通信录管理系统的密码:\n");
printf("\t\t");
printf("密码:");
scanf("%s",MM2);
for (;;) {
if (strcmp(ZH1, ZH2) != 0 || strcmp(MM1,MM2) != 0) {
printf("\t\t账号密码错误\n\t\t重新输入账号:");
scanf("%s", ZH2);
printf("\t\t密码:");
scanf("%s", MM2);
j++;
if (j == 4) {
break;
}
} else {
printf("成功登陆\n");
i = 0;
break;
}
}
} else if (strcmp(xuanze,"2")==0) {
printf("\t\t请输入创建的账号");
scanf("%s", ZH1);
printf("\t\t请输入创建的密码");
scanf("%s", MM1);
system("pause");
system("cls");
continue;
} else {
printf("\t\t请输入1或2\n");
system("pause");
system("cls");
continue;
}
if (j == 4) {
printf("\t\t输入错误过多,程序关闭");
break;
}
CHUSHI();
if (tui == 1) {
break;
}
system("pause");
system("cls");
}
return 0;
}