c语言课程设计报告及其源代码(共32页)_第1页
c语言课程设计报告及其源代码(共32页)_第2页
c语言课程设计报告及其源代码(共32页)_第3页
c语言课程设计报告及其源代码(共32页)_第4页
c语言课程设计报告及其源代码(共32页)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上西安郵電學院C语言课程设计报告书系部名称通信工程系学生姓名王子源专业名称通信工程专业班 级通工0901班学号指导教师 衡霞时间2010年06月07日至 2010年06月18日 实验题目学生宿舍管理系统一、    实验目的 通过进行计算机实践,更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。利用系统提供的标准函数和自定义函数进行程序设计,培养利用C语言设计综合程序的能力。 二、 实验内容 在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等

2、);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用。 三、 需求分析本学生信息管理系统包含输入记录,显示记录,按房间号排序并显示,按学号排序并显示,插入一条记录按学号排序并显示,按姓名查找,删除一条记录,查找并显示一个记录,查找并修改一个记录,从文件中读入数据,循环写入数据 等功能.需求分析:输入记录(Input)显示记录(Display)按房间号排序并显示(Sort_by_roomnum)按学号排序并显示(Sort_by_num)插入一条记录按学号排序并显示(Insert_a_record)按姓名查找,删除一条记录(Delete

3、_a_record)查找并显示一个记录(Query_a_record)查找并修改一个记录(Change_a_record)从文件中读入数据(AddfromText)循环写入数据(WritetoText)四 概要设计1. 系统分析功能模块图:总目录以及下属的各个模块,这样可以使得程序的书写脉络清晰流畅。程序结构图2、模块功能说明(1)输入记录模块(Input):用于输入学生的各项信息(2)显示记录模块(Display):按照输入的顺序显示出每个学生的各项信息(3)按房间号排序并显示模块(Sort_by_roomnum):按照房间号顺序显示每个学生信息(4)按学号排序并显示模块(Sort_by_n

4、um):按照学号顺序显示每个学生信息(5)插入一条记录按学号排序并显示模块(Insert_a_record):插入一条记录并按学号显示出所有记录。(6)按姓名查找,删除一条记录模块(Delete_a_record):查找一个姓名,并删除该模块(7)查找并显示一个记录模块(Query_a_record):查找一条记录并显示该记录(8)查找并修改一个记录模块(Change_a_record):按姓名查找并修改某个其中一个记录模块(9)从文件中读入数据模块(AddfromText):用fscanf语句从文件读取信息(10)循环写入数据模块(WritetoText):用fprintf语句向已知(未知)

5、文件读取信息,并返回读取信息五 详细设计及运行结果主程序流程图函数调用关系按房间号排序并显示按学号排序并显示插入一条记录并按学号排序按姓名查找删除一条记录查找并显示一个记录查找并修改一个记录从文件中读入数据循环写入数据源代码以及运行结果:程序设计编码见附录详细运行结果1)登陆界面 输入密码:错误了,成功输入界面2)进入主菜单3)输入记录后显示记录4)按房间号排序5)学号排序 6)插入记录并按学号排序7)删除记录 8)查找并显示9)查找并修改记录 修改成功10)保存文件文件及内容保存成功!11)读取文件 文件读取成功!六、调试情况,设计技巧及体会测试数据原始数据:房间号 床位号 学号 姓名 班级

6、 性别146 045 haha 0908 man 103 045 huha 0901 man 235 004 dfgh 0902 woman 102 045 woyu 0901 man 165 008 tata 0904 man 105 004 tagi 0902 woman 113 008 jijk 0904 man 458 008 aabb 0904 man 404 004 shaz 0985 woman 按房间号排序后数据:房间号 床位号 学号 姓名 班级 性别102 045 woyu 0901 man 103 045 huha 0901 man 105 004 tagi 0902 wo

7、man 113 008 jijk 0904 man 146 045 haha 0908 man 165 008 tata 0904 man 235 004 dfgh 0902 woman 404 004 shaz 0985 woman 458 008 aabb 0904 man 按学号排序后数据:房间号 床位号 学号 姓名 班级 性别146 045 haha 0908 man 103 045 huha 0901 man 235 004 dfgh 0902 woman 102 045 woyu 0901 man 165 008 tata 0904 man 105 004 tagi 0902 wo

