C语言课程设计学生宿舍管理系统.docx

上传人:b****5 文档编号:4245512 上传时间:2022-11-28 格式:DOCX 页数:28 大小:133.03KB
下载 相关 举报
C语言课程设计学生宿舍管理系统.docx_第1页
第1页 / 共28页
C语言课程设计学生宿舍管理系统.docx_第2页
第2页 / 共28页
C语言课程设计学生宿舍管理系统.docx_第3页
第3页 / 共28页
C语言课程设计学生宿舍管理系统.docx_第4页
第4页 / 共28页
C语言课程设计学生宿舍管理系统.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C语言课程设计学生宿舍管理系统.docx

《C语言课程设计学生宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生宿舍管理系统.docx(28页珍藏版)》请在冰豆网上搜索。

C语言课程设计学生宿舍管理系统.docx

C语言课程设计学生宿舍管理系统

****大学

C语言课程设计报告

 

题目:

学生宿舍管理系统

 

系部名称

专业名称

班级

学号

学生姓名

指导教师

时间

 

一、课程设计目的

1. 设计一个ubuntu下的学生宿舍管理系统

2. 掌握用C语言定义单链表结构,并实现其创建、插入、删除等基本操作。

二、课程设计容

用C语言编写“学生宿舍管理系统”,要求如下:

1.创建链表,录入数据。

2.数据的读写操作。

3.数据的更新操作。

4.数据的删除和插入。

5.请你要求对数据进行查找。

6.按要求排序。

7.设计总体菜单界面。

三、实验要求

1、录入数据

学生的基本信息,包括学号、姓名、性别、年龄、专业、班级等。

宿舍楼的基本信息,包括宿舍楼号、学生所住的房间号和宿舍床位号等。

2、数据存储

信息的录入要求用链表,把输入的信息要求存储到指定文件夹中,以便随时查看,也可供程序调用,便操作人员不用重复输入数据。

3、数据的更新

更新包括插入、删除、修改。

删除分根据学号删除和根据学生的楼层信息删除。

5、数据的查询

查询可以根据学号和宿舍信息不同面进行查询,便操作者使用。

6、数据的排序

操作者可以使所输入的信息按学号排序。

7、数据的统计

按整体统计,统计所有学生人数,男生人数和女生人数。

 

四、概要设计

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

p->num:

num

输出该学生的信息

按宿舍信息查找

输入要查找的学生lounum,sushenum,chuangnum

p->lounum:

sushenu

p->sushenum:

sushenu

p->chuangnum:

chuangnum

组织循环,扫描存储学生信息的链表表

 

 

=

=

 

修改模块

 

=

 

==

 

排序模块

 

 

统计模块

 

 

Count1++

Count2++

结束

 

六.参考文献:

《C语言程序设计》:

曙燕

 

七.源代码

#include

#include

#include

//#include

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->next;

}

fclose(fp);

}

voidInitStu(Stu**h)/*创建头结点*/

