1、课程设计报告课程信息管理系统课程设计报告学 院: 信息科学与工程学院 专 业: 计算机科学与技术 班 级: 计班 学 号:20121200000 20121200000 20121200000 学生姓名: 郑 李 李 指导教师: 李 课程名称: 程序设计基础 设计名称: 课程信息管理系统 一、 设计内容及要求本系统以个人课程信息为背景,设计和实现了一个小型个人课程信息管理系统。主要有以下功能:1.系统以菜单方式运行工作,界面清晰直观,便于用户操作。2.系统需使用个人密码登陆,较好的保护了用户隐私。3.课程信息查看,查看当前所有课程信息。4.课程信息录入,包括课程名称、性质、教师、时间以及教室。
2、5.课程信息查找,分别按课程名称、时间或性质查找相关课程。6.课程信息修改,核对后可对指定课程的指定项目进行修改。7.课程信息删除,核对后可删除指定课程信息。8.个人密码修改,验证原密码后可设置新密码。二、 设计思路系统概览1.数据结构设计 结构体:用结构体接收课程信息。 文件:用文件储存数据。 2.模块接口设计Void sign() Void login() Void rpw() Void open() Void reorder() Void save() Void inpt() Void look() Int find() Void find2() Void find3() Void de
3、l(int i) Void revise(int i) 打印欢迎界面 登录模块 密码修改 打开文件并读取信息 按时间对信息排序 将内存中信息保存到文件 添加信息 查看所有信息 按名称查找信息 按时间查找信息 按性质查找信息 删除指定信息 修改指定信息 3.流程图三、 设计结果及分析.(相关测试图片已删除)1.初始密码的设置测试误输入、设置初始密码为0002.第二次登录测试错误密码,输入000后登陆成功,出现主菜单3.修改密码测试错误密码输入正确密码、测试误输入、设置密码为147重新登录,测试新密码147登录成功4.查看课程信息能正确输出当前课程信息,排列整齐5.添加课程信息添加并保存查看所有课
4、程,已成功添加,并且排序正常添加并放弃保存查看所有课程,未造成影响6.查找课程信息测试按名称查找高数,查找成功并输出正常按时间查找周五,查找成功并输出正常按性质查找必修,查找成功并输出正常7.修改课程信息成功找到对应课程信息并输出,尝试修改教室位置修改成功,返回主菜单,提示是否保存,尝试保存查看所有课程,已成功修改 若放弃保存,查看所有课程,未造成影响8.删除课程信息尝试删除大物,成功找到并输出信息,取消删除查看所有课程,未造成影响再次尝试删除并确定 查看所有课程,已成功删除9.退出系统测试退出系统,成功输出提示信息并退出10.其他测试测试过程中在每个需要读入字符的地方都做了连续输入回车、随机
5、输入单个字符,随机输入字符串的测试,系统运行稳定,提示正常。主要是因为在要读入字符的部分加入了while(getchar()!=n);以读掉无用字符、字符串。加入了while(getchar()=n);以读掉连续回车或之前操作中输入的回车。四、 总结通过本次课程设计,使我对程序设计基础这门课程有了更深入的理解。程序设计基础是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。一个人的力量是有限的,要想把课程设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。程序的编写需要有耐心,有些事情看起来很复杂,但问题需
6、要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。再总体解决大的问题。这样做起来不仅有条理也使问题得到了轻松的解决。在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的极简单的课程制作,可是平心而论,也耗费了我不少的心血,这就让我不得不佩服开发技术的前辈,才意识到老一辈对我们社会的付出,为了人们的生活更美好,他们为我们社会所付出多少心血啊!对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生
7、就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!通过这次的课程设计我对于专业课的学习有了更加深刻的认识,以为现在学的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。以后努力学好每门专业课,让自己拥有更多的知识,才能解决更多的问题!五、附录(源代码)#include #include #include FILE *fp;int count; struct lesson char name10; char nature10; char teacher10; int time; char r
8、oom10;lesson21;void sign()puts(); puts( t); puts( t ); puts( t ); puts( t 欢迎使用本课程信息管理系统! ); puts( t ); puts( t ); puts( t 第五组设计人员: ); puts( t ); puts( t 郑晨阳 ); puts( t 李丛渊 ); puts( t 李振鹏 ); puts( t ); puts( t ); puts( t);void login() char pws20,pwt20; fp=fopen(password,rb); if(fp=NULL) puts(您是第一次登录本
9、系统,请设置您的密码); fp=fopen(password,wb+); while(1) do gets(pws); while(pws0=0); puts(请再次输入以确认您的密码); gets(pwt); if(strcmp(pwt,pws)!=0) puts(您两次输入的密码不一致!请重新输入); else fputs(pws,fp); fclose(fp); puts(已成功设置您的密码,请牢记); getchar(); system(CLS); break; else fgets(pws,20,fp); puts(请输入密码); while(1) gets(pwt); if(str
10、cmp(pwt,pws)!=0) puts(您输入的密码不正确!请重新输入); else system(CLS); puts(登录成功!); break; fclose(fp);void rpw() char pws20,pwt20; fp=fopen(password,rb); if(fp=NULL) puts(运行出错!); else fgets(pws,20,fp); puts(请输入原密码); while(1) do gets(pwt); while(pwt0=0); if(strcmp(pwt,pws)!=0) system(CLS); puts(您输入的密码不正确!); retur
11、n 0; else system(CLS); puts(请输入新密码); while(1) do gets(pws); while(pws0=0); puts(请再次输入以确认您的密码); gets(pwt); if(strcmp(pwt,pws)!=0) puts(您两次输入的密码不一致!请重新输入); else fp=fopen(password,wb+); fputs(pws,fp); fclose(fp); puts(已成功设置您的密码,请牢记); getchar(); system(CLS); return 0; break; void open() if(fp=fopen(less
12、onlist,rb)=NULL) printf(当前没有课程信息,请添加!n); return 0; while(fread(&lessoncount+,sizeof(struct lesson),1,fp)=1); count-; fclose(fp);void reorder() int i,j; for(i=0;icount-1;i+) for(j=0;jlessonj+1.time) lesson20=lessonj; lessonj=lessonj+1; lessonj+1=lesson20; void save() int i; fp=fopen(lessonlist,wb); f
13、or(i=0;icount;i+) fwrite(&lessoni,sizeof(struct lesson),1,fp); fclose(fp); printf(保存成功!n);void inpt() int i=count,j=0,m,n; puts(); while(1) m=n=0; puts(输入课程名称:); scanf(%s,lessoncount.name); while(1) puts(选择课程性质:); puts(1:必修); puts(2:选修); scanf(%d,&j); while(getchar()!=n); if(j=1) strcpy(lessoncount.
14、nature,必修); break; if(j=2) strcpy(lessoncount.nature,选修); break; puts(输入教师姓名:); scanf(%s,lessoncount.teacher); puts(输入上课时间:); while(m7) puts(周几?(请直接输入一位数字)); scanf(%d,&m); while(getchar()!=n); while(n9) puts(第几节课?(请直接输入一位数字)); scanf(%d,&n); while(getchar()!=n); lessoncount.time=m*10+n; puts(输入教室位置:)
15、; scanf(%s,lessoncount.room); count+; getchar(); while(1) puts(是否继续添加?(y/n); while(j=getchar()=n); while(getchar()!=n); if(j=n|j=N|j=y|j=Y) break; if(j=n|j=N) break; while(1) puts(添加成功,是否保存?(y/n); while(j=getchar()=n); while(getchar()!=n); if(j=n|j=N|j=y|j=Y) break; system(CLS); if(j=y|j=Y) reorder(
16、); save(); else count=i;void look() int i,m,n; system(CLS); puts(-); puts(课程tt性质tt教师tt时间tt教室n); for(i=0;icount;i+) m=lessoni.time/10; n=lessoni.time%10; printf(%stt%stt%stt周%d第%d节t%sn,lessoni.name,lessoni.nature,lessoni.teacher,m,n,lessoni.room); int find() char clas20,j; int i,m,n; while(1) printf(
17、请输入课程名称:); scanf(%s,clas); for(i=0;icount;i+) if(strcmp(clas,lessoni.name)=0) system(CLS); puts(-); puts(课程tt性质tt教师tt时间tt教室n); m=lessoni.time/10; n=lessoni.time%10; printf(%stt%stt%stt周%d第%d节t%sn,lessoni.name,lessoni.nature,lessoni.teacher,m,n,lessoni.room); return i; while(1) puts(没有找到此课程,是否继续查询?(y
18、/n); while(j=getchar()=n); while(getchar()!=n); if(j=n|j=N|j=y|j=Y) break; if(j=n|j=N) system(CLS); return 0; void find2() int i,j=-1,m,n,p,a20; while(j7) puts(要查询周几的课程?(请直接输入一位数字)); scanf(%d,&j); while(getchar()!=n); for(i=0,p=0,a0=-1;icount;i+) if(lessoni.time/10=j) ap+=i; system(CLS); if(a0=-1) p
19、uts(当天没有课程!); else puts(-); puts(课程tt性质tt教师tt时间tt教室n); for(i=0;ip;i+) m=lessonai.time/10; n=lessonai.time%10; printf(%stt%stt%stt周%d第%d节t%sn,lessonai.name,lessonai.nature,lessonai.teacher,m,n,lessonai.room); void find3() int i,j,p,m,n,a20; char b5; while(1) puts(选择要查询的课程性质:); puts(1:必修); puts(2:选修);
20、 scanf(%d,&j); while(getchar()!=n); if(j=1) strcpy(b,必修); break; if(j=2) strcpy(b,选修); break; for(i=0,p=0,a0=-1;icount;i+) if(strcmp(b,lessoni.nature)=0) ap+=i; system(CLS); if(a0=-1) puts(没有查找到相关课程!); else puts(-); puts(课程tt性质tt教师tt时间tt教室n); for(i=0;ip;i+) m=lessonai.time/10; n=lessonai.time%10; pr
21、intf(%stt%stt%stt周%d第%d节t%sn,lessonai.name,lessonai.nature,lessonai.teacher,m,n,lessonai.room); void del(int i) char j; while(1) puts(确定要删除吗?(y/n); while(j=getchar()=n); while(getchar()!=n); if(j=n|j=N|j=y|j=Y) break; system(CLS); if(j=n|j=N) return 0; count-; for(i;i0&j6) k=1; while(getchar()!=n); switch(j) case 1: puts(请输入新的课程名称:); scanf(%s,lessoni.name); break; case 2: while(1) puts(选择课程性质:); puts(1:必修); puts(2:选修); scanf(%d,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1