8、man 113 008 jijk 0904 man 458 008 aabb 0904 man 404 004 shaz 0985 woman 个人总结 通过这次的C语言程序设计,从总共两个星期的时间,其中选题花了我将近3天的时间,最终还是决定选择学生宿舍管理系统,紧接着就确定了功能模块,总共确立了十个功能模块,相对比较繁琐,但是由于时间还是比较紧的,所以没有能进一步修改。 这次程序设计过程中,我觉得最难的就是每个模块的逻辑分析过程,尤其是函数的返回值问题,例如,在数据添加后,用以下函数 int Input(Student room,int n) /*输入若干条记录*/int i=0;char

9、 sign; /*x10为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/ system("cls"); printf("tt房间号:"); /*交互输入*/ scanf("tt%s",&roomn+i.roomnum); printf("tt床位号:"); scanf("tt%s",&roomn+i.bednum); printf("tt学号:"); scanf(&qu

10、ot;tt%s",&roomn+i.num); printf("tt班级:"); scanf("tt%s",&roomn+i.classnum); printf("tt姓名:"); scanf("tt%s",&roomn+); printf("tt性别:"); scanf("tt%s",&roomn+i.sex); printf("tt是否继续输入?(Y/N)"); scanf("tt%c&q

11、uot;,&sign); /*输入判断*/ i+;return(n+i);其中返回值是的是i还是i+我花费了很长时间才分析出来,最后还是在纸笔的计算下,完成了这个模块。其次,在程序模块简化过程中,我也意识到了要熟练掌握C语言各项基本只是才能简化,例如,在排序模块中,一开始我用的是以下代码 strcpy(t,roomj+1.roomnum); strcpy(roomj+1.roomnum,roomj.roomnum); strcpy(roomj.roomnum,t); strcpy(t,roomj+1.bednum); strcpy(roomj+1.bednum,roomj.bednum

12、); strcpy(roomj.bednum,t); strcpy(t,roomj+1.num); strcpy(roomj+1.num,roomj.num); strcpy(roomj.num,t); strcpy(t,roomj+1.name); strcpy(roomj+1.name,); strcpy(,t);strcpy(roomj+1.classnum,roomj.classnum); strcpy(roomj.classnum,t);strcpy(roomj+1.sex,roomj.sex); strcpy(roomj.sex,t);然后再

13、老师的提醒下,我才发现,可以定义另一个结构体Student t;然后用 T= roomj; roomj= roomj+1; roomj+1=t简单三行就解决了上面的麻烦,这更让我领会到了C语言的魅力.另外,还学习到了system(“pause”);语句就是在屏幕上按任意键继续的意思,相当与printf(“按任意键继续”);getch();所以,我还有许多要改进的地方。当然,我还更加体会到了团队的力量,当我有问题的时候要勇于和同学探讨问题,自己也要能帮助不明白的同学,在这样的情况下,大家才能更加熟练地学习自己还不懂得知识。所以,这更是一个团队互相帮助的成果。以后,要想把计算机方面的知识学好,一定

14、要更加努力!结束语这次C语言程序实习让我渐渐体会到了编程的乐趣,但是也意识到了自己的不足,一个人的成功是靠努力换来的,只有付出了,才会有收获!参考文献:语言程序设计(第二版)王曙燕科学出版社最后,感谢机房各位老师对我的监督辅导!七、源程序清单(略) #include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>#include<conio.h>typedef struct /*定义结构体数组*/ char roomnum4; /*房间号*