{

(*h)=(Stu*)malloc(sizeof(Stu));

if(h==NULL)

{

printf("创建失败!

!

");

getchar();

getchar();

exit(0);

}

(*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));

printf("\n学号:

");

scanf("%d",&p->num);

printf("\n姓名:

");

scanf("%s",p->name);

printf("\n性别:

");

scanf("%c",&p->sex);

printf("\n专业:

");

scanf("%s",p->zhuanye);

printf("\n楼号:

");

scanf("%d",&p->lounum);

printf("\n宿舍号:

");

scanf("%d",&p->sushenum);

printf("\n床号:

");

scanf("%d",&p->chuangnum);

p->next=q->next;

q->next=p;

q=p;

printf("按任意键继续录入,按0结束录入");

getchar();

ch=getchar();

if(ch=='0')

break;

}

Write_to_File(head);

}

voidRead_from_File(Stu*h)/*读出文件信息*/

{

FILE*fp;

Stu*p,*q;

inti;

fp=fopen("sushe.txt","r");

if(fp==NULL)

{

printf("打开失败");

exit(0);

}

q=h;

while(!

feof(fp))

{

p=(Stu*)malloc(sizeof(Stu));

i=fscanf(fp,"%d%s%c%s%d%d%d\n",&p->num,p->name,&p->sex,

p->zhuanye,&p->lounum,&p->sushenum,&p->chuangnum);

if(i==EOF)

break;

q->next=p;

q=p;

}

q->next=NULL;

fclose(fp);

}

intdisplay()/*显示文件信息*/

{

Stu*head=NULL;

Stu*p;

InitStu(&head);

Read_from_File(head);

//printf("ok!

\n");

p=head->next;

system("clear");

if(!

p)

{

printf("无容!

");

printf("\n按任意键键返回\n");

getchar();

getchar();

return0;

}

printf("学号姓名性别专业楼号宿舍号床号\n\n");

while(p)

{

printf("%-8d%-10s%-6c%-14s%-8d%-8d%-5d\n",p->num,p->name,p->sex,p->zhuanye,

p->lounum,p->sushenum,p->chuangnum);

p=p->next;

}

printf("\n按任意键返回\n");

getchar();

getchar();

return1;

}

voiddel()/*删除学生信息*/

{

Stu*head;

Stu*p,*q;

charch,h;

intN;

intlounum,sushenum,chuangnum;

InitStu(&head);

Read_from_File(head);

q=head;

p=head->next;

do

{

system("clear");

printf("\n1.根据学生学号删除\n");

printf("\n2.根据宿舍信息删除\n");

printf("\n请选择删除式:

");

scanf("%c",&ch);

while

(1)

{

if(ch=='1')

{

printf("\n请输入学生学号:

");

scanf("%d",&N);

while(p)

{

if(p->num==N)

{

q->next=p->next;

printf("删除成功!

");

break;

}

q=p;

p=p->next;

}

if(p==NULL)

{

printf("\n未找到此学生");

break;

}else

{

free(p);

}

}

elseif(ch=='2')

{

printf("\n请输入宿舍信息(楼号宿舍床号):

");

scanf("%d%d%d",&lounum,&sushenum,&chuangnum);

while(p!

=NULL)

{

if(p->lounum==lounum&&p->sushenum==sushenum&&p->chuangnum)

{

q->next=p->next;

printf("删除成功!

");

break;

}

q=p;

p=p->next;

}

if(p==NULL)

{

printf("未找到此学生");

break;

}else

{

free(p);

}

}

break;

}

printf("\n\n是否继续:

Y/N?

");

scanf("%c",&h);

}while(h=='Y'||h=='y');

Write_to_File(head);

}

voidinsert()/*用头插法插入学生信息*/

{

Stu*p,*head;

charch;

InitStu(&head);

Read_from_File(head);

system("clear");

do

{

p=(Stu*)malloc(sizeof(Stu));

p->next=NULL;

printf("\t\t请输入插入的学生信息:

\n");

printf("\t学号:

");

scanf("%d",&p->num);

printf("\n\t姓名:

");

scanf("%s",p->name);

printf("\n\t性别:

");

scanf("%c",&p->sex);

printf("\n\t专业:

");

scanf("%s",p->zhuanye);

printf("\n\t楼号:

");

scanf("%d",&p->lounum);

printf("\n\t宿舍号:

");

scanf("%d",&p->sushenum);

printf("\n\t床号:

");

scanf("%d",&p->chuangnum);

p->next=head->next;

head->next=p;

printf("\n\n是否继续插入?

Y/N");

scanf("%c",&ch);

}while(ch=='y'||ch=='Y');

Write_to_File(head);

}

voidmodify()/*修改学生信息(按学号修改)*/

{

Stu*head;

Stu*p;

charch;

intN;

InitStu(&head);

Read_from_File(head);

system("clear");

printf("\n\n请输入修改的学生学号:

");

scanf("%d",&N);

p=head->next;

do

{

while(p!

=NULL)

{

if(p->num==N)

{

system("clear");

printf("\n请输入新的学生信息:

\n");

printf("\n学号:

");

scanf("%d",&p->num);

printf("\n姓名:

");

scanf("%s",p->name);

printf("\n性别:

");

scanf("%c",&p->sex);

printf("\n专业:

");

scanf("%s",p->zhuanye);

printf("\n楼号:

");

scanf("%d",&p->lounum);

printf("\n宿舍号:

");

scanf("%d",&p->sushenum);

printf("\n床号:

");

scanf("%d",&p->chuangnum);

break;

}

p=p->next;

}

if(p==NULL)

printf("\n未找到此学生");

else

{

printf("修改成功\n");

}

printf("\n\n继续修改?

Y/N");

scanf("%c",&ch);

}while(ch=='y'||ch=='Y');

Write_to_File(head);

}

voidxuehao_search(Stu*head)/*按照学生学号查找*/

{

intnum;

Stu*p;

charch;

p=head->next;

do

{

system("clear");

printf("\n请输入要查找的学生学号:

");

scanf("%d",&num);

while(p!

=NULL)

{

if(p->num==num)

{

printf("学号姓名性别专业楼号宿舍号床号\n\n");

printf("%-8d%-8s%-4c%-8s%-8d%-8d%-5d\n",p->num,p->name,p->sex,p->zhuanye,

p->lounum,p->sushenum,p->chuangnum);

break;

}

p=p->next;

}

if(p==NULL)

printf("\n未找到此学生");

printf("\n\n继续查找?

Y/N");

scanf("%s",&ch);

}while(ch=='Y'||ch=='y');

}

voidsushe_search(Stu*head)/*按照宿舍信息查找*/

{

intlounum,sushenum,chuangnum;

Stu*p;

charch;

p=head->next;

do

{

system("clear");

printf("\n请输入要查找的学生宿舍信息(楼号宿舍床号):

");

printf("\n楼号:

");

scanf("%d",&lounum);

printf("\n宿舍号:

");

scanf("%d",&sushenum);

printf("\n床号:

");

scanf("%d",&chuangnum);

while(p!

=NULL)

{

if(p->lounum==lounum&&p->sushenum==sushenum

&&p->chuangnum==chuangnum)

{

printf("学号姓名性别专业楼号宿舍号床号\n\n");

printf("%-8d%-8s%-4c%-8s%-8d%-8d%-5d\n",p->num,p->name,p->sex,

p->zhuanye,

p->lounum,p->sushenum,p->chuangnum);

break;

}

p=p->next;

}

if(p==NULL)

printf("\n未找到此学生");

printf("\n\n是否继续?

Y/N");

scanf("%s",&ch);

}while(ch=='y'||ch=='Y');

}

voidSearch()/*查找学生信息*/

{

intchoose;

Stu*head;

InitStu(&head);

Read_from_File(head);

system("clear");

printf("\n1.根据宿舍信息查找.");

printf("\n2.根据学生学号查找.");

printf("\n3.退出.\n\n");

printf("\n请选择查找式:

");

scanf("%d",&choose);

switch(choose)

{

case1:

sushe_search(head);

break;

case2:

xuehao_search(head);

break;

case3:

break;

}

}

voidsort()/*将学生信息按学号排序*/

{

Stu*head;

Stu*i,*j,*k;

Stu*m,*n;

Stu*temp;

intl=0;

InitStu(&head);

Read_from_File(head);//冒泡排序法

for(m=head,i=head->next;i;m=i,i=i->next)

{

k=i;

for(n=i,j=i->next;j;n=j,j=j->next)

{

if(j->numnum)

{

k=j;

break;

}

}

if(i!

=k)

{

m->next=j;

n->next=i;

temp=i->next;

i->next=j->next;

j->next=temp;

i=head;

}

}

system("clear");

printf("\n\n输入学生信息:

\n\n");

i=head->next;

printf("学号姓名性别专业楼号宿舍号床号\n\n");

while(i)

{

printf("%-8d%-8s%-4c%-8s%-8d%-8d%-5d\n",i->num,i->name,i->sex,

i->zhuanye,

i->lounum,i->sushenum,i->chuangnum);

i=i->next;

}

printf("\n按任意键返回!

");

getchar();

getchar();

}

 

voidtongji()/*统计学生信息*/

{

Stu*head,*p;

intCount1,Count2;

InitStu(&head);

Read_from_File(head);

system("clear");

p=head->next;

Count1=0;

Count2=0;

while(p!

=NULL)

{

if(p->sex=='w'||p->sex=='W')

{

Count1++;

}

else

{

Count2++;

}

p=p->next;

}

printf("\t女生总数:

%d\n",Count1);

printf("\t男生总数:

%d\n",Count2);

printf("\t学生总数:

%d\n",Count1+Count2);

printf("\t按任意键返回!

");

getchar();

getchar();

}

 

voidmain()

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1