C语言课程设计学生课表管理系统学院:计算机与信息科学学院学生姓名:指导教师:专业:软件工程班级:软件1401完成时间:目录1问题要求及问题描述·······················21.1概述···························21.2题目要求·························21.3问题描述·························21.4主要功能·························21.5我的任务·························22解决问题的主要思路以及方法···················32.1关键问题·························32.2拟采用解决问题的方法···················32.3主要算法以及处理流程图··················33程序实现····························53.1程序实现时应考虑的问题··················53.2主要源代码及说明·····················54测试或调试···························105小结······························135.1本问题解决方法及程序实现小结···············135.2尚未解决的问题以及下一步工作思路·············136参考文献····························141问题要求及问题描述1.1概述由于科技的迅速发展,将人们带入了一个信息化时代。计算机越来越贴近人们的生活,而纸质的课表不便于保存,也容易损坏,并且不能及时更改。为了使课表更加人性化,我们制作了学生课表系统。即使人们在外出时也可以随时查看课表。1.2题目要求制作一个便于携带与查看的学生课表系统1.3问题描述此系统应该能允许学生用学号进行注册,注册之后可以顺利地登录,然后查看课表,所看的课表与学号是对应的,不同的学号对应一个不同的课表。可根据需要对已有的课表进行增添删除与修改。1.4主要功能(1)登录权限:用户注册并登录成功才可查看课表,加大系统的安全性。(2)显示信息:显示对应班级的学生课表。(3)修改信息:学生可修改对应的课程。(4)添加信息:学生可添加自己的课程。(5)删除信息:学生可将错添或已修完课程删除。(6)退出系统:课表查看完成后,可以退出系统。1.5我的任务我的任务为完成学生登录与修改信息部分。2解决问题的主要思路以及方法2.1关键问题1.如何对修改数据进行保存,使用数组还是文件。2.如何将代码分装并连接,实现模块化程序设计。2.2拟采用解决问题的方法1.利用二维数组将数据保存,使用时再取出。2.利用函数的思想,将程序划分为几个小模块。2.3主要算法以及处理流程图主要算法:for循环对数据进行遍历。if语句实现程序的条件循环。流程图如下:NY图1.4流程图3程序实现3.1程序实现时应考虑的问题程序较多使用循环结构,循环嵌套容易出错导致程序达不到预期效果。代码较多,应多给予注释,增加程序的可读性,便于后期程序的测试与调试。3.2主要源代码及说明软件主要功能部分代码:#includestdio.h#includeconio.h登录修改课表显示课表添加课表删除课表退出系统退出?主菜单#includestdlib.h#includestring.h#includeinformation.hintclassinfor();voidaboutsys();intname();charnewword[10];intmain(){charchoice;do{system(cls);printf(*************************************************************\n\n);printf(*******************湖南工学院课表管理系统********************\n\n);printf(\t\t1.激活学号\n\n);printf(\t\t2.学生登录\n\n);printf(\t\t3.关于我们\n\n);printf(\t\t0.退出系统\n\n);printf(*************************************************************\n\n);printf(*************************************************************\n\n);choice=getch();switch(choice){case'1':name();system(pause);break;case'2':if(classinfor()==1){readclassfile();classinformation();}system(pause);break;case'3':aboutsys();system(pause);break;case'0':exit(0);break;}}while(choice!='0');return0;}intname(){charchoice;printf(请输入您的学号:);scanf(%s,newname);printf(请输入您的密码:);scanf(%s,newword);if(strcmp(newname,b)==0||strcmp(newname,c)==0||strcmp(newname,d)==0||strcmp(newname,e)==0||strcmp(newname,f)==0||strcmp(newname,g)==0){printf(注册成功!请问是否继续登录?(y?n):);choice=getch();if(choice=='y'||choice=='Y'){classinfor();}}else{printf(对不起,信息有误,请重新输入!);}return0;}intclassinfor(){//charusername[1];charpassword[10];inti;intcount=0;intbanlance;intuser;intpass;system(cls);for(i=0;i3;i++){printf(您好!现在开始登录);printf(\n请输入学号:);scanf(%s,newname);printf(\n请输入密码:);scanf(%s,password);user=strcmp(newname,newname);pass=strcmp(newword,password);if(user==0&&pass==0){classinformation();}count++;banlance=3-count;printf(\n对不起,您的信息有误,您还有%d次机会,banlance);if(i=3){printf(\n对不起,您的次数用完,系统将自动退出);exit(0);}}return0;}voidaboutsys(){system(cls);printf(********************************************************\n\n);printf(\t主办单位:湖南工学院\n\n);printf(\t协办单位:源辰科技\n\n);printf(********************************************************\n\n);}intupdatainformation(){inti,j;charnames[20];charchoice;for(i=0;i4;i++)for(j=0;j6;j++)a[i][j]=;printf(请输入要修改星期几的课(阿拉伯数字输入):);scanf(%d,&j);printf(请输入要修改星期%d的第几节课(阿拉伯数字输入):,j);scanf(%d,&i);printf(请输入修改为:);scanf(%s,names);printf(请问是否确认修改?(y?n):);choice=getch();if(choice=='y'||choice=='Y'){a[i-1][j]=names;queryinformation();}return0;}4测试或调试图4.1激活学号图4.2学生登录图4.3修改课表测试数据:注册学号:1001密码:1登录学号:1001密码:1修改课表:2,3修改课程:PE测试结果:登录功能:正常显示功能:正常查询功能:正常修改添加:正常添加功能:正常删除功能:正常结论:修改后数据的保存有一点小问题,测试出后改正。5小结5.1本问题解决方法及程序实现小结程序虽然很小很简单,但是具体实现时还是遇到了很多问题,比如何将字符数据促存入二维数组中,或者是如何调用函数这种小问题。一点点的小错误,有时候仅仅只是概念上的模糊,或者是一知识点的错误,程序就不能运行,在与同学商量讨论后再自己改正错误的,我体会到了平时C语言课上没有的乐趣。只有真正自己动手是才能发现自己还存在很多的不足。自己的C语言还需要进一步的巩固与运用。在这次课程设计里,我们体会到了与以前没有过的团队协作与程序的模块化,一起努力编写,每个人实现程序中的一小步。最后,一起组成了一个完整的程序。5.2尚未解决的问题以及下一步工作思路程序还存在很多问题,比如没有用文件来存储信息,用二维数组存储的数据太少。程序可增添完善的地方还有很多,比如,可以增加上课的教室地点,教室姓名,一起上课的同学。下一步工作思路:继续完善增添,将界面变得美观化。6参考文献[1]《百度百科》[2]c语言程序设计第二版北京:清华大学出版社