c语言用链表添加学生信息

Python012

c语言用链表添加学生信息,第1张

#include <stdio.h>

#include <string.h>

# include "stdlib.h"

#define LEN sizeof(struct stu)

struct stu

{

long num

char name[20]

char sex 

int age

char addr[30]

struct stu *next

}

int main()

{

int n

struct stu *head

struct stu *p1,*p2

head=(struct stu*)malloc (LEN)

head->next=NULL

p1=head

p2=(struct stu*)malloc (LEN)

p2->next=NULL

printf("学号\t姓名\t性别\t年龄\t住址\n")

scanf("%ld,\t%s,\t%c,\t%d,\t%s",&p2->num,&p2->name,&p2->sex,&p2->age,&p2->addr)

while(p2->num!=0)

{

p1->next=p2

p1=p2

fflush(stdin)

p2=(struct stu*)malloc (LEN)

printf("学号\t姓名\t性别\t年龄\t住址\n")

scanf("%ld,%s,%c,%d,%s",&p2->num,&p2->name,&p2->sex,&p2->age,&p2->addr)

}

}

纯手打,希望采纳。

#define N 100 //定义结构体 struct student { int stuNumchar name[20]int ssNum}stu[N]//参数1: 将已经有两条记录的结构体当作参数传入,用来检索 //参数2: 讲你要插入位置的学生编号传入,用来定位 //参数3: 你已经录入数据的结构体的实际长度,以防循环检索时间索引溢出 void insert(struct student temp[], int insertNum, int allStuCount) { int i, jfor(i = 0i <allStuCounti++) { if(tempStu.stuNum == insertNum) { break} } for(j = nj >= ij--) { temp[j+1] = temp[j]} temp[i] = tempStu} 这只是部分的,输入和输入函数自己考虑怎么写吧~·加油....

#include<iostream.h>

#include<iomanip.h>

#include<windows.h>

#include <conio.h>

void back()//返回开始菜单

void out()//输出信息

int w=1//用于记录学生人数,全局变量

class Data//日期类

{public:

double Year,Month,Day

Data()

{ Year=0Month=0Day=0 }

}

class student //学生类

{

public:

char name[10]//姓名

char sex[5]//性别

char jiguan[10]//籍贯

int num,age//学号,年龄

char adr[30]//住址

Data year

friend class Data//date作为student的友元 //定义一个日期类

void operator=(student s)//=重载

int operator == (student s)//==重载

}stu[100]

void main()

{

system("cls")//清屏 DOC调用

system("color f4")//颜色 同样是调用doc

int i

void comp()

void input()

void find()

void alt()

void del()

void exit()

void show()

cout<<setw(53)<<"欢迎进入学生管理系统!"<<endl

cout<<setw(55)<<"1 添加学生信息 2 查询学生信息"<<endl<<endl

cout<<setw(55)<<"3 删除学生信息 4 修改学生信息"<<endl<<endl

cout<<setw(55)<<"5 比较学生信息 6 显示学生信息"<<endl<<endl

cout<<setw(45)<<"0 推出系统"<<endl

cout<<"请选择:"

cin>>i

if(i>6||i<0)

{

cout<<"输入有误!"<<endl

back()

}

switch(i)

{

case 1:input()break

case 2:find()break

case 3:del()break

case 4:alt()break

case 5:comp()break

case 6:show()break

case 0:exit()break

default:cout<<"你的输入有误!\n"

}

}

void input() //添加学生

{

system("color 84")//颜色 同样是调用doc

system("cls")//清屏

int n

cout<<"请输入要添加的学生个数:\n"

cin>>n

if(n>=100||n<=0)

{cout<<"输入有误!<<endl"

main()}

else

{

for(n>0w++,n--)

{

cout<<"请输入姓名、性别、籍贯,年龄,学号,住址:"<<endl

cin>>stu[w].name>>stu[w].sex>>stu[w].jiguan>>stu[w].age >>stu[w].num>>stu[w].adr

cout<<"请输入该生生日(年 月 日)"<<endl

cin>>stu[w].year.Year

cin>>stu[w].year.Month

cin>>stu[w].year.Day

}

out()

}

cout<<"添加完毕2秒后返回"<<endl

Sleep(2000)//延时2秒

main()

}

void find() //按学号查找学生

{

system("color f4")//颜色 同样是调用doc

system("cls")

int i,id,j=0//j是用以记录是否有信息被找到

cout<<"请输入你要查找学生的学号:"

cin>>id

for(i=1i<wi++)

if(stu[i].num ==id)

{

cout<<i<<" "<<stu[i].name<<" "<<stu[i].sex<<" "<<stu[i].jiguan<<" "<<stu[i].age<<" "<<stu[i].num<<" "<<stu[i].year.Year<<" "<<stu[i].year.Month<<" "<<stu[i].year.Day<<stu[i].adr<<endl

j++

}

if(j==0)

cout<<"没有你要查找的信息"

back()

}

void del()//删除指定学号学生信息

{

system("color f4")//颜色 同样是调用doc

int i,a,y=0

char x

cout<<"请输入要删除的学生学号"

cin>>a

for(i=1i<wi++)

if(stu[i].num==a)

{

cout<<"该生情况:"<<endl

cout<<i<<" "<<stu[i].name<<" "<<stu[i].sex<<""<<stu[i].jiguan<<" "<<stu[i].age<<" "<<stu[i].num<<" "<<stu[i].year.Year<<" "<<stu[i].year.Month<<" "<<stu[i].year.Day<<" "<<stu[i].adr<<endl

cout<<"是否确认删除?(Y/N)"<<endl

cin>>x

if(x=='Y'||x=='y')

{

y++

for(i<w-1i++)

stu[i]=stu[i+1]

w--//每删除一个对总是减少一个

}

}