沈阳航空工业学院
课程设计任务书
电子工程系 电子信息工程专业 班 学号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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务