您好,欢迎来到锐游网。
搜索
您的当前位置:首页教师上课点名系统

教师上课点名系统

来源:锐游网
 沈 阳 航 空 工 业 学 院 课程设计 学 号 __________ 班 级 __________ 姓 名 __________ 指导教师 ___尹航___ 年 月 日

沈阳航空工业学院

课程设计任务书

电子工程系 电子信息工程专业 班 学号01106

一、课程设计题目:教师上课随机点名

二、课程设计工作自2009年9月7日起至2009年9月11日止 三、课程设计内容:

用C语言编写软件完成以下任务:

教师在每次上课时,需要对学生点名提问。学生信息应事先保存到文件中。学生共有7人,名单如下:

101 杜永宁N 102 段楠N 103 冯红N 104 郝苇N 105 胡龙N

106 李南 N 107 刘盈N

所谓点名,是指将某位同学的姓名和学号打印到屏幕上,则表示该同学是否缺席。

四、课程设计要求:

1.程序质量:

贯彻结构化的程序设计思想。

用户界面友好,功能明确,操作方便;可以加以其它功能或

修饰。

用户界面中的菜单至少应包括“开始点名”、“信息统计”、

“学生信息添加”、“退出”4项。

代码应适当缩进,并给出必要的注释,以增强程序的可读

性。

2.课程设计说明书:

课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容如下:

课程设计任务书 程序设计题目

需求分析(分析题目的要求) 程序框图

核心技术的实现方法及程序源代码及注释

个人总结

[参考资料]

五、指导教师: 六、成绩: 七、教师评语:

学生签名:

目 录

一、需求分析 ........................ 错误!未定义书签。 二、程序流程图 ...................... 错误!未定义书签。 三、核心技术的实法现方 .............. 错误!未定义书签。 四、个人总结 ........................ 错误!未定义书签。 五、参考文献 ........................ 错误!未定义书签。 六、源程序 .......................... 错误!未定义书签。

一、需求分析

此程序是为点名而设计,经分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个功能,他们的功能分别是:程序界面设计模块,文件读写模块,显示点名情况模块,随机算法模块。

1、程序界面设计模块 主要实现程序最初运行时程序界面友好、美观的的构型以及简明的操作提示; 2、文件读写模块 实现的功能是对文件数据的读取和存储,将文件中的数据保存到结构体student中,并将点名次数通过save函数保存到文件中;

3、显示点名情况模块 按照题目的要求将数据文件中所有学生的学号、姓名、是否缺席打印到屏幕上; 4、点名算法模块 通过调用自定义函数open()和rew()实现点名,并将被点到的学号、姓名、是否缺席打印到屏幕上;

除上面介绍的功能之外,程序还具有退出功能,可以

在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。 二、程序流程图 1、整体框架图:

定义结构体输出目录选项 修改模块保存模块结束

图1:整体框架图

2、流程图

Save 函数进行保存的流程图

