资源描述
课 程 设 计 报 告
课程名称 C语言程序设计
课题名称 教师评价系统 数据库管理系统设计
专 业 自动化
班 级
学 号
姓 名
指导教师
湖南工程学院
课 程 设 计 任 务 书
课程名称 C语言程序设计
课 题 教师评价系统数据库管理系统设计
专业班级 自动化1602
学生姓名
学 号
指导老师
审 批
任务书下达日期 2016 年 12 月 19 日
任务完成日期 2016年 12 月 30 日
一、设计内容与设计要求
1.设计内容:
数据库管理系统设计
涉及的知识点:
①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;
②掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
③掌握并熟练运用C语言的图形处理功能和库函数的应用。
④掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组
与字符串的关系以及字符串的简单处理。
⑤掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。
⑥掌握基本的文件操作。
题目5:教师评价系统
输入教师评价信息,提供新增、修改和显示等功能。
成绩单如下:
教师编号:long 4bytes
教师姓名: char 20bytes
教师评分:int 4bytes
总分:int 2bytes
名次:float 4bytes
等级: char 8bytes
系统功能模块如下:
(1) 建立教师评价数据库;
(2) 菜单实现以下功能:
①计算每个教师的总成绩;
②按总成绩排定教师名次;
③给教师评定等级(85以上优秀,60~84合格,60以下不合格)
④新增一个教师信息进行评价
⑤按教师编号查询教师评价信息;
2.设计要求:
1) 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;
2) 要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;
3) 设计报告的完整格式应包括以下部分的内容:
① 设计总体思路;
② 总体模块框图;
③ 各个程序模块说明;
④ 程序流程图;
⑤ 程序清单;
⑥ 课程设计总结与体会(不少于400字)。
4) 上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。
5) 总评成绩由三部分组成:报告占20%,平时占20%,课程设计题目各占30%。
二、进度安排
星 期
1~ 2 节
3~ 4 节
5~ 6 节
7~ 8 节
晚上
17周星期六
上机编程
17周星期日
上机编程
18周星期二
上机编程
18周星期三
上机编程、答辩
附:
课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
目录
一、 程序设计的总体思路............................1
1.1程序的功能
二、各个模块
三、主要功能的实现
3.1主函数模块void main()
3.2显示模块 void disp()
3.3求和模块 void count()
3.4分级模块 void sort()
3.5追加模块 void appe()
3.6修改模块 void modi()
3.7查询模块 void query()
3.8排序模块void mc ()
3.9退出模块 void exit()
四、程序调试及运行
4.1.主函数void main
4.2 显示模块调试 void disp()
4.3求和模块调试 void count()\
4.4分级模块调试void sort()
4.5追加模块调试void appe()
4.6修改模块调试 void modi()
4.7查询模块调试 void query()
4.8排序模块调试 void mc()
4.9退出模块 void exit()
五、课程设计总结与体会
六、附件
一、 程序设计的总体思路
1.1 程序的功能
该程序利用主函数的swich函数来调用各个模块的功能。
switch(choice)
{
case 1:Input();break; (输入模块)
case 2:Disp();break; (显示模块)
case 3:Count();break; (求和模块)
case 4:Sort();break; (分级模块)
case 5:Append();break; (追加模块)
case 6:Query();break; (查询模块)
case 7:Modify();break; (修改模块)
case 8:mc();break; (排序模块)
case 0:exit(0); (退出模块)
}
二、各个模块
。
开始
主函数
从磁盘中获得数据
退出模块
排序模块
查询模块
修改模块
追加模块
求和模块
显示模块
排序模块
把数据写入磁盘中
结束
三、主要功能的实现
3.1 void main主函数模块
void main()
{
int choice;
menu:
printf("\t\t\t1.Input teacher's information\n");
printf("\t\t\t2.Display teacher's information\n");
printf("\t\t\t3.Count\n");
printf("\t\t\t4.Sort\n");
printf("\t\t\t5.Append a teacher's information\n");
printf("\t\t\t6.Query a teacher information\n");
printf("\t\t\t7.Modify teacher's intformation\n");
printf("\t\t\t8.mc \n");
printf("\t\t\t0.Exit system\n\n");
printf("\t\t\tPlease enter choice(0~8)");
scanf("%d",&choice);
switch(choice)
{
case 1:Input();break;
case 2:Disp();break;
case 3:Count();break;
case 4:Sort();break;
case 5:Append();break;
case 6:Query();break;
case 7:Modify();break;
case 8:mc();break;
case 0:exit(0);
}
if(choice<0||choice>8)printf("\n\n\n\t\tplease choose again!\n\n");
goto menu;
}
3.2 void Disp显示模块
void Disp()
{int i;
printf(" ************************************************************\n");
printf("Num Name Sco1 Sco2 Sco3 Sum Mc Grade\n");
printf(" ************************************************************\n");
for(i=0;i<size;i++)
printf("%-5ld%-10s%-5d%-5d%-5d%-5d%-5d%-5s\n",s[i].num,s[i].name,s[i].sco[0],s[i].sco[1],s[i].sco[2],s[i].sum,s[i].mc,s[i].grade);
printf(" ************************************************************\n");
}
void Count()
{
int i;
for(i=0;i<size;i++)
{
s[i].sum=s[i].sco[0]+s[i].sco[1]+s[i].sco[2];
}
Disp();
}
3.3 void count求和模块
void Count()
{
int i;
for(i=0;i<size;i++)
{
s[i].sum=s[i].sco[0]+s[i].sco[1]+s[i].sco[2];
}
Disp();
3.4 void sort 分级模块
void Sort()
{
int i;
for(i=0;i<size;i++)
{
if(s[i].sum>=85)
strcpy(s[i].grade,"优秀");
if(s[i].sum>60&&s[i].sum<85)
strcpy(s[i].grade,"合格");
if(s[i].sum<=60)
strcpy(s[i].grade,"不及格");
}
Disp();
3.5 void appe 追加模块
void Append()
{
int n,i,j;
printf(" ----------------\n");
printf(" | 是否新增: |\n");
printf(" | 1确定 2取消 |\n");
printf(" -----------------");
scanf("%d",&n);
if(n==1)
{printf(" 请输入新增个数\n");
printf(" ****************\n");
scanf("%d",&i);
printf(" 编号 姓名 sco0 sco1 sco2 \n ");
printf("***********************************\n");
for(j=0;j<i;j++)
{
scanf("%ld%s%d%d%d",&s[size].num,s[size].name,&s[size].sco[0],&s[size].sco[1],&s[size].sco[2]);
printf("%ld %s %d %d %d\n",s[size].num,s[size].name,s[size].sco[0],s[size].sco[1],s[size].sco[2]);
size++;
}
printf(" ~~~~~~~~~~~~~~~~~~\n");
printf(" | 新增成功 |\n");
printf(" ~~~~~~~~~~~~~~~~~~\n");
}
if(n==2)
printf("\n");
3.6 void modi 修改模块
void Modify()
{
int n,m;
long int num;
printf(" ***********************\n");
printf(" * 请输入教师编号: *\n");
printf(" ***********************\n");
scanf("%ld",&num);
for(n=0;n<size;n++)
if(s[n].num==num)break;
if(n!=size)
{
printf(" ************************************************************\n");
printf(" sco0 sco1 sco2\n");
scanf("%d%d%d",&s[n].sco[0],&s[n].sco[1],&s[n].sco[2]);
}
else if(n==size)
{
printf(" ***********************************\n");
printf(" * 输入编号不存在,请重新输入 *\n");
printf(" ***********************************\n");
}
{
printf(" ***************************\n");
printf(" * 是否继续查询: *\n");
printf(" * 1 是 2 否 *\n");
printf(" ***************************\n");
scanf("%d",&m);
if(m==1)
Modify();
if(m==2)
printf("\n");
}
Disp();
3.7 void query 查询模块
void Query()
{
int n,m;
long int num;
printf(" ************************\n");
printf(" * 请输入教师编号: *\n");
printf(" ************************\n");
scanf("%ld",&num);
for(n=0;n<size;n++)
if( s[n].num==num)break;
if(n!=size)
{
printf("Num Name Sco1 Sco2 Sco3 Sum Mc Grade\n");
printf("%-5ld%-10s%-5d%-5d%-5d%-5d%-5d%-5s\n",s[n].num,s[n].name,s[n].sco[0],s[n].sco[1],s[n].sco[2],s[n].sum,s[n].mc,s[n].grade);
}
else if(n==size)
{
printf(" ***********************************\n");
printf(" * 输入编号不存在,请重新输入 *\n");
printf(" ***********************************\n");
}
{
printf(" ***************************\n");
printf(" * 是否继续查询: *\n");
printf(" * 1 是 2 否 *\n");
printf(" ***************************\n");
scanf("%d",&m);
if(m==1)
Query();
if(m==2)
printf("\n");
}
Disp();
3.8 void mc 排序模块
void mc()
{
struct teacher p1;
int i,j;
for(i=0;i<size-1;i++)
for(j=i+1;j<size;j++)
if(s[i].sum<s[j].sum)
{
p1=s[i];
s[i]=s[j];
s[j]=p1;
}
for(i=0;i<size;i++)
s[i].mc=i+1;
Disp();
}
四、程序调试及运行
4.1 主函数 void main ()
4.2显示模块 void disp()
4.3求和模块 void count()
4.4分级模块 void sort()
4.5追加模块 void appe()
4.6 修改模块 void modi()
4.7 查询模块 void query()
4.8退出模块 void exit()
六、课程设计总结与体会
在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。
七、附件
#include "stdio.h"
#include "string.h"
#include "math.h"
#include "stdlib.h"
int size=0;
struct teacher
{long int num;
char name[20];
int sco[3];
int sum;
int mc;
char grade[8];
};
struct teacher s[100];
void Input()
{FILE *fp;
int n=0;
fp=fopen("f:\\1.txt","r");
while(fscanf(fp,"%ld %s %d %d %d\n",&s[n].num,s[n].name,&s[n].sco[0],&s[n].sco[1],&s[n].sco[2])!=EOF)
{
n++;
}
fclose(fp);
size=n;
}
void Disp()
{int i;
printf(" ************************************************************\n");
printf("Num Name Sco1 Sco2 Sco3 Sum Mc Grade\n");
printf(" ************************************************************\n");
for(i=0;i<size;i++)
printf("%-5ld%-10s%-5d%-5d%-5d%-5d%-5d%-5s\n",s[i].num,s[i].name,s[i].sco[0],s[i].sco[1],s[i].sco[2],s[i].sum,s[i].mc,s[i].grade);
printf(" ************************************************************\n");
}
void Count()
{
int i;
for(i=0;i<size;i++)
{
s[i].sum=s[i].sco[0]+s[i].sco[1]+s[i].sco[2];
}
Disp();
}
void Sort()
{
int i;
for(i=0;i<size;i++)
{
if(s[i].sum>=85)
strcpy(s[i].grade,"优秀");
if(s[i].sum>60&&s[i].sum<85)
strcpy(s[i].grade,"合格");
if(s[i].sum<=60)
strcpy(s[i].grade,"不及格");
}
Disp();
}
void Append()
{
int n,i,j;
printf(" ----------------\n");
printf(" | 是否新增: |\n");
printf(" | 1确定 2取消 |\n");
printf(" -----------------");
scanf("%d",&n);
if(n==1)
{printf(" 请输入新增个数\n");
printf(" ****************\n");
scanf("%d",&i);
printf(" 编号 姓名 sco0 sco1 sco2 \n ");
printf("***********************************\n");
for(j=0;j<i;j++)
{
scanf("%ld%s%d%d%d",&s[size].num,s[size].name,&s[size].sco[0],&s[size].sco[1],&s[size].sco[2]);
printf("%ld %s %d %d %d\n",s[size].num,s[size].name,s[size].sco[0],s[size].sco[1],s[size].sco[2]);
size++;
}
printf(" ~~~~~~~~~~~~~~~~~~\n");
printf(" | 新增成功 |\n");
printf(" ~~~~~~~~~~~~~~~~~~\n");
}
if(n==2)
printf("\n");
}
void Modify()
{
int n,m;
long int num;
printf(" ***********************\n");
printf(" * 请输入教师编号: *\n");
printf(" ***********************\n");
scanf("%ld",&num);
for(n=0;n<size;n++)
if(s[n].num==num)break;
if(n!=size)
{
printf(" ************************************************************\n");
printf(" sco0 sco1 sco2\n");
scanf("%d%d%d",&s[n].sco[0],&s[n].sco[1],&s[n].sco[2]);
}
else if(n==size)
{
printf(" ***********************************\n");
printf(" * 输入编号不存在,请重新输入 *\n");
printf(" ***********************************\n");
}
{
printf(" ***************************\n");
printf(" * 是否继续查询: *\n");
printf(" * 1 是 2 否 *\n");
printf(" ***************************\n");
scanf("%d",&m);
if(m==1)
Modify();
if(m==2)
printf("\n");
}
Disp();
}
void Query()
{
int n,m;
long int num;
printf(" ************************\n");
printf(" * 请输入教师编号: *\n");
printf(" ************************\n");
scanf("%ld",&num);
for(n=0;n<size;n++)
if( s[n].num==num)break;
if(n!=size)
{
printf("Num Name Sco1 Sco2 Sco3 Sum Mc Grade\n");
printf("%-5ld%-10s%-5d%-5d%-5d%-5d%-5d%-5s\n",s[n].num,s[n].name,s[n].sco[0],s[n].sco[1],s[n].sco[2],s[n].sum,s[n].mc,s[n].grade);
}
else if(n==size)
{
printf(" ***********************************\n");
printf(" * 输入编号不存在,请重新输入 *\n");
printf(" ***********************************\n");
}
printf(" ***************************\n");
printf(" * 是否继续查询: *\n");
printf(" * 1 是 2 否 *\n");
printf(" ***************************\n");
scanf("%d",&m);
if(m==1)
Query();
if(m==2)
printf("\n");
}
Disp();
void mc()
{
struct teacher p1;
int i,j;
for(i=0;i<size-1;i++)
for(j=i+1;j<size;j++)
if(s[i].sum<s[j].sum)
{
p1=s[i];
s[i]=s[j];
s[j]=p1;
}
for(i=0;i<size;i++)
s[i].mc=i+1;
Disp();
}
void main()
{
int choice;
menu:
printf("\t\t\t1.Input teacher's information\n");
printf("\t\t\t2.Display teacher's information\n");
printf("\t\t\t3.Count\n");
printf("\t\t\t4.Sort\n");
printf("\t\t\t5.Append a teacher's information\n");
printf("\t\t\t6.Query a teacher information\n");
printf("\t\t\t7.Modify teacher's intformation\n");
printf("\t\t\t8.mc \n");
printf("\t\t\t0.Exit system\n\n");
printf("\t\t\tPlease enter choice(0~8)");
scanf("%d",&choice);
switch(choice)
{
case 1:Input();break;
case 2:Disp();break;
case 3:Count();break;
case 4:Sort();break;
case 5:Append();break;
case 6:Query();break;
case 7:Modify();break;
case 8:mc();break;
case 0:exit(0);
}
if(choice<0||choice>8)printf("\n\n\n\t\tplease choose again!\n\n");
goto menu;
}
计算机与通信学院课程设计评分表
课题名称: 数据库管理系统设计
项 目
评 价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日 期:
展开阅读全文