C语言学生信息管理系统源代码Word文档格式.docx
《C语言学生信息管理系统源代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统源代码Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
CLS"
);
head1=NULL;
p1=(STD*)malloc(LEN);
p2=p1;
printf("
建表方法1追加法建表!
\n"
输入学号姓名,若输入学号为0则退出建表!
scanf("
%d%s"
&
p1->
num,p1->
name);
while(p1->
num!
=0)
{n++;
if(n==1)
head1=p1;
else
p2->
next=p1;
}
free(p1);
p2->
next=NULL;
%*c"
按回车键继续!
getchar();
return;
}
/*插入法建表*/
voidcreat2(void)
{STD*p1;
head2=NULL;
建表方法2插入法建表!
输入学号姓名(输入学号以0结束)!
{p1->
next=head2;
head2=p1;
/*链表输出*/
voidprint(STD*head)
{STD*p;
p=head;
while(p!
=NULL)
{printf("
学号%3d姓名%s\n"
p->
num,p->
p=p->
next;
链表为空!
/*-------------------------------------------------*/
/*--------------表1插入结点函数-------*/
/*-------------------------------------------------*/
voidgame4()
{
charch;
STD*stud,*head=head1;
system("
printf("
\t仅限在表1中插入!
\t输入要插入结点的学号和姓名(以空格隔开):
"
stud=(STD*)malloc(LEN);
scanf("
stud->
num,&
if(stud->
num<
0)
{printf("
\t输入的学号不能为负数,请重新选择插入!
return;
}
while(stud->
num>
{
head1=insert(head,stud);
printf("
\t继续插入新结点吗?
(y/n):
ch=getchar();
if(ch=='
y'
||ch=='
Y'
)
{printf("
\t输入新结点学号姓名:
(输入n结束插入)"
stud=(STD*)malloc(LEN);
scanf("
}
else
break;
\t输入回车键返回!
getchar();
system("
/*--------------表2插入结点函数-------*/
voidgame2()
STD*stud,*head=head2;
\t仅限在表2中插入!
head2=insert2(head,stud);
/**************************************/
/*插入模块*/
STD*insert(STD*head,STD*stud)
{
STD*p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL)
{head=p0;
p0->
{while((p0->
num)&
&
(p1->
next!
=NULL))
p1=p1->
if(p0->
=p1->
num)
if(head==p1)head=p0;
elsep2->
next=p0;
p0->
p1->
}n=n+1;
return(head);
/*插入模块2*/
STD*insert2(STD*head,STD*stud)
/*--------------表1删除学生信息-------*/
voidgame3()
STD*head=head1;
\t仅限在表1中删除!
\t输入要删除的学号:
%ld"
num);
if(num<
\t输入的学号不能为负数,请重新选择删除!
while(num>
{head=head1;
head1=delete(head,num);
\t继续删除吗?
(输入n结束删除!
)"
/*--------------表2删除学生信息-------*/
voidgame5()
STD*head=head2;
\t仅限在表2中删除!
{head=head2;
head2=delete(head,num);
/*删除模块*/
STD*delete(STD*head,longnum)
{STD*p1,*p2;
if(head==NULL){printf("
\n没有找到该学号!
returnhead;
p1=head;
while(num!
num&
{p2=p1;
p1=p1->
if(num==p1->
{if(p1==head)head=p1->
next=p1->
\n删除:
%ld\n"
num);
n=n-1;
else
printf("
\n没有发现此项!
\n"
return(head);
/*--------------表1查找学生信息-------*/
voidgame1()
\t仅限在表1中查找!
\t输入要查找的学号:
\t输入的学号不能为负数,请重新查找!
head1=search(head,num);
\t继续查找吗?
%d"
(输入n结束查找)"
/*--------------表2查找学生信息-------*/
voidgame6()
\t仅限在表2中查找!
head2=search(head,num);
/*查找模块*/
STD*search(STD*head,longnum)
\n%d%s\n"
p1->
/*voidmain()
***运行结果***\n"
creat1();
print(head1);
creat2();
print(head2);
}*/
//******************************
//*select.cpp:
主程序文件*
voidmain()
handle_menu1();
//*****************************
//*菜单处理函数*
voidhandle_menu1()
inth;
for(;
;
h=menu_select();
switch(h)
{case1:
/*printf("
\t进入追加法建表\n"
*/
break;
/*调用功能模块*/
case2:
/*printf("
\t进入插入法建表\n"
creat2();
case3:
\t输出追加法链表的结果\n"
print(head1);
case4:
\t输出插入法链表的结果\n"
print(head2);
case5:
\t链表1插入\n"
game4();
case6:
\t链表2插入\n"
game2();
case7:
\t链表1删除\n"
game3();
case8:
\t链表2删除\n"
game5();
case9:
\t链表1查找\n"
game1();
case10:
\t链表2查找\n"
game6();
case11:
\t再见,欢迎再次使用本系统!
谢谢!
return;
//**********************************
//*菜单选择函数:
intmenu_select()*
intmenu_select()
intcn;
for(;
\\n"
\t1.追加法建表\n"
\t2.插入法建表\n"
\t3.输出链表1\n"
\t4.输出链表2\n"
\t5.插入链表1\n"
\t6.插入链表2\n"
\t7.删除链表1\n"
\t8.删除链表2\n"
\t9.查找链表1\n"
\t10.查找链表2\n"
\t11.退出系统\n"
\t请您选择1-11:
cn);
//gets(s);
//cn=atoi(s);
if(cn<
1||cn>
11)
\n\t输入错误,重选1-11:
else
break;
returncn;