宿舍管理系统 C语言实验报告.doc_第1页
宿舍管理系统 C语言实验报告.doc_第2页
宿舍管理系统 C语言实验报告.doc_第3页
宿舍管理系统 C语言实验报告.doc_第4页
宿舍管理系统 C语言实验报告.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计报告题 目:宿舍管理系统院系名称:电子工程学院 专业名称:计算机科学与技术班 级:1001 学生姓名:XXX学号(8位):13指导教师:XXX设计起止时间:2011年6月22日2011年6月30日一. 设计目的学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工一条条去查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的而世界,原始的记录方式已经被社会所淘汰,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。故随着宿舍需要管理的信息快速增长,建立一个宿舍管理系统可使宿舍管理人员的管理工作系统化、规范化、自动化,大大提高管理效率。二. 设计内容1.录入学生信息2.显示学生信息3.插入学生信息4.修改学生信息5.删除学生信息6.排序学生信息7.统计学生信息8.管理员密码三概要设计1.录入学生信息将信息保存至文件中2.从文件中读取信息显示出学生信息3. 从文件中读取信息存至单链表中,传递头指针从而修改学生信息,再将修改完成的学生信息保存至文件中4. 从文件中读取信息存至单链表中,传递头指针从然后用冒泡法排序学生信息,再将修改完成的学生信息保存至文件中5.统计学生信息按照宿舍号、楼层、楼号分别统计出人数6.管理员进入此系统需输入密码,而学生进入则不需要1功能模块图;主函数密码管理员文件存入单链表录入显示插入删除修改排序存入文件统计学生2各个模块详细的功能描述。1.录入学生信息录入学生信息将信息保存至文件中2.显示学生信息从文件中读取信息显示出学生信息3.插入学生信息从文件中读取信息存至单链表中,传递头指针从而插入学生信息,再将修改完成的学生信息保存至文件中4.修改学生信息从文件中读取信息存至单链表中,传递头指针从而修改学生信息,再将修改完成的学生信息保存至文件中5.删除学生信息从文件中读取信息存至单链表中,传递头指针从而删除学生信息,再将修改完成的学生信息保存至文件中6.排序学生信息从文件中读取信息存至单链表中,传递头指针从然后用冒泡法排序学生信息,再将修改完成的学生信息保存至文件中7.统计学生信息统计学生信息按照宿舍号、楼层、楼号分别统计出人数四测试数据及运行结果1正常测试数据和运行结果要求提供3组正常测试数据和运行结果排序查找2异常测试数据及运行结果要求提供2组异常测试数据和运行结果五调试情况,设计技巧及体会1改进方案对自己的设计进行评价,指出合理和不足之处,提出改进方案; 管理员密码不精致,会被管理员以外的人看到保密性不好。插入、删除、修改等函数太过繁琐。2体会对设计及调试过程的心得体会:在这一周多的实习中,让我对C语言有了更深刻的认识,不但复习了原来所学的知识,更对新的知识有了了解。在调试过程中,通过自己学习,寻求老师、同学的帮助解决了许多不懂的问题。六参考文献C语言程序设计(第二版)七附录:源代码(电子版)#include#include#include#include#include#include#define P 学号:%-8ld姓名:%-8s班级:%-10s楼号:%-3s楼层:%-3s宿舍号:%-3sn,p-num,p-name,p-classes,p-bnum,p-fnum,p-rnum#define N sizeof(struct stud)manager();main();student();struct stud long num; char name20; char classes20; char bnum5; char fnum5; char rnum5; struct stud *next;struct node char mima10; struct node *next;/*/ 录入学生信息/*/struct stud *input_message() struct stud *p1,*p2,*head; FILE *fp; fp=fopen(student_message.txt,wt); head=p2=(struct stud *)malloc(N); /*head p2指向头结点*/ printf(请输入 学号 姓名 班级 楼号 楼层 宿舍号(输入0结束)n); p1=(struct stud *)malloc(N); /*p1指向第一个结点*/scanf(%ld %s %s %s %s %s,&p1-num,p1-name,p1-classes,p1-bnum,p1-fnum,p1-rnum);if(p1-num!=0) fprintf(fp,%ld %s %s %s %s %sn,p1-num,p1-name,p1-classes,p1-bnum,p1-fnum,p1-rnum);while(p1-num!=0) p2-next=p1; /*将新结点连接到表尾*/p2=p1; /*p2指向新的表尾*/p1=(struct stud *)malloc(N); /*p1指向新申请的结点*/ scanf(%ld %s %s %s %s %s,&p1-num,p1-name,p1-classes,p1-bnum,p1-fnum,p1-rnum); if(p1-num!=0)fprintf(fp,%ld %s %s %s %s %sn,p1-num,p1-name,p1-classes,p1-bnum,p1-fnum,p1-rnum); fclose(fp); p2-next=NULL; /*表尾结点next置空*/ free(p1); /*释放无效结点*/ return head;/*/ 将文件中的信息存入单链表/*/struct stud *inread() /*将文件中的信息存入单链表*/ struct stud *head,*p,*p1; FILE *fp; fp=fopen(student_message.txt,rt); if(fp=NULL) printf(读出文件出错,按任意键退出); exit(1); head=(struct stud *)malloc(N); head-next=NULL; p=head; while(!feof(fp) p1=(struct stud*)malloc(N); fscanf(fp,%ld %s %s %s %s %sn,&p1-num,p1-name,p1-classes,p1-bnum,p1-fnum,p1-rnum); p-next=p1; /*连接结点*/ p=p1; p-next=NULL; fclose(fp); return head; /*/ 显示学生信息/*/revise_message() FILE *fp; struct stud *p; int n=0,a,fsize; p=(struct stud *)malloc(N); fp=fopen(student_message.txt,rt); if(fp=NULL)printf(n 打开文件失败!);exit(1); while(!feof(fp) /*文件未结束执行循环*/a=fileno(fp);fsize=filelength(a); /*判断文件大小 */ if(fsize=0)break;fscanf(fp,%ld %s %s %s %s %sn,&p-num,p-name,p-classes,p-bnum,p-fnum,p-rnum);printf(P);n=1; fclose(fp);if(n=0) printf(无记录!n);/*/ 将单链表的信息保存至文件中/*/baocun(struct stud *p) struct stud *p1; FILE *fp; fp=fopen(student_message.txt,wt); if(fp=NULL) printf(写入文件出错,按任意键退出); exit(1); for(p1=p-next;p1!=NULL;p1=p1-next) fprintf(fp,%ld %s %s %s %s %sn,p1-num,p1-name,p1-classes,p1-bnum,p1-fnum,p1-rnum); fclose(fp);/*/ 查询学生信息/*/find_message() long nnum;int a,b,n,m;FILE *fp; struct stud *p; fp=fopen(student_message.txt,rt); p=(struct stud *)malloc(N);system(cls);printf(nnnn); printf( * n); printf( 欢迎进入宿舍管理系统 n); printf( * n); printf(n 1.返回上一级 n);printf(n 1.按学生学号查找 n); printf(n 2.按学生姓名查找 n); printf(n 3.按宿舍号查找 n); printf(nnn); printf(请选择:); scanf(%d,&b); printf(nnn);/ 按学生学生学号 if(b=1)printf(n请输入要查找的人的学号:n); scanf(%ld,&nnum);while(!feof(fp) fscanf(fp,%ld %s %s %s %s %sn,&p-num,p-name,p-classes,p-bnum,p-fnum,p-rnum); if(p-num=nnum) printf(P); a=1; /*标志*/if(a!=1)printf(n没有找到此人!n); / 按学生姓名查找 if(b=2) char nname20;printf(n请输入要查找的人的姓名:); scanf(%s,&nname); while(!feof(fp) fscanf(fp,%ld %s %s %s %s %sn,&p-num,p-name,p-classes,p-bnum,p-fnum,p-rnum);n=strcmp(p-name,nname);if(n=0)printf(P); a=1;/*标志*/ if(a!=1)printf(n没有找到此人!n); if(b=3) char nrnum20;printf(n请输入要查找的宿舍号:); scanf(%s,&nrnum); while(!feof(fp) fscanf(fp,%ld %s %s %s %s %sn,&p-num,p-name,p-classes,p-bnum,p-fnum,p-rnum);m=strcmp(p-rnum,nrnum);if(m=0)printf(P); a=1;/*标志*/ if(a!=1)printf(n没有找到此宿舍!n); if(b=0)manager();/*/ 删除学生信息/*/delete_message(struct stud *p0) struct stud *p; long nnum; int a; p=p0-next; printf(请输入要删除的人的学号:); scanf(%ld,&nnum); while(p!=NULL) if(p-num=nnum) p0-next=p-next; /*后续结点接到前面的结点上*/ printf(已删除此人!); a=1; /*标志常量*/ p0=p; /*推移指针*/ p=p-next; if(a!=1) printf(没有找到要删除的人!);/*/ 插入和修改学生信息/*/change_message(struct stud *p0) long nnum;int a,b;system(cls);printf(nnnn); printf( * n); printf( 欢迎进入宿舍管理系统 n); printf( * n); printf(n 0.返回上一级 n); printf(n 1.插入学生信息 n); printf(n 2.修改学生信息 n); printf(nnn); printf(请选择:); scanf(%d,&b); printf(nnn); if(b=1) struct stud *p; p=(struct stud *)malloc(N); printf(请输入要插入的学号 姓名 班级 楼号 楼层 宿舍号n); scanf(%ld %s %s %s %s %s,&p-num,p-name,p-classes,p-bnum,p-fnum,p-rnum); p-next=p0-next; /*后续结点连接到新结点后*/ p0-next=p; /*此时新接点处在头的位置*/ if(b=2)printf(请输入要修改的人的学号:); scanf(%ld,&nnum);while(p0-next!=NULL) p0=p0-next; /*指针后移*/if(p0-num=nnum)printf(请修改此人的姓名 班级 楼号 楼层 宿舍号:); scanf(%s %s %s %s %s,p0-name,p0-classes,p0-bnum,p0-fnum,p0-rnum);printf(n修改成功!n);a=1; /*标志*/ if(a!=1)printf(n没有找到此人!n); if(b=0)manager(); /*/ 统计学生信息/*/dorm_message() int a,b,m; FILE *fp;struct stud *p; fp=fopen(student_message.txt,rt); p=(struct stud *)malloc(N);a=0;system(cls); printf(nnnn); printf( * n); printf( 欢迎进入宿舍管理系统 n); printf( * n); printf(n 0.返回上一级 n); printf(n 1.输入楼号统计人数 n); printf(n 2.输入楼层号统计人数 n); printf(n 3.输入宿舍号统计人数 n); printf(nnn); printf(请选择:); scanf(%d,&b); printf(nnn);/ 按楼号统计 if(b=1) char nbnum20; printf(n请输入要统计的楼号:n); scanf(%s,&nbnum); while(!feof(fp) fscanf(fp,%ld %s %s %s %s %sn,&p-num,p-name,p-classes,p-bnum,p-fnum,p-rnum); m=strcmp(p-bnum,nbnum); if(m=0) printf(P); a+; /*标志*/ printf(n该楼共有%d人n,a); / 按楼层号统计 if(b=2) char nfnum20; printf(n请输入要统计的楼层号:n); scanf(%s,&nfnum); while(!feof(fp) fscanf(fp,%ld %s %s %s %s %sn,&p-num,p-name,p-classes,p-bnum,p-fnum,p-rnum); m=strcmp(p-fnum,nfnum); if(m=0) printf(P); a+; /*标志*/ printf(n该楼层共有%d人n,a); / 按宿舍号统计 if(b=3) char nrnum20; printf(n请输入要统计的宿舍号:n); scanf(%s,&nrnum); while(!feof(fp) fscanf(fp,%ld %s %s %s %s %sn,&p-num,p-name,p-classes,p-bnum,p-fnum,p-rnum); m=strcmp(p-rnum,nrnum); if(m=0) printf(P); a+; /*标志*/ printf(n该宿舍共有%d人n,a); if(b=0)manager();/*/ 排序学生信息/*/ paixu(struct stud *p0, struct stud *p1, struct stud *p2) p0-next = p2; p1-next = p2-next; p2-next = p1;sort_message(struct stud *p0) /*传递头指针*/ int i,a; int flag; struct stud *p=NULL; system(cls); printf(nnnn); printf( * n); printf( 欢迎进入宿舍管理系统 n); printf( * n); printf(n 0.返回上一级 n); printf(n 1.升序排序 n); printf(n 2.降序排序 n); printf(nnn);printf(请选择:);scanf(%d,&a);printf(nnn);if(a=1) for (i=0; ; i+) flag = 0; for (p=p0; p-next-next != NULL; p=p-next) /*冒泡排序*/ if (p-next-num p-next-next-num) flag = 1; paixu(p, p-next, p-next-next); if (flag = 0) printf(n排序成功!n);break; if(a=2) for (i=0; ; i+) flag = 0; for (p=p0; p-next-next != NULL; p=p-next) if (p-next-num next-next-num) flag = 1; paixu(p, p-next, p-next-next); if (flag = 0) printf(n排序成功!n);break; if(a=0) manager();/*/ 管理员密码/*/mima() int n; int a=3; struct node *p; char rmima10; FILE *fp; fp=fopen(mima_message.txt,rt); p=(struct node *)malloc(sizeof(struct node); while(!feof(fp)for(;a!=0;)printf(请输入密码:n); scanf(%s,rmima);fscanf(fp,%sn,&p-mima);n=strcmp(p-mima,rmima);if(n=0) manager(); if(n!=0) printf(n密码错误,还有%d次机会n,a-1); a-;void nmima()FILE *fp;char nmima10;struct node *p;p=(struct node *)malloc(sizeof(struct node);fp=fopen(mima_message.txt,wt);if(fp=NULL)printf(n 打开文件失败!);exit(1); printf(请输入新密码);scanf(%s,nmima); strcpy(p-mima,nmima);fprintf(fp,%s,p-mima);printf(修改成功!n);fclose(fp);/*/ 管理员/*/manager()int n;char m;struct stud *head;system(cls);dosystem(cls);printf( * n);printf( 欢迎进入宿舍管理系统 n);printf( * n); printf(n 0.返回上一级 n);printf(n 1.录入学生信息 n);printf(n 2.显示学生信息 n);printf(n 3.查找学生信息 n);printf(n 4.删除学生信息 n);printf(n 5.修改学生信息 n);printf(n 6.排序学生信息 n);printf(n 7.统计宿舍信息 n);printf(n 8.修改密码信息 n);printf(n请选择:n);scanf(%d,&n);switch(n) case 0: main();break; case 1: input_message();break; case 2: revise_message();break; case 3: find_message();break; case 4:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论