70,023
社区成员




#include <stdio.h>
#include <string.h>
#include <malloc.h>
void Gain(int t);
void Insert();
void Del();
void Change();
void Seek();
void All();
int List();
typedef struct dzzz{
int num;
char name[12];
int zw;
}DATA;
struct node{
DATA data;
struct node *next;
}*head,*tail;
int main(){
int t,x;
printf("请输入学生数目:\n");
scanf("%d",&t);
Gain(t);
while(1){
x=List();
if(x==1)
Insert();
else if(x==2)
Seek();
else if(x==3)
Del();
else if(x==4)
Change();
else if(x==5)
All();
else
break;
}
return 0;
}
void Gain(int t){
head=(struct node*)malloc(sizeof(struct node));
tail =head;
head->next=NULL;
while(t--){
tail=tail->next;
printf("第%d名同学的学号 名字 座号为:\n");
scanf("%d%s%d",&tail->data.num,tail->data.name,&tail->data.zw);
}
tail->next=NULL;
tail=head;
}
void Insert(){
struct node *s,*p;
int j=0;
p=head;
printf("请输入学号 姓名 座号:\n");
scanf("%d%s%d",&s->data.num,s->data.name,&s->data.zw);
while(j<s->data.num-1&&p!=NULL){
p=p->next;
j++;
}
if(p==NULL){
printf("无法插入数据!\n");
}else{
s->next=p->next;
p->next=s;
printf("数据插入成功!\n");
}
}
void Del(){
struct node *h,*p;
int j=0;
printf("请输入要删除的数据:\n");
p=head;
scanf("%d%s%d",&h->data.num,h->data.name,&h->data.zw);
while(j<h->data.num-1&&p!=NULL){
p=p->next;
j++;
}
if(h==NULL)
printf("无法删除数据!\n");
else
p->next=p->next->next;
}
void Change(){
struct node *p,*y;
int t=0;
p=head;
printf("请输入您要更改的信息:学号,姓名,座号\n");
scanf("%d%s%d",&y->data.num,y->data.name,&y->data.zw);
while(t<y->data.num-1&&p!=NULL){
p=p->next;
t++;
}
y->next=p->next->next;
p->next=y;
printf("修改成功!\n");
}
void Seek(){
int x;
char t;
int numm;
char xmm[12];
struct node *p;
p=head->next;
printf("请输入1.姓名或2.学号:\n");
while(1){
scanf("%d",&x);
if(x==1){
scanf("%s",xmm);
while(strcmp(xmm,p->data.name)!=0){
p=p->next;
}
printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
}else if(x==2){
scanf("%d",&numm);
while(numm!=p->data.num){
p=p->next;
}
printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
}else
printf("输入错误!\n");
printf("结束输入时请输入:N/n\n");
scanf("%c",&t);
if(t=='n'||t=='N')
break;
}
}
void All(){
struct node *p;
p=head;
while(p!=NULL){
p=p->next;
printf("学号:%d 姓名:%s 座号:%d\n",p->data.num,p->data.name,p->data.zw);
}
}
int List(){
int t;
printf(" --------------------------|----------------|--------------------------\n");
printf(" --------------------------|学生宿舍管理系统|--------------------------\n");
printf(" --------------------------|----------------|--------------------------\n");
printf(" ----------------------------1.插入学生信息----------------------------\n");
printf(" ----------------------------2.查询学生信息----------------------------\n");
printf(" ----------------------------3.删除学生信息----------------------------\n");
printf(" ----------------------------4.更改学生信息----------------------------\n");
printf(" ----------------------------5.查看全部信息----------------------------\n");
printf("请输入序号:\n");
while(1){
scanf("%d",&t);
if(t>6||t<1)
printf("请重新输入\n");
else
break;
}
return t;
}
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct{
int num;
char name[10];
int zw;
}DATATYPE;
typedef struct node{
DATATYPE data;
struct node *next;
}NODE;
int FullList();
void SeekList(NODE* head);
void InsertList(NODE* head);
void DeleteList(NODE* head);
void ChangeList(NODE* head);
void AllList(NODE* head);
int main()
{
NODE *head,*p,*s;
int tm;
head=(NODE*)malloc(sizeof(NODE));
head->next=NULL;
s = head;
printf("请输入学生人数:\n");
scanf("%d", &tm);
while(tm--){
printf("请依次输入 学号 姓名 座号\n");
p=(NODE*)malloc(sizeof(NODE));
scanf("%d%s%d",&p->data.num,p->data.name,&p->data.zw);
s->next = p;
s = p;
}
p->next=NULL;
while(1){
switch(FullList()){
case 1:
InsertList(head);
break;
case 2:
SeekList(head);
break;
case 3:
DeleteList(head);
break;
case 4:
ChangeList(head);
break;
case 5:
AllList(head);
break;
default:
break;
}
}
return 0;
}
int FullList(){
int t;
printf(" --------------------------|----------------|--------------------------\n");
printf(" --------------------------|学生宿舍管理系统|--------------------------\n");
printf(" --------------------------|----------------|--------------------------\n");
printf(" ----------------------------1.插入学生信息----------------------------\n");
printf(" ----------------------------2.查询学生信息----------------------------\n");
printf(" ----------------------------3.删除学生信息----------------------------\n");
printf(" ----------------------------4.更改学生信息----------------------------\n");
printf(" ----------------------------5.查看全部信息----------------------------\n");
printf("请输入序号:\n");
while(1){
scanf("%d", &t);
if(t >= 6||t<1)
printf("请重新输入\n");
else
break;
}
return t;
}
void SeekList(NODE* head){
int x;
char t;
int numm;
char xmm[12];
NODE *p;
p=head->next;
printf("请输入1.姓名或2.学号:\n");
while(1){
scanf("%d",&x);
if(x==1){
scanf("%s",xmm);
while(strcmp(xmm,p->data.name)!=0){
p=p->next;
}
printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
}else if(x==2){
scanf("%d",&numm);
while(numm!=p->data.num){
p=p->next;
}
printf("%d,%s,%d\n",p->data.num,p->data.name,p->data.zw);
}else
printf("输入错误!\n");
printf("结束输入时请输入:N/n\n");
scanf("%c",&t);
if(t=='n'||t=='N')
break;
}
}
void InsertList(NODE *head){
NODE *s,*p;
int j=0;
p = head;
s = (NODE *)malloc(sizeof(NODE));
if (!s)
exit(0);
printf("请输入学号 姓名 座号:\n");
scanf("%d%s%d",&s->data.num,s->data.name,&s->data.zw);
while(j<s->data.num-1 && p){
p = p->next;
j++;
}
if(p==NULL){
printf("无法插入数据!\n");
}else{
s->next = p->next;
p->next = s;
printf("数据插入成功!\n");
}
}
void DeleteList(NODE* head)
{
NODE *p, *s;
int num;
printf("请输入要删除的数据(学号):\n");
s = head;
p = head->next;
scanf("%d",&num);
while (p && num != p->data.num) {
p = p->next;
s = s->next;
}
if (!p) {
printf("无法删除数据!\n");
} else {
s->next = p->next;
free(p);
}
/*
while(j<h.data.num-1&&p!=NULL){
p = p->next;
j++;
}
if(h==NULL)
printf("无法删除数据!\n");
else
p->next=p->next->next;
*/
}
void AllList(NODE* head){
NODE *p;
p=head->next;
while(p) {
printf("学号:%d 姓名:%s 座号:%d\n",p->data.num,p->data.name,p->data.zw);
p = p->next;
}
}
void ChangeList(NODE* head)
{
NODE *p;
DATATYPE y;
p = head->next;
printf("请输入您要更改的信息:学号,姓名,座号\n");
scanf("%d%s%d",&y.num,y.name,&y.zw);
while (p && p->data.num != y.num) {
p = p->next;
}
if (!p) {
printf("没有找到!\n");
} else {
memcpy(&p->data, &y, sizeof(DATATYPE));
}
/*
while(t<y->data.num-1&&p!=NULL){
p=p->next;
t++;
}
y->next=p->next->next;
p->next=y;
*/
printf("修改成功!\n");
}
参考一下吧