C语言课程设计学生宿舍管理系统Word文档格式.docx
《C语言课程设计学生宿舍管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生宿舍管理系统Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
![C语言课程设计学生宿舍管理系统Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/28/399056d7-8810-4d5d-9d93-3c7972fd9ec5/399056d7-8810-4d5d-9d93-3c7972fd9ec51.gif)
按整体统计,统计所有学生人数,男生人数和女生人数。
四、概要设计
1.系统结构图(功能模块图)
2.功能模块说明:
(1).数据录入:
创建单链表,调用Initnode()函数申请头结点,在调用append(),在调用Write_to_File()函数将信息写入文件中,
(2)插入模块:
先将文件信息读出,再调用insert()函数,可以向文件中插入信息。
(3)插入模块:
先将文件信息读出,再调用del()函数,可以将输入错误或者
需要的信息删除。
(4)修改模块:
先将文件信息读出,再调用modify()函数,将输入错误的信息修改。
(5)查询模块:
先将文件信息读出,再调用search(),在search()中有调用两个
数,一个按照宿舍信息查询sushe_search(),需要楼号和宿舍号,一个按照生信息查询xuehao_search()需要学生学号或者姓名。
(6)排序模块:
先将文件信息读出,再调用sort(),按照学生学号排序,拍完续没有直接写入文件,如果要直接写入调用文件读入函数Write_to_File().
(7)统计模块:
先将文件信息读出,再调用tongji()函数,统计了女生人数和男生人数,还统计了总人数.
五.详细过程和运行结果:
删除模块
开始
输入要删除学生的学号num
p->
num:
num
删除该学生信息
结束
组织循环,扫描存储学生信息的链表
!
=
==
插入模块
查找模块
选择查找方式
按学生学号查找
输入要查找的学生学号num
输出该学生的信息
按宿舍信息查找
输入要查找的学生lounum,sushenum,chuangnum
lounum:
sushenu
sushenum:
chuangnum:
chuangnum
组织循环,扫描存储学生信息的链表表
=
修改模块
排序模块
统计模块
Count1++
Count2++
六.参考文献:
《C语言程序设计》:
曙燕
七.源代码
#include<
stdio.h>
stdlib.h>
string.h>
//#include<
conio.h>
typedefstructStudent
{
intnum;
/*学号*/
charname[15];
/*姓名*/
charsex;
/*性别*/
charzhuanye[20];
/*专业*/
intlounum;
/*楼号*/
intsushenum;
/*宿舍号*/
intchuangnum;
/*床号*/
structStudent*next;
}Stu;
voidWrite_to_File(Stu*L)/*将信息写入文件*/
FILE*fp;
Stu*p;
fp=fopen("
sushe.txt"
"
w"
);
if(fp==NULL)
{
printf("
打开失败!
"
getchar();
getchar();
exit(0);
}
p=L->
next;
while(p)
fprintf(fp,"
%d%s%c%s%d%d%d\n"
p->
num,p->
name,p->
sex,p->
zhuanye,p->
lounum,p->
sushenum,p->
chuangnum);
p=p->
fclose(fp);
}
voidInitStu(Stu**h)/*创建头结点*/
(*h)=(Stu*)malloc(sizeof(Stu));
if(h==NULL)
创建失败!
!
(*h)->
next=NULL;
voidappend()/*录入学生信息*/
Stu*head;
Stu*p,*q;
charch;
InitStu(&
head);
q=head;
while
(1)
system("
clear"
printf("
请录入学生信息\n"
p=(Stu*)malloc(sizeof(Stu));
\n学号:
scanf("
%d"
&
num);
\n姓名:
%s"
name);
\n性别:
%c"
sex);
\n专业:
zhuanye);
\n楼号:
lounum);
\n宿舍号:
sushenum);
\n床号:
p->
next=q->
q->
next=p;
q=p;
按任意键继续录入,按0结束录入"
ch=getchar();
if(ch=='
0'
)
break;
Write_to_File(head);
}
voidRead_from_File(Stu*h)/*读出文件信息*/
inti;
r"
打开失败"
q=h;
while(!
feof(fp))
p=(Stu*)malloc(sizeof(Stu));
i=fscanf(fp,"
name,&
sex,
p->
zhuanye,&
lounum,&
sushenum,&
if(i==EOF)
break;
next=NULL;
intdisplay()/*显示文件信息*/
Stu*head=NULL;
Read_from_File(head);
//printf("
ok!
\n"
p=head->
system("
if(!
p)
无容!
\n按任意键键返回\n"
return0;
学号姓名性别专业楼号宿舍号床号\n\n"
%-8d%-10s%-6c%-14s%-8d%-8d%-5d\n"
sex,p->
zhuanye,
\n按任意键返回\n"
return1;
voiddel()/*删除学生信息*/
charch,h;
intN;
intlounum,sushenum,chuangnum;
do
\n1.根据学生学号删除\n"
\n2.根据宿舍信息删除\n"
\n请选择删除式:
scanf("
&
ch);
while
(1)
{
if(ch=='
1'
{
printf("
\n请输入学生学号:
scanf("
N);
while(p)
{
if(p->
num==N)
{
q->
next=p->
printf("
删除成功!
break;
}
q=p;
p=p->
}
if(p==NULL)
printf("
\n未找到此学生"
break;
}else
{
free(p);
}
}
elseif(ch=='
2'
\n请输入宿舍信息(楼号宿舍床号):
%d%d%d"
while(p!
=NULL)
lounum==lounum&
&
sushenum==sushenum&
chuangnum)
{
未找到此学生"
}
\n\n是否继续:
Y/N?
h);
}while(h=='
Y'
||h=='
y'
voidinsert()/*用头插法插入学生信息*/
Stu*p,*head;
{
p=(Stu*)malloc(sizeof(Stu));
\t\t请输入插入的学生信息:
\n"
\t学号:
\n\t姓名:
\n\t性别:
\n\t专业:
\n\t楼号:
\n\t宿舍号:
\n\t床号:
next=head->
head->
next=p;
\n\n是否继续插入?
Y/N"
}while(ch=='
||ch=='
voidmodify()/*修改学生信息(按学号修改)*/
\n\n请输入修改的学生学号:
"
while(p!
if(p->
system("
\n请输入新的学生信息:
scanf("
break;
p=p->
if(p==NULL)
printf("
else
修改成功\n"
\n\n继续修改?
voidxuehao_search(Stu*head)/*按照学生学号查找*/
intnum;
next;
\n请输入要查找的学生学号:
while(p!
if(p->
num==num)
%-8d%-8s%-4c%-8s%-8d%-8d%-5d\n"
p->
if(p==NULL)
\n\n继续查找?
||ch=='
voidsushe_search(Stu*head)/*按照宿舍信息查找*/
\n请输入要查找的学生宿舍信息(楼号宿舍床号):
\n楼号:
\n宿舍号:
\n床号:
sushenum==sushenum
&
chuangnum==chuangnum)
{
p->
\n\n是否继续?
voidSearch()/*查找学生信息*/
{
intchoose;
\n1.根据宿舍信息查找."
\n2.根据学生学号查找."
\n3.退出.\n\n"
\n请选择查找式:
choose);
switch(choose)
case1:
sushe_search(head);
case2:
xuehao_search(head);
break;
case3:
voidsort()/*将学生信息按学号排序*/
Stu*i,*j,*k;
Stu*m,*n;
Stu*temp;
intl=0;
//冒泡排序法
for(m=head,i=head->
i;
m=i,i=i->
next)
k=i;
for(n=i,j=i->
j;
n=j,j=j->
if(j->
num<
k->
num)
k=j;
if(i!
=k)
m->
next=j;
n->
next=i;
temp=i->
i->
next=j->
j->
next=temp;
i=head;
\n\n输入学生信息:
\n\n"
i=head->
while(i)
i->
num,i->
name,i->
lounum,i->
sushenum,i->
i=i->
\n按任意键返回!
voidtongji()/*统计学生信息*/
Stu*head,*p;
intCount1,Count2;
Count1=0;
Count2=0;
if(p->
sex=='
w'
||p->
W'
Count1++;
}
else
Count2++;
p=p->
\t女生总数:
%d\n"
Count1);
\t男生总数:
Count2);
\t学生总数:
Count1+Count2);
\t按任意键返回!
voidmain()