1、C语言课程设计学生宿舍管理系统C语言课程设计报告题 目 学牛宿舍管理系统系部名称: 专业名称: 班 级:学 号:学生姓名指导教师:时 间:课程设计目的1.设计一个ubuntu下的学生宿舍管理系统2.掌握用C语言定义单链表结构,并实现其创建、插入、删除等基本操作。、课程设计内容用C语言编写“学生宿舍管理系统”,要求如下:1.创建链表,录入数据。2.数据的读写操作。3.数据的更新操作。4.数据的删除和插入。5.请你要求对数据进行查找。6.按要求排序。7.设计总体菜单界面。三、实验要求1、 录入数据学生的基本信息,包括学号、姓名、性别、年龄、专业、班级等。宿舍楼的基本信息,包括宿舍楼号、学生所住的房
2、间号和宿舍床位号等。2、 数据存储信息的录入要求用链表,把输入的信息要求存储到指定文件夹中,以便随时查看,也可供程序调用,方便操作人员不用重复输入数据。3、数据的更新更新包括插入、删除、修改。删除分根据学号删除和根据学生的楼层信息删除。5、 数据的查询查询可以根据学号和宿舍信息不同方面进行查询,方便操作者使用6、 数据的排序操作者可以使所输入的信息按学号排序。7、 数据的统计按整体统计,统计所有学生人数,男生人数和女生人数。四、概要设计1 系统结构图(功能模块图)2.功能模块说明:(1).数据录入:创建单链表,调用Initnode()函数申请头结点,在调用append(),在调用Write_t
3、o_File()函数将信息写入文件中,(2)插入模块:先将文件信息读出,再调用息。(3)插入模块:先将文件信息读出,再调用需要的信息删除。(4)修改模块:先将文件信息读出,再调用修改。(5)查询模块:先将文件信息读出,再调用insert()函数,可以向文件中插入信 del()函数,可以将输入错误或者 modify()函数,将输入错误的信息 search(),在search()中有调用两个数,一个按照宿舍信息查询sushe_search(),需要楼号和宿舍号, 一个按照生信息查询xuehao_search()需要学生学号或者姓名。排序模块:先将文件信息读出,再调用 sort (),按照学生学号排
4、序,拍完续 没有直接写入文件,如果要直接写入调用文件读入函数Write_to_File().统计模块:先将文件信息读出,再调用 tongji()函数,统计了女生人数和男生人数,还统计了总人数.五详细过程和运行结果:删除模块插入模块开始头插入学生信息输入插入的学生信息将其入栈,即将插入的学 生信息插到了最前面查找模块开始修改模块组织循环,扫描存储学 生信息的链表表修改学生信息排序模块匚 开始组织循环,扫描存储学生信息的链表选出学号最小的学生,与第学生交换存储位置在余下的学生中选出学号最小的学生与第二个学生交换存储位置以此类推,直至排序完成统计模块开始组织循环,扫描存储学 生信息的链表表结束六.参
5、考文献:C语言程序设计: 王曙燕七.源代码#i nclude #i nclude #in elude #in elude typedef struct Stude ntintnum;/*学号*/charn ame15;/*姓名*/charse x;/*性别*/charzhua nye20;/*专业*/intlounum;/*楼号*/intsushenum;/*宿舍号*/intchuangnum;/*床号*/struct Stude nt *n ext;Stu;void Write_to_File(Stu *L)FILE *fp;Stu *p;/*将信息写入文件*/fp=fope n(sushe
6、.txt,w);if(fp=NULL)printf(打开失败!);getchar();getchar();exit(0);p=L-n ext;while(p)fprin tf(fp,%d %s %c %s %d %d %dn,p- num,p- name,p-sex, p-zhua nye,p-l ounu m,p-sushe nu m,p-chua ngnu m);p=p-n ext;fclose(fp);void InitStu(Stu *h) /* 创建头结点 */(*h)=(Stu *)malloc(sizeof(Stu);if(h=NULL)printf(创建失败!);getchar
7、();getchar();exit(0);(*h)- next=NULL;/*录入学生信息*/void appe nd()Stu *head;Stu *p,*q;char ch;In itStu(&head);q=head;while(1)system(clear);printf(请录入学生信息n);p=(Stu *)malloc(sizeof(Stu);printf(n 学号:);scan f(%d, &p- num);printf(n 姓名:”);sea nf(%s,p-n ame);printf(n 性别:);scanf(” %e,&p-sex);printf(n 专业:);sca nf
8、(%s,p-zhua nye);printf(n 楼号:);scan f(%d, &p-lou num);printf(n 宿舍号:);sca nf(%d, &p-sushe nu m);printf(n 床号:);sca nf(%d, &p-chua ngnu m);p_n ext=q _n ext;q_n ext=p;q=p;printf(”按任意键继续录入,按 0结束录入”);getchar(); ch=getchar();if(ch=0)break;Write_to_File(head);/*读出文件信息*/void Read_from_File(Stu *h)FILE *fp;Stu
9、 *p,*q;int i;fp=fope n(sushe.txt,r);if(fp=NULL)printf(打开失败);exit(0);q=h;while(!feof(fp)p=(Stu *)malloc(sizeof(Stu);i=fsca nf(fp,%d %s %c %s %d %d %dn, &p- nu m,p- name,&p-sex,p-zhua nye,& p-l ounum,& p-sushe num,&p-chua ngnu m);if(i = EOF)break;q_n ext=p;q=p;q-next = NULL;fclose(fp);Stu *head = NULL
10、;Stu *p;In itStu(&head);Read_from_File(head);/prin tf(ok!n);p=head-n ext;system(clear);if(!p)printf(无内容!);printf(n 按任意键键返回n);getchar();getchar();return 0;printf(学号 姓名 性别 专业 楼号 宿舍号 床号nn);while(p)prin tf(%-8d%-10s%-6c%-14s%-8d%-8d%-5dn,p- nu m,p- name,p-sex,p-zhuanye,p-l ounu m,p-sushe nu m,p-chua ngn
11、u m);p=p-n ext;printf(n 按任意键返回n);getchar();getchar();return 1;void del() /*删除学生信息*/Stu *head;Stu *p,*q;char ch,h;int N;int lounu m,sushe nu m,chua ngnum;In itStu(&head);Read_from_File(head);q=head;p=head-n ext;dosystem(clear);prin tf(n1.根据学生学号删除n);prin tf(n2.根据宿舍信息删除n);prin tf(n请选择删除方式::);scanf(” %c
12、, & ch);while(1) if(ch=1)printf(n 请输入学生学号:”);scan f(%d,&N);while(p)if(p-num=N)q_n ext=p-n ext;printf(”删除成功!); break;q=p;p=p-n ext;if(p=NULL)printf(n 未找到此学生);break;elsefree(p);else if(ch=2)printf(n 请输入宿舍信息(楼号宿舍床号):”);sca nf(%d %d %d,&lounum,& sushe num,& chua ngnu m);while(p!=NULL)&if(p-l ounum=lounu
13、m & p-sushe num=sushe nump-chua ngnum)q_n ext=p-n ext;printf(”删除成功!);break;q=p;p=p-n ext;if(p=NULL)printf(未找到此学生”);break;elsefree(p);break;printf(nn 是否继续:Y/N ?);scanf(” c, & h);while(h=Y |h=y);Write_to_File(head);void insert() /*用头插法插入学生信息*/Stu *p , *head;char ch;In itStu(&head);Read_from_File(head)
14、;system(clear);dop=(Stu*)malloc(sizeof(Stu);p- next=NULL;:n );prin tf(tt 请输入插入的学生信息printf(t 学号:”);scan f(%d,&p-n um);printf(nt 姓名:);sca nf(%s,p-n ame);printf(nt 性别:);scanf(” %c,&p-sex);printf(nt 专业:”);sea nf(%s,p-zhua ny e);printf(nt 楼号:);scan f(%d,&p-lou nu m);printf(nt 宿舍号:);sca nf(%d,&p-sushe nu
15、m);printf(nt 床号:);sca nf(%d,&p-chua ngnu m);p-next = head-n ext;head-n ext = p;printf(nn 是否继续插入?Y/N);scanf(” %c,&ch);while(ch=y|ch=Y);Write_to_File(head);void modify( ) /*修改学生信息(按学号修改) */Stu *head;Stu *p;char ch;int N;In itStu(&head);Read_from_File(head);system(clear);prin tf(nn 请输入修改的学生学号 :”);scan
16、f(%d,&N);p=head-n ext;dowhile(p!=NULL)if(p-num=N) system(clear);:n );prin tf(n 请输入新的学生信息prin tf(n 学号:”);sca nf(%d,&p- nu m);printf(n 姓名:);sca nf(%s,p-n ame);printf(n 性别:);scanf( %c,&p-sex);printf(n 专业:);sca nf(%s,p-zhua ny e);prin tf(n 楼号:);sca nf(%d,&p-lou nu m);printf(n 宿舍号:);sca nf(%d,&p-sushe nu
17、 m);prin tf(n 床号:”);sea nf(%d,&p-chua ngnu m); break;p=p-n ext;if(p=NULL)printf(n 未找到此学生”);elseprintf(修改成功 n);prin tf(nn 继续修改?Y/N);scanf(” %c,&ch);while(ch=y|ch=Y);Write_to_File(head);/*按照学生学号查找*/void xuehao_search(Stu * head) int num;Stu *p;char ch;p=head-n ext ;dosystem(clear);prin tf(n 请输入要查找的学生学
18、号 :”);scan f(%d, &n um);while(p!=NULL)if(p-num = num )床号printf(”学号 姓名 性别 专业 楼号 宿舍号nn);prin tf(%-8d%-8s%-4c%-8s%-8d%-8d%-5dn,p- num,p- name,p-sex,p-zhuanye,p-l ounu m,p-sushe nu m,p-chua ngnu m);break;p=p-n ext;if(p=NULL)printf(n 未找到此学生); prin tf(nn 继续查找?Y/N);scan f(%s,&ch);while(ch=Y | ch=y);void su
19、she_search(Stu *head)int lounu m,sushe nu m,chua ngnum;Stu *p;char ch;p=head-n ext;dosystem(clear);prin tf(n 请输入要查找的学生宿舍信息printf(n 楼号:”);scan f(%d, &lou num);/*按照宿舍信息查找*/(楼号宿舍床号):”);printf(n 宿舍号:);scan f(%d, &sushe nu m);printf(n 床号:”);sca nf(%d, &chua ngnu m);while(p!=NULL)if(p-l ounum=lounum & p-s
20、ushe num=sushe num&p-chua ngnum=chua ngnum)printf(”学号 姓名 性别 专业 楼号 宿舍号床号nn);prin tf(%-8d%-8s%-4c%-8s%-8d%-8d%-5dn,p- num,p- name,p-sex, p-zhuanye,p-l ounu m,p-sushe nu m,p-chua ngnu m); break;p=p-n ext;if(p=NULL)printf(n 未找到此学生”);prin tf(nn 是否继续?Y/N);scan f(%s,&ch);while(ch=y | ch=Y);/*查找学生信息*/void S
21、earch()int choose;Stu *head;In itStu(&head);Read_from_File(head);system(clear);prin tf(n1.根据宿舍信息查找prin tf(n2.根据学生学号查找prin tf(n3.退出.nn);prin tf(n请选择查找方式:)scan f(%d,&choose);switch(choose).);.);case 1:sushe_search(head); break;case 2:xuehao_search(head);break;case 3:break;void sort( ) /*将学生信息按学号排序Stu
22、*head;Stu *i,*j,*k;Stu *m,* n;Stu *temp;int 1=0;In itStu(&head);/冒泡排序法Read_from_File(head);for(m=head,i=head-n ext;i;m=i,i=i-n ext)k=i;for(n=i,j=i-n ext;j; n=j,j=j- next) if(j-numnum)k=j;break;if(i!=k)m- next=j;n-n ext=i;temp=i-n ext;i-n ext=j-n ext;j-n ext=temp;i=head;system(clear);prin tf(nn 输入学生信
23、息:nn);i=head-n ext;printf(学号 姓名 性别 专业 楼号 宿舍号床号nn);while(i)prin tf(%-8d%-8s%-4c%-8s%-8d%-8d%-5dn,i- nu m,i- name,i-sex.i-zhua nye,i-l ounu m,i-sushe nu m,i-chua ngnu m); i=i-n ext;printf(n 按任意键返回r);getchar();getchar();/*统计学生信息*/void ton gji()Stu *head,*p;int Cou nt1,Cou nt2;In itStu(&head);Read_from_
24、File(head);system(clear);p=head-n ext;Cou nt1=O;Cou nt2=0;while(p!=NULL)if(p-sex=w | p_sex=W)Cou nt1+;elseCou nt2+;p=p-n ext;prin tf(t女生总数:%dn,Cou nt1);prin tf(t男生总数:%dn,Cou nt2);prin tf(t学生总数:%dn,Cou nt1+Cou nt2);printf(t 按任意键返回rj;getchar();getchar(); void mai n()int choice;char ch;while(1)system(c
25、lear);printf(n 学生宿舍管理系统n);prin tf(=n);printf( 1.录入学生信息nn”);printf( 2.删除学生信息nn);printf( 3.插入学生信息nn);printf( 4.修改学生信息nn”);printf( 5.显示学生信息nn”);printf( 6.查找学生信息nn”);printf(” 7.排序学生信息nn);printf( 8.统计学生信息nn”);printf( 0.退出系 统 n);prin tf(=n);printf( 请选择 0-8:n);prin tf(n 请选择要进行的操作 :”);scan f(%d, &choice);switch(choice)case 1:appe nd();break;case 2:del();break;case 3:in sert(); break;case 4:modify。;break;case 5: display。; break;case 6:Search。; break;case 7: sort(); break;case 8:ton gji();break;case 0:(Y/N);prin tf(ntt 确定退出?scanf(” %c, & ch);if(ch=Y |ch=y)exit(0);if(ch=N | ch= n)system(clear);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1