收藏 分销(赏)

C语言课程设计报告——学生宿舍管理系统.doc

上传人:二*** 文档编号:4514000 上传时间:2024-09-26 格式:DOC 页数:24 大小:105KB
下载 相关 举报
C语言课程设计报告——学生宿舍管理系统.doc_第1页
第1页 / 共24页
本文档共24页,全文阅读请下载到手机保存,查看更方便
资源描述
.. - ****大学 C语言课程设计报告 题目:学生宿舍管理系统 系部名称 : 专业名称 : 班级 : 学号 : 学生XX : 指导教师 : 时间 : 一、 课程设计目的 1. 设计一个ubuntu下的学生宿舍管理系统 2. 掌握用C语言定义单链表构造,并实现其创立、插入、删除等根本操作。 二、课程设计容 用C语言编写“学生宿舍管理系统〞,要求如下: 1. 创立链表,录入数据。 2. 数据的读写操作。 3. 数据的更新操作。 4. 数据的删除和插入。 5. 请你要求对数据进展查找。 6. 按要求排序。 7. 设计总体菜单界面。 三、实验要求 1、录入数据 学生的根本信息,包括学号、XX、性别、年龄、专业、班级等。 宿舍楼的根本信息,包括宿舍楼号、学生所住的房间号和宿舍床位号等。 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()需要学生学号或者XX。 (6) 排序模块:先将文件信息读出,再调用sort (),按照学生学号排序,拍完续没有直接写入文件,如果要直接写入调用文件读入函数Write_to_File(). (7) 统计模块:先将文件信息读出,再调用tongji()函数,统计了女生人数和男生人数,还统计了总人数. 五.详细过程和运行结果: 删除模块 开场 输入要删除学生的学号num 组织循环,扫描存储学生信息的链表 p->num:num != == 删除该学生信息 完毕 开场 插入模块 头插入学生信息 输入插入的学生信息 将其入栈,即将插入的学生信息插到了最前面 完毕 查找模块 开场 选择查找方式 按宿舍信息查找 按学生学号查找 组织循环,扫描存储学生信息的链表表 输入要查找的学生lounum,sushenum,chuangnum 输入要查找的学生学号num p->lounum:sushenu p->sushenum:sushenu p->chuangnum:chuangnum p->num:num != != 输出该学生的信息 输出该学生信息 完毕 开场 修改模块 输入要修改的学生学号num 组织循环,扫描存储学生信息的链表表 p->num:num != == 修改学生信息 完毕 开场 排序模块 组织循环,扫描存储学生信息的链表表 选出学号最小的学生,与第一 学生交换存储位置 在余下的学生中选出学号最小的学生与第二个学生交换存储位置 以此类推,直至排序完成 完毕 开场 统计模块 组织循环,扫描存储学生信息的链表表 p->sex=m p->sex=w Count2++ Count1++ 完毕 六.参考文献: ?C语言程序设计?: 曙燕 七.源代码 #include <stdio.h> #include <stdlib.h> #include <string.h> //#include <conio.h> typedef struct Student { int num; /*学号*/ char name[15]; /*XX*/ char sex; /*性别*/ char zhuanye[20]; /*专业*/ int lounum; /*楼号*/ int sushenum; /*宿舍号*/ int chuangnum; /*床号*/ struct Student *next; }Stu; void Write_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); } void InitStu(Stu **h) /*创立头结点*/ { (*h)=(Stu *)malloc(sizeof(Stu)); if(h==NULL) { printf("创立失败!!"); getchar(); getchar(); exit(0); } (*h)->next=NULL; } void append( ) /*录入学生信息*/ { Stu *head; Stu *p,*q; char ch; InitStu(&head); q=head; while(1) { system("clear"); printf("请录入学生信息\n"); p=(Stu *)malloc(sizeof(Stu)); printf("\n学号:"); scanf("%d",&p->num); printf("\nXX:"); 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); } void Read_from_File(Stu *h) /*读出文件信息*/ { FILE *fp; Stu *p,*q; int i; 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); } int display() /*显示文件信息*/ { 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(); return 0; } printf("学号XX性别专业楼号宿舍号床号\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(); return 1; } void del() /*删除学生信息*/ { Stu *head; Stu *p,*q; char ch,h; int N; int lounum,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); } } 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; 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); } void insert() /*用头插法插入学生信息*/ { Stu *p , *head; char ch; 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 XX:"); 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); } void modify( ) /*修改学生信息〔按学号修改〕*/ { Stu *head; Stu *p; char ch; int N; 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("\nXX:"); 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); } 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 == num ) { printf("学号XX性别专业楼号宿舍号床号\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'); } void sushe_search(Stu *head) /*按照宿舍信息查找*/ { int lounum,sushenum,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("学号XX性别专业楼号宿舍号床号\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'); } void Search( ) /*查找学生信息*/ { int choose; 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) { 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 *temp; int l=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("学号XX性别专业楼号宿舍号床号\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(); } void tongji( ) /*统计学生信息*/ { Stu *head,*p; int Count1,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(); } void main() { int choice; char ch; 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) { 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("\n\t\t确定退出? (Y/N)"); scanf(" %c", &ch); if(ch=='Y'||ch=='y') exit(0); if(ch=='N' || ch=='n') { system("clear"); } } } } . . word.zl-
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服