if((fp=fopen(\"\ yes No printf(\"文件打开失败for(i=0;i<7;i++) if(fwrite(&std[i],sizeof(struct \\n\" student),1,fp)!=1) yes No printf(\"文件保存失败\\n\"); 文件保存成功 图2 Sa ve 函数进行保存的流程图

3、点名模块的流程图

if((fp=fopen(\"\ yes No 文件打开失败 Exit(0) for(i=0;i<7;i++) scanf(\"%d\; While(1) Case 1 真 否 Case 2 真 否 开始点名 Case 3; 信息统计 真 否 Case 4 学生信息添加 退出

图3:点名模块的流程图

4、学生信息修改图

if((fp=fopen(\"\ yes No 文件打开失败 Exit(0) scanf(\"%c\ h=0; While(h) Case 1 真 否 Case 2 修改信息 真 否 h=0; 跳出; 图3: 学生信息修改图

三、核心技术的实法现方

1、结构体的定义并把原始信息一同定义在结构体成员中,是程序的核心内容之一

struct student {long num; char name[10]; char data;

}st[7];

从上面的定义中可以看出,结构体类型定义中成员项都有确定的类型和名字,而要使用结构体类型的数据,必须经过两个步骤:先由关键字struct和用户定义的结构体名来说明类型,然后在由它们说明变量。

2、Void open()是自定义函数它的主要用途是打开预存的学生的信息,并把它显示在屏幕上给老师点名。程序如下: void open() { int i; FILE *fp;

if((fp=fopen(\"\ {

printf(\"文件打开失败\\n\");

exit(0); }

for(i=0;i<7;i++)

{fread(&st[i],sizeof(struct student),1,fp); printf(\"%d\%s\%c\\n\i].data); } }

3、Void rew()是学生信息修改程序,提供给老师对缺席学生信息的修改,即缺席的学生,老师只要输入学号,程序就将该学生的缺席情况自动改为”Y”。如下: void rew() { int i; int h=1;

int k; char j; FILE *fp;

if((fp=fopen(\"\ {

printf(\"文件打开失败\\n\"); exit(0); }

printf(\"***********学生缺席请按'a'进行修改*********\\n\");

printf(\"***********输入'b'跳出修改**********\\n\"); while(h)

{scanf(\"%c\

switch(j)

{case 'a':printf(\"缺席学生学号\\n\"); scanf(\"%d\ k=k-101; st[k].data='Y'; break; case 'b':h=0; } }

for(i=0;i<7;i++)

{fread(&st[i],sizeof(struct student),1,fp);

printf(\"%d\%s\%c\\n\i].data);

} }

4、void save()是保存学生信息的自定义函数,主要将修改后的学生信息保存到文档中去,实现保存功能。程序如下: void save() {

int i; FILE *fp;

if((fp=fopen(\"\ {

printf(\"文件打开失败\\n\"); exit(0); }

for(i=0;i<7;i++)

if(fwrite(&st[i],sizeof(struct student),1,fp)!=1)

printf(\"文件保存失败\\n\"); }

在上面的程序段中,用到了三个调用函数语句进行操作,尽管在程序化设计中有些重复,但其很方便,应用及操作比较简单。

比如void open()语句是为了打开文件并输出学生情况进行点名,void rew()语句点名是进行信息统计,void save()是保存功能的函数,通过它实现了学生信息的添加及保存。

四、个人总结

在此次课设之前我C语言学的一般,只能勉强应付考试,很多概念都非常模糊记不清楚。虽然,我的编程题目并不算难,但是,在这一周的时间里,经过不断的学习与

努力及与同学进行探讨,还有老师的指导,我的C语言编程终于能完成。

虽然程序还有一定的瑕渍,但我以尽力自己完成了。我感到C语言程序设计确实是一门很有用的学科,所以这次课设并不是一个结束,而是一个开始,一个对C语言更深入学习的开始。并借着机会继续学习C语言,努力尽早通过国家计算机二级考试。 五、参考文献

1 姚合生.C程序设计.北京:清华大学出版社,2008 2 刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,2006

六、源程序 #include <> #include <> #include <>

struct student {long num; char name[10]; char data; }st[7]={{101,\"

\

\冯红\郝苇\胡龙\李南\刘盈\

void open() { int i; FILE *fp;

if((fp=fopen(\"\ {

printf(\"文件打开失败\\n\"); exit(0);

}

for(i=0;i<7;i++)

{fread(&st[i],sizeof(struct student),1,fp); printf(\"%d\%s\%c\\n\i].data); } }

void rew() {

int i; int h=1; int k; char j; FILE *fp;

if((fp=fopen(\"\ {

printf(\"文件打开失败\\n\"); exit(0); }

printf(\"***********学生缺席请按'a'进行修改*********\\n\");

printf(\"***********输入'b'跳出修改**********\\n\"); while(h)

{scanf(\"%c\ switch(j)

{case 'a':printf(\"缺席学生学号\\n\"); scanf(\"%d\

k=k-101;

st[k].data='Y'; break;

case 'b':h=0; } }

for(i=0;i<7;i++)

{fread(&st[i],sizeof(struct student),1,fp);

printf(\"%d\%s\%c\\n\i].data); } }

void save()

{

int i; FILE *fp;

if((fp=fopen(\"\ {

printf(\"文件打开失败\\n\"); exit(0); }

for(i=0;i<7;i++)

if(fwrite(&st[i],sizeof(struct student),1,fp)!=1)

printf(\"文件保存失败\\n\"); }

void main()

{ struct student {long num; char name[10]; char data; }st[7]={{101,\"

\

\冯红\郝苇\胡龙\李南\刘盈\ int i; int c;

printf(\"**************************************************************************\\n\");

printf(\"********************************MENU**************************************\\n\");

printf(\"****************************欢迎使用教

师上课点名系统**********************\\n\");

printf(\"****** 输入1:开始点名 *********\\n\");

printf(\"****** 输入2:信息统计 *********\\n\");

printf(\"****** 输入3:学生信息添加 *********\\n\");

printf(\"****** 输入4: 退出 *********\\n\");

printf(\"**************************************************************************\\n\"); while(1) {

scanf(\"%d\ switch(c)

{case 1:printf(\"学号\姓名\是否缺席\\n\"); open(); break; case 2:rew();

printf(\"*****************学生信息添加完毕,请保存*******************\\n\"); break; case 3: save();

printf(\"*****************信息添加成功,输入4退出********************\\n\"); break; case 4: exit(0);

} } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ryyc.cn 版权所有 湘ICP备2023022495号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务