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

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

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

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

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)插入模块:

先将文件信息读出,再调用

息。

(3)插入模块:

先将文件信息读出,再调用

需要的信息删除。

(4)修改模块:

先将文件信息读出,再调用

修改。

(5)查询模块:

先将文件信息读出,再调用

insert()函数,可以向文件中插入信del()函数,可以将输入错误或者modify()函数,将输入错误的信息search(),在search()中有调用两个

数,一个按照宿舍信息查询sushe_search(),需要楼号和宿舍号,一个按照生信息查询xuehao_search()需要学生学号或者姓名。

⑹排序模块:

先将文件信息读出,再调用sort(),按照学生学号排序,拍完续没有直接写入文件,如果要直接写入调用文件读入函数

Write_to_File().

⑺统计模块:

先将文件信息读出,再调用tongji()函数,统计了女生人数和男

生人数,还统计了总人数.

五•详细过程和运行结果:

删除模块

 

插入模块

开始

头插入学生信息

输入插入的学生信息

将其入栈,即将插入的学生信息插到了最前面

查找模块

「开始

 

 

修改模块

 

 

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

 

 

修改学生信息

排序模块

匚开始

组织循环,扫描存

储学生信息的链表

 

选出学号最小的学生,与第

学生交换存储位置

在余下的学生中选出学号最小的学生与

第二个学生交换存储位置

以此类推,直至排序完成

统计模块

开始

 

 

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

 

 

 

结束

六.参考文献:

《C语言程序设计》:

王曙燕

七.源代码

#include

#include

#inelude

〃#inelude

typedefstructStudent

int

num;

/*学号*/

char

name[15];

/*姓名*/

char

sex;

/*性别*/

char

zhuanye[20];

/*专业*/

int

lounum;

/*楼号*/

int

sushenum;

/*宿舍号*/

int

chuangnum;

/*床号*/

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姓名:

”);

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

printf("\n性别:

");

scanf(”%e",&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);

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->zh

uanye,

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;

:

\n");

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

printf("\t学号:

”);

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

printf("\n\t姓名:

");

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

printf("\n\t性别:

");

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

printf("\n\t专业:

”);

seanf("%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");

:

\n");

printf("\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床号:

”);

seanf("%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->zhua

nye,

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;

int1=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按任意键返回r);

getchar();

getchar();

}

/*统计学生信息*/

voidtongji()

{

Stu*head,*p;

intCount1,Count2;

InitStu(&head);

Read_from_File(head);

system("clear");

p=head->next;

Count1=O;

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按任意键返回rj;

getchar();

getchar();

}voidmain()

{

intchoice;

charch;

while

(1)

{

system("clear");

printf("\n学生宿舍管理系统\n");

printf("=========================================\n");

printf("1.录入学生信息\n\n”);

printf("2.删除学生信息\n\n");

printf("3.插入学生信息\n\n");

printf("4.修改学生信息\n\n”);

printf("5.显示学生信息\n\n”);

printf("6.查找学生信息\n\n”);

printf(”7.排序学生信息\n\n");

printf("8.统计学生信息\n\n”);

printf("0.退出系统\n");

printf("==========================================\n");

printf("请选择0-8:

\n");

printf("\n请选择要进行的操作:

”);

scanf("%d",&choice);

switch(choice)

{

case1:

append();

break;

case2:

del();

break;

case3:

insert();break;

case4:

modify。

;

break;

case5:

display。

;break;

case6:

Search。

;break;

case7:

sort();break;

case8:

tongji();

break;

case0:

(Y/N)");

printf("\n\t\t确定退出?

scanf(”%c",&ch);

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

exit(0);

if(ch=='N'||ch=='n')

{

system("clear");

}

}

}

}

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

当前位置:首页 > 经管营销 > 金融投资

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

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