资源描述
个人课程表管理系统
设
计
报
告
专 业: 通信工程
班 级: 通信1401
团 队: C.F
指导老师: 刘少昌
队 长: 陈志强
队 员: 蔡晶晶、陈超、刘勤、盛玉霞
设计时间: 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(); /*申明 删除函数*/
*程序结构图:
程序
登陆界面
用户界面
保留文件表
删除课程表
显示课程表
查询课程表
修改课程表
输入课程表
总周时
第几节课
教室
讲课老师
课程名
课程时间
修改教室
修改课程名
修改时间
课程全部信息
返回主菜单
根据课程查询
根据时间查询
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()
课程查询函数
void looktime() 时间查询函数
*项目步骤图
开始(显示程序)
结束
A==y or a==n
输入(y\n)
输入课程表信息
开始(输入程序)
str[i].weeks!=0
否
是
显示课程表
否
结束
开始(修改程序)
输入查询时间
开始(查询程序)
输入修改序号
输入修改内容
判定是否和课程时间是否一致
结束
显示课程
结束
开始(保留文件)
开始(删除程序)
文件写入程序
输入删除程序序号
结束
结束
*登陆界面*用户界面
*各项功效实现
输入课程表
显示课程表
查询课程表
修改课程表
删除课程表保留文件
*运行程序注意事项、须知:
一、打开程序,登陆界面密码为: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.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 输入: ");
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].lessonname);
strcpy(temp.teacher,str[i].teacher);
strcpy(temp.classroom,str[i].classroom);
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].teacher);
strcpy(str[i].classroom,str[i+1].classroom);
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.lessonname);
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].classroom);
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].teacher);
strcpy(str[i].classroom,str[i+1].classroom);
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.lessonname);
strcpy(str[i+1].teacher,temp.teacher);
strcpy(str[i+1].classroom,temp.classroom);
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);
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. ☆ 返回主菜单 ☆ * \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].lessonname))==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 open error!\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].lessonname,str[i].teacher,str[i].classroom,str[i].hours,str[i].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)
{
if(str[i].weeks!=0)
printf("\t%d\t%s\t%s\t%s\t%s\t%s\t%d\
展开阅读全文