1、C语言课程设计个人课程表管理系统报告432020年4月19日文档仅供参考个人课程表管理系统设计报告 专 业: 通信工程 班 级: 通信1401 团 队: C.F 指导老师: 刘少昌 队 长: 陈志强 队 员: 蔡晶晶、陈超、刘勤、盛玉霞 设计时间: 7月9日星期四 说明*我们的课题是:个人课程表管理系统*选题的目的与意义: 我们的系统是为了更加方便的查询课程表,方便我们的大学校园生活而创立。这个项目符合我们大一学生c语言水平,而且此课题新颖,能够充分锻炼我们团队思维能力。*项目的主要功能描述:一 输入课程:可根据个人需求,填写课程表信息。二 显示课程:按照时间顺序显示。三 查询课表:有以时间、
2、课程名、查询。四 修改课程: 能够按照已有的课程信息,选择要修改课程的序号,能够修改已选序号的全部信息、时间、课程名、教室。五 删除课程:能够按照已有的课程信息,选择要修改课程的序号,进行删除。六 保存文件 保存文件七 退出程序:退出程序。*数据结构设计:结构体设计 struct schedule char time8; 字符型 课程时间 char lessonname12; 字符型 课程名 char teacher10; 字符型 授课老师 char classroom10; 字符型 教室char hours4; 字符型 第几节课 int weeks; 整型 周时 ; 全局变量 struct
3、schedule str100; *函数原型设计a) void input(); /*声明 输入函数*/b) void menu1(); /*声明 主菜单函数*/ c) void rank(); /*声明 显示时间顺序函数*/d) void querymenu3(); /*声明 查询函数*/e) void looktime(); /*声明 按照时间查询函数*/f) void looklessonname(); /*声明 按照课程名查询函数*/g) void add(); /*声明 保存函数*/h) void amend(); /*声明 修改课程函数*/i) void amend1(); /*声
4、明 修改课程子函数*/j) void amendnews(int i); /*声明 修改整个课程信息函数k) void amendtime(int i); /*声明 修改课程时间函数*/l) void lessonname(int i);/*声明 修改课程课程名函数*/m) void amendclassroom(int i);/*声明 修改课程教室函数n) void deleted(); /*声明 删除函数*/*程序结构图:程序登陆界面用户界面保存文件表删除课程表显示课程表查询课程表修改课程表输入课程表总周时第几节课教室授课老师课程名课程时间修改教室修改课程名修改时间课程所有信息返回主菜单按
5、照课程查询按照时间查询void menu1();显示用户界面函数void main()登陆函数*函数结构图void rank() 显示函数void querymenu3()查询函数void amend() 修改函数void deleted() 删除函数void add(); 保存函数void input() 输入函数amendclassroom(int i)修改教室函数voamendlessonname(i i);修改课程函数void amendtime(int i);修改时间函数void amendnews(int i);修改所有信息哈void looklessonname() 课程查询函数
6、void looktime() 时间查询函数*项目流程图开始(显示程序)结束A=y or a=n输入(yn)输入课程表信息开始(输入程序)stri.weeks!=0 否 是显示课程表否结束开始(修改程序)输入查询时间开始(查询程序)输入修改序号输入修改内容判断是否与课程时间是否一致结束显示课程结束开始(保存文件)开始(删除程序)文件写入程序输入删除程序序号结束结束*登陆界面*用户界面*各项功能实现输入课程表显示课程表查询课程表修改课程表删除课程表保存文件*运行程序注意事项、须知:一、打开程序,登陆界面密码为:123。二、打开输入项目,输入的周时必须是整数且大于0,负责无法保存。三、当输入菜单选
7、项时,务必输入是整数,若不是,系统会错误,需按照程序提示输入。*程序代码:#include #include #include #include void input(); /*声明 输入函数*/void menu1(); /*声明 主菜单函数*/ void rank(); /*声明 显示时间顺序函数*/void querymenu3(); /*声明 查询函数*/void looktime(); /*声明 按照时间查询函数*/void looklessonname(); /*声明 按照课程名查询函数*/void add(); /*声明 保存函数*/void amend(); /*声明 修改课程
8、函数*/void amend1(); /*声明 修改课程子函数*/void amendnews(int i); /*声明 修改整个课程信息函数*/void amendtime(int i); /*声明 修改课程时间函数*/void amendlessonname(int i); /*声明 修改课程课程名函数*/void amendclassroom(int i); /*声明 修改课程教室函数*/void deleted(); /*声明 删除函数*/struct studentchar time10; /*字符型 时间*/char lessonname20; /*字符型 课程名*/char te
9、acher20; /*字符型 授课老师*/char classroom10; /*字符型 教室 */ char hours10; /*字符型 第几节课*/int weeks; /*字符型 周时*/;struct student str30; /*全局变量*/void main() char password20; int i,j; system(color 1a); /*设置颜色 源网络资源*/ printf(n); printf(t *欢迎使用个人课程表管理系统程序*n); printf(t * 请输入登陆密码(三次输入机会)! *n); printf(t *n); printf(t 用户名
10、:CombinedProgammingLanguage.Familyn); for(i=1;i4;i+) /*密码输入三次 for循环*/ printf(t 第%d次输入密码:,i); for(j=0;(passwordj=getch()!=r;j+) /*输入密码*/ putch(*); /*每次输入的密码以*号覆盖 隐藏*/ printf(n); passwordj=0; /*字符串最后加结束符号*/ if(strcmp(password,123)=0) printf(t *密码正确,打开程序!n); menu1(); /*调用子函数meun1()*/ else printf(t *密码错
11、误,请重新输入n); if(i=3) printf(t *您已输入三次,请重新登陆程序n); exit(0); void menu1() /*主菜单*/ int number; system(cls); while(1) printf(t*欢迎使用 课程表管理系统 程序*n); printf(t* 1. 输入课程表 *n); printf(t* 2. 显示课程表 *n); printf(t* 3. 查询课程表 *n); printf(t* 4. 修改课程表 *n); printf(t* 5. 删除课程表 *n); printf(t* 6. 保存文件表 *n); printf(t* 7. 退出课
12、程表 *n); printf(t *n); printf(t* 团队名:c.f(CombinedProgammingLanguage.Family); * n); printf(t* 成员 负责任务 * n); printf(t* 1.蔡晶晶 ppt制作 程序项目分析 * n); printf(t* 2.陈 超 ppt制作 * n); printf(t* 3.陈志强 代码编写 * n); printf(t* 4.刘 勤 文档制作 程序项目分析 * n); printf(t* 5.盛玉霞 文档制作 * n); printf(t*请输入选择的功能编号(1-7):*n); printf(t 输入:
13、); scanf(%d,&number); if(number7) printf(tt你输入的功能号错误,请重新输入,按Enter键继续!n); system(cls);continue; switch(number) case 1: input();break; /*调用 输入函数*/ case 2: rank();break; /*调用 显示函数*/ case 3: querymenu3();break; /*调用 查询函数*/case 4: amend();break; /*调用 修改函数*/case 5: deleted();break; /*调用 删除函数*/ case 6: add
14、();break; /*调用 保存函数*/ case 7: printf(ttt谢谢你的使用!任意键退出程序!n);exit(0); void input() /*/ int i=0,flag=1;char a; system(cls); printf(t*n);printf(t*您将会输入: 课程时间 课程名 授课老师 教室 第几节课 总周时*n);printf(t*输入内容如: 星期一 C语言 刘老师 a1n205 1-3 2 *n); printf(t*n); while(flag) /*输入数据*/printf(tt第%d个课程信息:n,i+1);printf(tt课程时间:);sca
15、nf(%s,&stri.time); printf(tt课程名:);scanf(%s,stri.lessonname);printf(tt授课老师:);scanf(%s,stri.teacher); printf(tt教室:);scanf(%s,stri.classroom); printf(tt第几节课:);scanf(%s,stri.hours);printf(tt总周时:);scanf(%d,&stri.weeks); printf(t*n);printf(t*您好!是否继续输入下个课程? (Y/N)! 输入: ); getchar();scanf(%c,&a);if(a=y|a=Y)
16、/*如果输入是y则输入下个数据*/flag=1;if(a=n|a=N) /*如果输入是n 则结束输入 */flag=0;printf(t*输入完成,任意键返回主菜单!*n); system(pause); system(cls);i+;void rank() int i,j,flag;struct student temp; system(cls); for(j=0;j29;j+) /*从大到小排序*/ for(i=0;i29-j;i+) if (strcmp(stri.time,stri+1.time)0) temp.weeks=stri.weeks; /*利用strpy函数字符串覆盖*/s
17、trcpy(temp.time,stri.time); strcpy(temp.lessonname,stri.lessonname);strcpy(temp.teacher,stri.teacher); strcpy(temp.classroom,stri.classroom); strcpy(temp.hours,stri.hours);stri.weeks=stri+1.weeks;strcpy(stri.time,stri+1.time); strcpy(stri.lessonname,stri+1.lessonname);strcpy(stri.teacher,stri+1.teac
18、her); strcpy(stri.classroom,stri+1.classroom); strcpy(stri.hours,stri+1.hours); stri+1.weeks=temp.weeks; strcpy(stri+1.time,temp.time); strcpy(stri+1.lessonname,temp.lessonname);strcpy(stri+1.teacher,temp.teacher); strcpy(stri+1.classroom,temp.classroom); strcpy(stri+1.hours,temp.hours); /*此时排序为 星期一
19、 星期五 星期四 三 二 不符合*/ j=0; /*把星期一移到最后位置*/ for(i=0;i30;i+) /*判断周时不为0 的个数*/ if(stri.weeks!=0) j+; for(i=0;ij-1;i+) /*把每两个数互换 达到将第一个换到最后一个*/ temp.weeks=stri.weeks; /*利用strpy函数字符串覆盖*/strcpy(temp.time,stri.time); strcpy(temp.lessonname,stri.lessonname);strcpy(temp.teacher,stri.teacher); strcpy(temp.classroo
20、m,stri.classroom); strcpy(temp.hours,stri.hours);stri.weeks=stri+1.weeks;strcpy(stri.time,stri+1.time); strcpy(stri.lessonname,stri+1.lessonname);strcpy(stri.teacher,stri+1.teacher); strcpy(stri.classroom,stri+1.classroom); strcpy(stri.hours,stri+1.hours); stri+1.weeks=temp.weeks; strcpy(stri+1.time
21、,temp.time); strcpy(stri+1.lessonname,temp.lessonname);strcpy(stri+1.teacher,temp.teacher); strcpy(stri+1.classroom,temp.classroom); strcpy(stri+1.hours,temp.hours); i=0; /*将已排序显示*/flag=1; printf(t*时间顺序显示*n); printf(t序号t时间t课程名t老师t教室t节时t总周时n); while(flag) if(stri.weeks!=0) printf(t%dt%st%st%st%st%st%
22、dn,i+1,stri.time,stri.lessonname,stri.teacher,stri.classroom,stri.hours,stri.weeks); else flag=0; i+; printf(t*n); system(pause); system(cls);void querymenu3() /*查询函数*/ int number; system(cls); while(1) printf(t*欢迎使用 查询课程子子菜单 程序*n); printf(t* 1. 按照时间查询 * n); printf(t* 2. 按照课程查询 * n); printf(t* 3. 返回
23、主菜单 * n); printf(t*请输入选择的功能编号(1-6):*n); printf(t 输入: ); scanf(%d,&number); if(number3) printf(tt你输入的功能号错误,请重新输入,按任意键继续!n); system(cls);continue; switch(number) case 1: looktime();break; /*调用查询函数*/ case 2: looklessonname();break; /*调用查询课程名函数*/ case 3: menu1();break; /*调用返回主菜单函数*/ void looktime() int
24、i=0,sum=0; char time18; system(cls); printf(t *欢迎使用 以时间查询课程 子程序*n); printf(t *请输入你想查询课表的时间:); scanf(%s,time1); printf(t序号t时间t课程名t老师t教室t节时t总周时n); for(i=0;i=30;i+) if(strcmp(time1,stri.time)=0) printf(t%dt%st%st%st%st%st%dn,i+1,stri.time,stri.lessonname,stri.teacher,stri.classroom,stri.hours,stri.week
25、s); sum=sum+1; /*如输入查询的内容和课程相同 则加一*/ if(sum=0) /*如果等于0 则说明没有与输入查询内容相同*/ printf(t *无此时间!查询不到!*n); printf(t *按任意键返回查询子菜单:*n); system(pause); system(cls); querymenu3();void looklessonname() int i=0,sum=0; char lessonname112; system(cls); printf(t *欢迎使用 以课程名查询课程 子程序*n); printf(t *请输入你想查询课表的课程名:); scanf(
26、%s,lessonname1); printf(t序号t时间t课程名t老师t教室t节时t总周时n); for(i=0;i=30;i+) if(strcmp(lessonname1,stri.lessonname)=0) printf(t%dt%st%st%st%st%st%dn,i+1,stri.time,stri.lessonname,stri.teacher,stri.classroom,stri.hours,stri.weeks); sum=sum+1; if(sum=0) /*上面通解*/ printf(t *无此课程名!查询不到!*n); printf(t *按任意键返回查询子菜单:
27、*n); system(pause); system(cls); querymenu3();void add() int i,flag1=1; FILE *fp; system(cls);i=0; /*保存到文本*/ if (fp=fopen(文件保存.txt,w)=NULL) printf(file open error!n); exit(0); elsefprintf(fp,t*按照时间顺序显示*n);fprintf(fp,t序号t时间t课程名t老师t教室t节时t总周时n);while(flag1) if(stri.weeks!=0) fprintf(fp,t%dt%st%st%st%st
28、%st%dn,i+1,stri.time,stri.lessonname,stri.teacher,stri.classroom,stri.hours,stri.weeks); else flag1=0; i+; fprintf(fp,t*n); fclose(fp); printf(*保存成功 按任意键返回查询主菜单:*n); system(pause); system(cls);void amend() int i=0,flag=1,u,n;char c; system(cls); printf(t* 修改课程 *n);printf(t*课程列表*n); printf(t序号t时间t课程名t老师t教室t节时t总周时n); while(flag)