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

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

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

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

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

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

****大学

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()函数,统计了女生人数和男生人数,还统计了总人数.

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

删除模块

 

=

 

==

 

插入模块

 

 

查找模块

 

 

 

=

!

=

 

修改模块

 

!

=

 

==

 

排序模块

 

统计模块

 

六.参考文献:

《C语言程序设计》:

王曙燕

七.源代码

#include〈stdio.h〉

#include〈stdlib。

h〉

#include〈string。

h〉

//#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—>num〈k->num)

{

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

{

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请选择要进行的操作:

”);

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

当前位置:首页 > 高等教育 > 工学

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

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