个人课程表管理系统设计报告专业:通信工程班级:通信1401 团队: C.F 指导老师:刘少昌队长:陈志强队员:蔡晶晶、陈超、刘勤、盛玉霞设计时间:2015年7月9日星期四说明*我们的课题是:个人课程表管理系统*选题的目的与意义:我们的系统是为了更加方便的查询课程表,方便我们的大学校园生活而创建。
这个项目符合我们大一学生c语言水平,而且此课题新颖,可以充分锻炼我们团队思维能力。
*项目的主要功能描述:一输入课程:可根据个人需求,填写课程表信息。
二显示课程:按照时间顺序显示。
三查询课表:有以时间、课程名、查询。
四修改课程: 可以按照已有的课程信息,选择要修改课程的序号,可以修改已选序号的全部信息、时间、课程名、教室。
五删除课程:可以按照已有的课程信息,选择要修改课程的序号,进行删除。
六保存文件保存文件七退出程序:退出程序。
结构体设计 struct schedule{char time[8]; 字符型课程时间char lessonname[12]; 字符型课程名char teacher[10]; 字符型授课老师char classroom[10]; 字符型教室char hours[4]; 字符型第几节课 int weeks; 整型周时};全局变量struct schedule str[100];*函数原型设计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(); /*声明修改课程子函数*/j)void amendnews(int i); /*声明修改整个课程信息函数k)void amendtime(int i); /*声明修改课程时间函数*/ l)void lessonname(int i);/*声明修改课程课程名函数*/ m)void amendclassroom(int i);/*声明修改课程教室函数n)void deleted(); /*声明删除函数*/程序登陆界面用户界面输入课程表保存文件表显示课程表查询课程表修改课程表删除课程表课程时间课程名修改教室修改课程名总周时授课老师修改时间教室课程所有信息第几节课返回主菜单按照课程查询按照时间查询*函数结构图*项目流程图*登陆界面*用户界面*各项功能实现输入课程表显示课程表修改课程表保存文件*运行程序注意事项、须知:一、打开程序,登陆界面密码为:123。
二、打开输入项目,输入的周时必须是整数且大于0,负责无法保存。
三、当输入菜单选项时,务必输入是整数,若不是,系统会错误,需按照程序提示输入。
*程序代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>void input(); /*声明输入函数*/void menu1(); /*声明主菜单函数*/void rank(); /*声明显示时间顺序函数*/void querymenu3(); /*声明查询函数*/void looktime(); /*声明按照时间查询函数*/void looklessonname(); /*声明按照课程名查询函数*/void add(); /*声明保存函数*/void amend(); /*声明修改课程函数*/void amend1(); /*声明修改课程子函数*/void amendnews(int i); /*声明修改整个课程信息函数*/void amendtime(int i); /*声明修改课程时间函数*/void amendlessonname(int i); /*声明修改课程课程名函数*/void amendclassroom(int i); /*声明修改课程教室函数*/void deleted(); /*声明删除函数*/struct student{char time[10]; /*字符型时间*/char lessonname[20]; /*字符型课程名*/char teacher[20]; /*字符型授课老师*/char classroom[10]; /*字符型教室 */char hours[10]; /*字符型第几节课*/int weeks; /*字符型周时*/};struct student str[30]; /*全局变量*/void main(){char password[20];int i,j;system("color 1a"); /*设置颜色源网络资源*/printf("\n");printf("\t *************欢迎使用〖个人课程表管理系统〗程序************\n");printf("\t * 请输入登陆密码(三次输入机会)! *\n");printf("\t***********************************************************\n");printf("\t用户名:CombinedProgammingLanguage.Family\n");for(i=1;i<4;i++) /*密码输入三次 for循环*/{printf("\t 第%d次输入密码:",i);for(j=0;(password[j]=getch())!='\r';j++)/*输入密码*/putch('*'); /*每次输入的密码以*号覆盖隐藏*/printf("\n");password[j]='\0'; /*字符串最后加结束符号*/if((strcmp(password,"123"))==0){printf("\t *密码正确,打开程序!\n");menu1(); /*调用子函数meun1()*/}else{printf("\t *密码错误,请重新输入\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. ☆退出课程表☆*\n");printf("\t┏********************************************************┓\n");printf("\t* 团队名:c.f(CombinedProgammingLanguage.Fam ily); * \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输入: ");scanf("%d",&number);if(number<0 || number>7){printf("\t\t你输入的功能号错误,请重新输入,按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();break; /*调用保存函数*/case 7: printf("\t\t\t谢谢你的使用!任意键退出程序!\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("\t\t第%d个课程信息:\n",i+1);printf("\t\t课程时间:");scanf("%s",&str[i].time);printf("\t\t课程名:");scanf("%s",str[i].lessonname);printf("\t\t授课老师:");scanf("%s",str[i].teacher);printf("\t\t教室:");scanf("%s",str[i].classroom);printf("\t\t第几节课:");scanf("%s",str[i].hours);printf("\t\t总周时:");scanf("%d",&str[i].weeks);printf("\t*************************** **************\n");printf("\t**您好!是否继续输入下个课程? (Y/N)! 输入: ");getchar();scanf("%c",&a);if(a=='y'||a=='Y') /*如果输入是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;j<29;j++) /*从大到小排序*/for(i=0;i<29-j;i++)if(strcmp(str[i].time,str[i+1].time)<0){temp.weeks=str[i].weeks; /*利用strpy函数字符串覆盖*/strcpy(temp.time,str[i].time);strcpy(temp.lessonname,str[i].lessonn ame);strcpy(temp.teacher,str[i].teacher) ;strcpy(temp.classroom,str[i].classroo m);strcpy(temp.hours,str[i].hours);str[i].weeks=str[i+1].weeks; strcpy(str[i].time,str[i+1].time);strcpy(str[i].lessonname,str[i+1].les sonname);strcpy(str[i].teacher,str[i+1].teac her);strcpy(str[i].classroom,str[i+1].clas sroom);strcpy(str[i].hours,str[i+1].hours);str[i+1].weeks=temp.weeks;strcpy(str[i+1].time,temp.time);strcpy(str[i+1].lessonname,temp.lesso nname);strcpy(str[i+1].teacher,temp.teacher);strcpy(str[i+1].classroom,temp.classroom);strcpy(str[i+1].hours,temp.hours); /*此时排序为星期一星期五星期四三二不符合*/j=0;/*把星期一移到最后位置*/for(i=0;i<30;i++){ /*判断周时不为0 的个数*/if(str[i].weeks!=0)j++;}for(i=0;i<j-1;i++)/*把每两个数互换达到将第一个换到最后一个*/{temp.weeks=str[i].weeks; /*利用strpy函数字符串覆盖*/strcpy(temp.time,str[i].time);strcpy(temp.lessonname,str[i].lessonname);strcpy(temp.teacher,str[i].teacher);strcpy(temp.classroom,str[i].classroo m);strcpy(temp.hours,str[i].hours);str[i].weeks=str[i+1].weeks;strcpy(str[i].time,str[i+1].time);strcpy(str[i].lessonname,str[i+1].les sonname);strcpy(str[i].teacher,str[i+1].teac her);strcpy(str[i].classroom,str[i+1].clas sroom);strcpy(str[i].hours,str[i+1].hours);str[i+1].weeks=temp.weeks;strcpy(str[i+1].time,temp.time);strcpy(str[i+1].lessonname,temp.lesso nname);strcpy(str[i+1].teacher,temp.teache r);strcpy(str[i+1].classroom,temp.classr oom);strcpy(str[i+1].hours,temp.hours);}i=0; /*将已排序显示*/flag=1;printf("\t********************〖时间顺序显示〗**********************\n"); printf("\t序号\t时间\t课程名\t老师\t教室\t节时\t总周时\n");while(flag){if(str[i].weeks!=0)printf("\t%d\t%s\t%s\t%s\t%s\t%s\t%d\ n",i+1,str[i].time,str[i].lessonname, str[i].teacher,str[i].classroom,str[i ].hours,str[i].weeks);elseflag=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. ☆返回主菜单☆ * \n");printf("\t*****************请输入选择的功能编号(1-6):*****************\n");printf("\t 输入: ");scanf("%d",&number);if(number<0 || number>3){printf("\t\t你输入的功能号错误,请重新输入,按任意键继续!!\n");system("cls");continue;}switch(number){case 1: looktime();break; /*调用查询函数*/case 2: looklessonname();break; /*调用查询课程名函数*/case 3: menu1();break; /*调用返回主菜单函数*/}}}void looktime(){int i=0,sum=0;char time1[8];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,str[i].time))==0){printf("\t%d\t%s\t%s\t%s\t%s\t%s\t%d\ n",i+1,str[i].time,str[i].lessonname, str[i].teacher,str[i].classroom,str[i ].hours,str[i].weeks);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 lessonname1[12];system("cls");printf("\t ***********欢迎使用〖以课程名查询课程〗子程序****************\n");printf("\t *****************请输入你想查询课表的课程名:");scanf("%s",lessonname1);printf("\t序号\t时间\t课程名\t 老师\t教室\t节时\t总周时\n");for(i=0;i<=30;i++){if((strcmp(lessonname1,str[i].lessonn ame))==0){printf("\t%d\t%s\t%s\t%s\t%s\t%s\t%d\ n",i+1,str[i].time,str[i].lessonname, str[i].teacher,str[i].classroom,str[i ].hours,str[i].weeks);sum=sum+1;}}if(sum==0) /*上面通解*/printf("\t *********************无此课程名!查询不到!***********************\n");printf("\t *******************按任意键返回查询子菜单:********************\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 openerror!\n");exit(0);}else{fprintf(fp,"\t********************〖按照时间顺序显示〗*********************\n");fprintf(fp,"\t序号\t时间\t课程名\t老师\t教室\t节时\t总周时\n");while(flag1){if(str[i].weeks!=0)fprintf(fp,"\t%d\t%s\t%s\t%s\t%s\t%s\ t%d\n",i+1,str[i].time,str[i].lessonn ame,str[i].teacher,str[i].classroom,s tr[i].hours,str[i].weeks);elseflag1=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){if(str[i].weeks!=0)printf("\t%d\t%s\t%s\t%s\t%s\t%s\t%d\ n",i+1,str[i].time,str[i].lessonname, str[i].teacher,str[i].classroom,str[i ].hours,str[i].weeks);elseflag=0;i++;}printf("\t********************是否确定修改(y修改/n返回主函数):");c=getch();putch(c);printf("\n");if(c=='n'||c=='N'){printf("\t*************************按任意键返回主菜单:**********************\n");system("pause");system("cls");menu1();}else{printf("\t*******************输入需要修改课程的序号:");scanf("%d",&n);while(1){printf("\t┏************************************* ****************┓\n");printf("\t* 1. ☆修改序列%d 课程所有信息☆* \n",n);printf("\t* 2. ☆修改序列%d 课程时间☆* \n",n);printf("\t* 3. ☆修改序列%d 课程课程名☆* \n",n);printf("\t* 4. ☆修改序列%d 课程教室☆* \n",n);printf("\t* 5. ☆返回主菜单☆ *\n");printf("\t*****************请输入选择的功能编号(1-8):*************\n");printf("\t 输入: ");scanf("%d",&u);if(u<0 || u>5){printf("\t\t你输入的功能号错误,请重新输入,按任意键继续!!\n");system("cls");continue;}switch(u){case 1: amendnews(n);break; /*调用修改整个课程信息函数*/case 2: amendtime(n);break; /*调用修改课程时间函数*/case 3: amendlessonname(n);break; /*调用修改课程课程名函数*/case 4: amendclassroom(n);break; /*调用修改课程教室函数*/case 5: menu1();break; /*调用返回主菜单函数*/}}}}void amendnews(int i){printf("\t******************修改序列%d 课程所有信息*******************\n",i);printf("\t\t修改课程信息:\n"); printf("\t\t修改课程时间:");scanf("%s",&str[i-1].time);printf("\t\t修改课程名:");scanf("%s",str[i-1].lessonname);printf("\t\t修改授课老师:");scanf("%s",str[i-1].teacher);printf("\t\t修改教室:");scanf("%s",str[i-1].classroom);printf("\t\t修改第几节课:");scanf("%s",str[i-1].hours);printf("\t\t修改总周时:");scanf("%d",&str[i-1].weeks);printf("\t*****************返回修改子菜单查看修改结果*****************\n");system("pause");system("cls");amend();}void amendtime(int i){printf("\t******************修改序列%d 课程时间*******************\n",i);printf("\t\t修改课程时间:");scanf("%s",&str[i-1].time);printf("\t*****************返回修改子菜单查看修改结果*****************\n");system("pause");system("cls");amend();}void amendlessonname(int i){printf("\t******************修改序列%d 课程课程名*******************\n",i);printf("\t\t修改课程名:");scanf("%s",str[i-1].lessonname);printf("\t*****************返回修改子菜单查看修改结果*****************\n");system("pause");system("cls");amend();}void amendclassroom(int i){printf("\t******************修改序列%d 课程教室*******************\n",i);printf("\t\t修改教室:");scanf("%s",str[i-1].classroom); printf("\t*****************返回修改子菜单查看修改结果*****************\n");system("pause");system("cls");amend();}void deleted(){int i=0,flag=1,n;char c;struct student temp;system("cls");printf("\t**********************〖删除课程〗**********************\n");printf("\t*************************课程列表*************************\n");printf("\t序号\t时间\t课程名\t老师\t教室\t节时\t总周时\n");while(flag){if(str[i].weeks!=0)printf("\t%d\t%s\t%s\t%s\t%s\t%s\t%d\n",i+1,str[i].time,str[i].lessonname,str[i].teacher,str[i].classroom,str[i].hours,str[i].weeks);elseflag=0;i++;}printf("\t********************是否确定修改(y修改/n返回主函数):");c=getch();putch(c);printf("\n");if(c=='n'||c=='N'){printf("\t*************************按任意键返回主菜单:**********************\n");menu1();}else{printf("\t*******************输入需要删除课程的序号:");scanf("%d",&n);for(i=n-1;i<=30;i++) {temp.weeks=str[i].weeks;strcpy(temp.time,str[i].time);strcpy(temp.lessonname,str[i].lessonn ame);strcpy(temp.teacher,str[i].teacher) ;strcpy(temp.classroom,str[i].classroo m);strcpy(temp.hours,str[i].hours);str[i].weeks=str[i+1].weeks; strcpy(str[i].time,str[i+1].time); strcpy(str[i].lessonname,str[i+1].lessonname);strcpy(str[i].teacher,str[i+1].teac her);strcpy(str[i].classroom,str[i+1].clas sroom);strcpy(str[i].hours,str[i+1].hours);str[i+1].weeks=temp.weeks;strcpy(str[i+1].time,temp.time);strcpy(str[i+1].lessonname,temp.lesso nname);strcpy(str[i+1].teacher,temp.teache r);strcpy(str[i+1].classroom,temp.classr oom);。