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
3、). 数据录入:创建单链表,调用Initnode()函数申请头结点,在调用append(),在调用Write_to_File()函数将信息写入文件中,(2) 插入模块:先将文件信息读出,再调用insert()函数,可以向文件中插入信息。(3) 插入模块:先将文件信息读出,再调用del()函数,可以将输入错误或者 需要的信息删除。(4) 修改模块:先将文件信息读出,再调用modify()函数,将输入错误的信息修改。(5) 查询模块:先将文件信息读出,再调用search(),在search()中有调用两个数,一个按照宿舍信息查询sushe_search(),需要楼号和宿舍号,一个按照生信息查询xu
4、ehao_search()需要学生学号或者姓名。(6) 排序模块:先将文件信息读出,再调用sort (),按照学生学号排序,拍完续没有直接写入文件,如果要直接写入调用文件读入函数Write_to_File().(7) 统计模块:先将文件信息读出,再调用tongji()函数,统计了女生人数和男生人数,还统计了总人数.五详细过程和运行结果:开始输入要删除学生的学号nump-num:num删除该学生信息结束组织循环,扫描存储学生信息的链表删除模块 != =插入模块 查找模块 开始选择查找方式按学生学号查找输入要查找的学生学号nump-num:num输出该学生的信息按宿舍信息查找输入要查找的学生lou
5、num,sushenum,chuangnump-lounum:sushenup-sushenum:sushenup-chuangnum:chuangnum输出该学生信息 结束组织循环,扫描存储学生信息的链表表 != != 修改模块 != =排序模块 统计模块 六参考文献: C语言程序设计: 王曙燕七源代码#include #include #include 根据学生学号删除n); printf(n2. 根据宿舍信息删除n); printf(n 请选择删除方式:); scanf( %c, &ch); while(1) if(ch=1) printf(n请输入学生学号:); scanf(%d,&N
6、); 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); else if(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;
7、printf(删除成功!); break; q=p; p=p-next; if(p=NULL) printf(未找到此学生); break; else free(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; InitStu(&head); Read_from_File(head); system(clear); do p=(Stu*)malloc(sizeof(St
8、u); p-next=NULL; printf(tt请输入插入的学生信息 :n ); printf(t 学号:); scanf(%d,&p-num); printf(nt 姓名:); scanf(%s,p-name); printf(nt性别:); scanf( %c,&p-sex); printf(nt 专业:); scanf(%s,p-zhuanye); printf(nt 楼号:); scanf(%d,&p-lounum); printf(nt 宿舍号:); scanf(%d,&p-sushenum); printf(nt 床号:); scanf(%d,&p-chuangnum); p-
9、next = head-next; head-next = 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; InitStu(&head); Read_from_File(head); system(clear); printf(nn请输入修改的学生学号: ); scanf(%d,&N); p=head-next; do while(p!=NULL) if
10、(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
11、=p-next; if(p=NULL) printf(n未找到此学生); else printf(修改成功n); printf(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-next ; do system(clear); printf(n请输入要查找的学生学号 : ); scanf(%d,&num); while(p!=NULL) if(p-num =
12、 num ) printf(学号 姓名 性别 专业 楼号 宿舍号 床号nn); printf(%-8d%-8s%-4c%-8s%-8d%-8d%-5dn,p-num,p-name,p-sex,p-zhuanye, p-lounum,p-sushenum,p-chuangnum); break; p=p-next; if(p=NULL) printf(n未找到此学生); printf(nn 继续查找 Y/N); scanf(%s,&ch); while(ch=Y | ch=y); void sushe_search(Stu *head) /*按照宿舍信息查找*/ int lounum,sushe
13、num,chuangnum; Stu *p; char ch; 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(学号
14、 姓名 性别 专业 楼号 宿舍号 床号nn); printf(%-8d%-8s%-4c%-8s%-8d%-8d%-5dn,p-num,p-name,p-sex, p-zhuanye, p-lounum,p-sushenum,p-chuangnum); break; p=p-next; if(p=NULL) printf(n未找到此学生); printf(nn 是否继续 Y/N); scanf(%s,&ch); while(ch=y | ch=Y);void Search( ) /*查找学生信息*/ int choose; Stu *head; InitStu(&head); Read_from
15、_File(head); system(clear); printf(n1.根据宿舍信息查找.); printf(n2.根据学生学号查找.); printf(n3.退出.nn); printf(n请选择查找方式:); scanf(%d,&choose); switch(choose) case 1: sushe_search(head); break; case 2: xuehao_search(head); break; case 3: break; void sort( ) /*将学生信息按学号排序*/ Stu *head; Stu *i,*j,*k; Stu *m,*n; Stu *te
16、mp; int l=0; InitStu(&head); Read_from_File(head); 入学生信息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); printf(=n); printf( 请选择0-8:n); printf(n 请选择要进行的操作 : ); scanf(%d,&choice
17、); switch(choice) case 1: append(); break; case 2: del(); break; case 3: insert(); break; case 4: modify(); break; case 5: display(); break; case 6: Search(); break; case 7: sort(); break; case 8: tongji(); break; case 0: printf(ntt确定退出 (Y/N); scanf( %c, &ch); if(ch=Y|ch=y) exit(0); if(ch=N | ch=n) system(clear);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1