15、/ char bednum4; /*床位号*/ char classnum10; /*班级*/ char num10; /*学号*/ char name20; /*姓名*/ char sex10; /*性别*/ Student;Student room11000; /*结构体数组变量*/int menu_select() /*菜单函数*/ int c; do system("cls"); /*运行前清屏*/ printf("tt学生宿舍管理系统n"); /*菜单选择*/ printf("tt§ 1. 输入记录 §n"

16、;); printf("tt§ 2. 显示记录 §n"); printf("tt§ 3. 按房间号排序并显示 §n"); printf("tt§ 4. 按学号排序并显示 §n"); printf("tt§ 5. 插入一条记录按学号排序并显示 §n"); printf("tt§ 6. 按姓名查找,删除一条记录 §n"); printf("tt§ 7 查找并显示一个记录 §

17、;n"); printf("tt§ 8 查找并修改一个记录 §n"); printf("tt§ 9. 从文件中读入数据 §n"); printf("tt§ 10. 循环写入数据 §n"); printf("tt§ 0. 结束程序 §n"); printf("ttn"); printf("tt请选择您要运行的选项按(0-10):");scanf("%d",&c)

18、; /*读入选择*/ while(c<0|c>10); return(c); /*返回选择*/int Input(Student room,int n) /*输入若干条记录*/int i=0;char sign; /*x10为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/ system("cls"); printf("tt房间号:"); /*交互输入*/ scanf("tt%s",&roomn+i.roomnum); pri

19、ntf("tt床位号:"); scanf("tt%s",&roomn+i.bednum); printf("tt学号:"); scanf("tt%s",&roomn+i.num); printf("tt班级:"); scanf("tt%s",&roomn+i.classnum); printf("tt姓名:"); scanf("tt%s",&roomn+); printf("tt性别

20、:"); scanf("tt%s",&roomn+i.sex); printf("tt是否继续输入?(Y/N)"); scanf("tt%c",&sign); /*输入判断*/ i+;return(n+i);void Display(Student room,int n) /*显示所有记录*/int i;printf("tt-n"); /*格式头*/printf("tt房间号 床位号 学号 姓名 班级 性别 n");printf("tt-n");fo

21、r(i=1;i<n+1;i+) /*循环输入*/ printf("tt%-10s%-10s%-10s%-10s%-10s%-20sn",roomi-1.roomnum,roomi-1.bednum,roomi-1.num,,roomi-1.classnum,roomi-1.sex);printf("tt");system("pause");void Sort_by_num(Student room,int n) /*按学号排序*/ int i,j; Student t; for(i=0;i<n-1;

22、i+) /*冒泡法排序*/ for(j=0;j<n-i-1;j+) if(strcmp(roomj.num,roomj+1.num)>0) t=roomj+1; roomj+1=roomj; roomj=t; void Sort_by_roomnum(Student room,int n) /*按房间号排序*/ int i,j; Student t; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(strcmp(roomj.roomnum,roomj+1.roomnum)>0) t=roomj+1; roomj

23、+1=roomj; roomj=t; int Insert_a_record(Student room,int n) /*插入一条记录*/ printf("tt学生房间号:"); /*交互式输入*/ scanf("tt%s",&roomn.roomnum); printf("tt学生床位号:"); scanf("tt%s",&roomn.bednum); printf("tt学生学号:"); scanf("tt%s",&roomn.num); prin

24、tf("tt学生姓名:"); scanf("tt%s",&); printf("tt学生班级:"); scanf("tt%s",&roomn.classnum); printf("tt学生性别:"); scanf("tt%s",&roomn.sex); n+;printf("n");system("pause"); Sort_by_num(room,n); /*调用排序函数*/ printf(

25、"tt插入记录成功!n"); /*返回成功信息*/ return(n);int Delete_a_record(Student room,int n) /*按姓名查找,删除一条记录*/ char s20; int i=0,j; printf("tt输入他(她)的姓名:"); /*交互式问寻*/ scanf("%s",s); while(strcmp(,s)!=0&&i<n) i+; /*查找判断*/ if(i=n) printf("tt对不起没找到该学生!n"); /*返回

26、失败信息*/ return(n); for(j=i;j<n-1;j+) /*删除操作*/ roomj=roomj+1; printf("tt删除记录成功!n"); /*返回成功信息*/ return(n-1);void Query_a_record(Student room,int n) /*查找并显示一个记录*/ char s20; int i=0; printf("tt输入他(她)的姓名:"); /*输入*/ scanf("tt%s",&s); while(strcmp(,s)!=0&&a

27、mp;i<n) i+; /*查找判断*/ if(i=n) printf("tt对不起没找到该学生!n"); /*输入失败信息*/ return; printf("tt他(她)的房间号:%sn",roomi.roomnum); /*输出该学生信息*/ printf("tt他(她)的床位号:%sn",roomi.bednum); printf("tt他(她)的学号:%sn",roomi.num); printf("tt他(她)的班级:%sn",roomi.classnum); printf(&

28、quot;tt他(她)的性别:%sn",roomi.sex);void Change_a_record(Student room,int n) /*查找并修改一个信息*/ char s20,m4; int i=0; int c; printf("tt输入他的姓名:"); scanf("tt%s",&s); while(strcmp(,s)!=0&&i<n) i+; if(i=n) printf("tt对不起没找到该学生!n"); system("pause"

29、;); return; /do system("cls"); printf("tt修改项目内容信息n"); /*菜单选择*/ printf("tt§ 1. 房间号 §n"); printf("tt§ 2. 床位号 §n"); printf("tt§ 3. 学号 §n"); printf("tt§ 4. 姓名 §n"); printf("tt§ 5. 班级 §n&quo

30、t;);printf("tt§ 6. 性别 §n"); printf("ttn"); printf("tt请选择您要修改的选项按(0-6):"); scanf("%d",&c); /*读入选择*/ switch(c) case 1: printf("tt请输入你要修改后的房间号:"); scanf("%s",&m); /*录入选择*/ strcpy(roomi.roomnum,m); /*覆盖信息*/ printf("恭喜你,修改

31、成功!n"); system("pause"); break; case 2: printf("tt请输入你要修改后的床位号:"); scanf("%s",&m); strcpy(roomi.bednum,m); printf("恭喜你,修改成功!n"); system("pause"); break; case 3: printf("tt请输入你要修改后的学号:"); scanf("%s",&m); strcpy(roomi.n

32、um,m); printf("恭喜你,修改成功!n"); system("pause"); break; case 4: printf("tt请输入你要修改后的姓名:"); scanf("%s",&m); strcpy(,m); printf("恭喜你,修改成功!n"); system("pause"); break; case 5: printf("tt请输入你要修改后的班级:"); scanf("%s",

33、&m); strcpy(roomi.classnum,m); printf("恭喜你,修改成功!n"); system("pause"); break; case 6: printf("tt请输入你要修改后的性别:"); scanf("%s",&m); strcpy(roomi.sex,m); printf("恭喜你,修改成功!n"); system("pause"); break; case 0: printf("tt安全退出修改系统!"

34、); system("pause"); break; int AddfromText(Student room,int n) /*从文件中读入数据*/ int i=0; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf("tt输入文件名:"); scanf("tt%s",&filename); /*输入文件名*/ if(fp=fopen(filename,"rt")=NULL) /*打开文件*/ printf("tt无法打开该文件n&qu

35、ot;); /*打开失败信息*/ printf("tt"); system("pause"); return(n); while(fscanf(fp,"%s%s%s%s%s%s",roomn+i.roomnum,roomn+i.bednum,roomn+i.num,roomn+,roomn+i.classnum,roomn+i.sex)!=EOF) /*循环读入数据*/ i+; fclose(fp); /*关闭文件*/ printf("tt读入成功!n"); printf("tt")

36、; system("pause"); return(n+i);void WritetoText(Student room,int n) /*将所有记录写入文件*/int i=0;FILE *fp; /*定义文件指针*/char filename100; /*定义文件名*/ printf("tt输入文件名:"); /*输入文件名*/ scanf("tt%s",&filename); if(fp=fopen(filename,"w")=NULL) /*打开文件*/ printf("tt无法打开该文件n

37、"); system("pause"); return; while(i<n) fprintf(fp,"%-10s%-10s%-10s%-10s%-10s%-10sn",roomi.roomnum,roomi.bednum,roomi.num,, roomi.classnum,roomi.sex); i+; fclose(fp); /*关闭文件*/ printf("写入成功!n"); /*返回成功信息*/void main() /*主函数*/int n=0,i,j;int c3; for(i=0;i

38、<3;i+) printf(" nnnttn"); printf(" tt=nn"); printf(" tt欢迎您进入学生宿舍管理系统!nn"); printf(" tt请输入管理员密码(三位):"); for(j=0;j<3;j+) cj=getch(); printf("*"); getch(); if (c0='1'&&c1='2'&&c2='3') printf("ntt恭喜你登陆成功

39、!"); printf("n"); system("pause"); break; else if(2-i=0) printf("对不起,错误达到三次,程序自动退出!"); printf("n"); exit(1); else printf("n"); printf("ntt对不起,账号密码输入错误,请重新输入!(你还有%d次机会)n",2-i); system("pause"); system("cls"); for(;) switch(menu_select() /*选择判断*/ case 1: printf("tt输入记录n"); /*输入若干条记录

温馨提示

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

最新文档

评论

0/150

提交评论