软件技术基础作业Word格式文档下载.docx
- 文档编号:17650527
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:12
- 大小:73.78KB
软件技术基础作业Word格式文档下载.docx
《软件技术基础作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件技术基础作业Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
20013011003C20013011004D
所谓点名,是指计算器将某位同学的姓名和学号打印到屏幕上,则表示该同学被点名1次。
要求:
程序质量:
●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便;
可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“开始点名”、“显示所有同学点名情况”、“保存点名”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
一、需求分析
经过对程序设计题目的分析得知,整个程序的设计实现分为四个模块,其中每一个模块对应一个函数,他们的功能分别是:
教师开始点名函数(startcall()),显示点名情况函数(showinfo()),保存点名记录函数(save()),退出点名系统函数(quit(0))。
所有函数的实现严格按照题目的要求。
1、教师开始点名函数实现的功能是随机抽取结构体数组里的一个学生信息,并打印到计算机屏幕上,称之为一次点名,连续调用就是多次随机点名。
2、显示点名情况函数实现的功能是将学生学号和姓名连同被点到的次数打印到屏幕上;
3、保存点名记录函数实现的功能是将点名完毕后的信息存储起来。
4、退出点名系统函数该函数实现的功能是结束本次点名,退出点名系统;
每一个学生信息都包含其学号、姓名,以及被点到的次数(其初值为0),学生信息的类型定义为结构体数组类型,系统刚开始调用的学生信息均来自于D:
\\myfile.dat.
二、程序流程
1.程序总体框图
图1.程序总体框图
2、具体功能框图
(1)教师开始点名函数startcall();
图2.教师开始点名函数start()
(2)显示点名情况函数showinfo();
structstudent*a
for(i=0;
i<
4;
i++)
printf("
%s\t%s\t%d\n"
a[i].num,a[i].name,a[i].cnt);
图3.显示点名情况函数display()
(3)保存点名记录函数save();
定义文件指针*fp
fp=fopen("
myfile.dat"
"
wb"
);
否是
thefilemyfile.dat
cannotbeopen
forwrite程序打开
=4;
fwrite(&
a[i],1,
sizeof(structstudent),fp);
}
输出“保存点名成功!
”
图4.保存点名记录函数save()
(4)退出点名系统函数quit();
此函数为c语言标准库函数,只需在源程序开头加一个#include<
conio.h>
申明即可调用。
三、核心技术的实现说明及相应程序段
本程序主要由四个自定义函数,和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
其中四个自定义的函数是程序中核心的部分,下面分别进行说明。
1、教师开始点名函数startcall()
此函数首先是从结构体数组stu[]的四个成员里面随机抽取一个成员并将其信息打印到计算机屏幕上。
这里要用到rand()这个标准库函数,rand()%n(n是整数)可产生0到n-1之间的一个随机整数,如果被抽到了一次,在其点名次数小于3次的情况下,被点到的次数就加一。
待所有的同学被点到三次后,则将被点到的次数归零。
具体的程序段如下:
voidcall(structstudent*a)
{
inti;
i=rand_num();
printf("
%s\t%s\n"
a[i].num,a[i].name);
a[i].cnt+=1;
}
2、显示点名情况函数showinfo()
该函数的核心功能是将教师点名过程中每个同学被点到的次数连同他本人的学号及姓名一起打印到计算机屏幕上显示.。
具体程序段如下:
voidshow_info(structstudent*a)
inti;
学号\t姓名\t次数\n"
for(i=0;
{
3、保存点名记录函数save()
教师点名完毕以后将点名的结果要保存起来,save()函数就是要实现这个功能的。
此函数需要先定义一个文件指针.如果打开文件为空,则不能打开,如果不是,则会保存数据,具体程序如下:
voidsave_file(structstudent*a)
FILE*fp;
fp=fopen("
if(fp==NULL)
thefilemyfile.datcannotbeopenforwrite!
\n"
return;
else
i++)
fwrite(&
a[i],1,sizeof(structstudent),fp);
fclose(fp);
保存成功!
4、主函数main()
主函数的功能主要是将保存学生点名原始数据的外存文件myfile.dat中的学生信息传递到内存结构体数组stu[]中,并调用各个自定义的函数,四个菜单项功能主要是凭switch语句来实现的,以实现连续多次点名。
四、完整源程序代码
#include<
stdio.h>
stdlib.h>
time.h>
#include<
intrand_num()/*返回0到3之间的一个随机数.*/
return(int)(4*(rand()/(RAND_MAX+1.0)));
structstudent{
charnum[20];
charname[20];
intcnt;
};
if(fp==NULL){
voidcreat_file()
structstudentstu[4];
请输入学生信息.Format:
学生姓名,学生学号\n"
input4student'
sinfomation:
"
i++){
scanf("
%s"
stu[i].num);
stu[i].name);
stu[i].cnt=0;
save_file(stu);
voidshow_info(structstudent*a)
voidcall(structstudent*a)
intmain()
intch;
FILE*fp=NULL;
while(fp==NULL){
d:
//myfile.dat"
rb"
if(fp==NULL){
!
文件不存在t!
\n!
请创建文件!
creat_file();
fread(stu,4,sizeof(structstudent),fp);
while
(1){
Menu:
\n\t[0]startcall\n\t[1]showallstudent'
sinfo\n\t[2]save\n\t[3]quit\nPleaseinputyourchoice:
%d"
&
ch);
switch(ch){
case0:
call(stu);
break;
case1:
show_info(stu);
case2:
case3:
return0;
五、个人总结
通过这次学习使我对C程序的理解能力,阅读能力有所提高,是一次很好的学习机会。
此次大作业拓展了我过去对C语言知识的局限,并了解如何设计C程序各个功能模块化这一重要设计知识。
同时通过这学期对软件技术这门课的学习让我对编程设计有了全新的认识,老师认真又独特的讲解,培养了我的探索的兴趣,加强了我的求知欲,因此,在以后的学习中,我会更加努力。
六、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术 基础 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)