3067徐永贺课程设计报告Word格式文档下载.docx
- 文档编号:1126865
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:16
- 大小:293.32KB
3067徐永贺课程设计报告Word格式文档下载.docx
《3067徐永贺课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《3067徐永贺课程设计报告Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
●输出记录模块。
一是实现对学生记录的存盘,即将记录写入数据文件中;
二是实现将记录信息以表格的形式在屏幕上打印出来。
2.2详细设计
2.2.1数据结构设计
●学生成绩信息结构体
#ifndefH_STUDENT_HH/*如果H_STUDENT_HH没有定义*/
#defineH_STUDENT_HH/*那就定义H_STUDENT_HH*/
#include<
stdio.h>
string.h>
malloc.h>
#defineLENsizeof(structmessage_student)/*一个结构体数组元素的长度*/
#definenumsubs3/*学科数目*/
typedefstructmessage_student/*结构体定义*/
{
charnumber[6];
/*学号*/
charnumber1[6];
/*班级*/
charname[20];
/*学生姓名*/
charsex[4];
/*性别*/
floatsubject[numsubs];
/*科目*/
floatscore;
/*总分*/
floataverage;
/*平均分*/
intindex;
}student;
externintnumstus;
/*学生数目*/
externstudent*pointer;
/*指向结构体数组*/
externintlens;
intmenu_select();
/*声明函数*/
intdakaiwenjian(studentstu[]);
/*打开文件*/
intchaxunjilu(studentstud[]);
/*查询记录*/
intcunchujilu(studentstud[]);
/*存储记录*/
voidhuanying();
/*欢迎界面*/
voidxianshijilu1();
/*显示记录*/
voidshowtable();
/*显示桌面*/
voidpaixu(studentstu[]);
/*排序*/
voidshanchujilu(studentstu[],inti);
/*删除*/
voidtianjiajilu(studentstud[]);
/*添加记录*/
voidxianshijilu(studentstud[],intn1,intn2);
/*显示记录*/
voidxiugaijilu(studentstud[]);
/*修改记录*/
voidjishu(studentstud[]);
/*为记录计数*/
voidpaixunum(studentstud[]);
/*为记录排序*/
voidpaixunum2(studentstud[]);
voidpaixuname(studentstud[]);
voidpaixuname2(studentstud[]);
voidpaixujishu(studentstud[]);
voidpaixujishu2(studentstud[]);
voidtongjishuju(studentstud[]);
/*统计记录*/
2.2.2主控main()函数执行流程
本成绩管理系统根据按键判断。
在判断键值时,有效的输入为本0至8之间的任意数值,其他输入都被视为错误按键。
若输入为0(即变量select=0),它会继续判断,如果对记录进行过更新操作,那么是否已经保存过新的数据,若没有,则全局变量saveflage=1,系统会提示用户是否需要进行数据存盘操作,用户输入y或n,系统会自动进行存盘操作后再执行退出成绩管理系统的操作。
若选择1,则调用tianjiajilu函数,执行增加学生记录操作;
若选择2,则调用chaxunjilu函数,执行查询学生记录操作;
若选择3,则首先调用chaxunjilu函数,执行查询学生记录操作,查找出学生纪录后再调用shanchujilu函数,执行删除学生记录操作;
若选择4,则调用sort函数,执行按降序排序学生记录操作;
若选择5,则调用tongjishuju函数,执行统计学生记录操作;
若选择6,则调用dakaiwenjian函数,打开一个已储存的文件;
若选择8,则调用cunchujilu函数,执行将学生记录存入数据文件的操作;
若选择0,break,退出系统;
若输入为0~9之外的值,default,给出按键错误的提示"
输入错误,请输入数字0~8:
"
。
2.2.3函数功能描述
●函数名:
strcmp
功
能:
串比较
用
法:
intstrcmp(char*str1,char*str2);
程序例:
intmain(void)
{
char*buf1="
aaa"
*buf2="
bbb"
*buf3="
ccc"
;
intptr;
ptr=strcmp(buf2,buf1);
if(ptr>
0)
printf("
buffer2isgreaterthanbuffer1\n"
);
else
buffer2islessthanbuffer1\n"
ptr=strcmp(buf2,buf3);
buffer2isgreaterthanbuffer3\n"
buffer2islessthanbuffer3\n"
return0;
}
getchar
从stdin流中读字符
intgetchar(void);
intc;
/*Notethatgetcharreadsfromstdinand
islinebuffered;
thismeansitwill
notreturnuntilyoupressENTER.*/
while((c=getchar())!
='
\n'
)
%c"
c);
gets
从流中取一字符串
char*gets(char*string);
charstring[80];
Inputastring:
gets(string);
Thestringinputwas:
%s\n"
string);
fopen
打开一个流
FILE*fopen(char*filename,char*type);
stdlib.h>
dir.h>
char*s;
chardrive[MAXDRIVE];
chardir[MAXDIR];
charfile[MAXFILE];
charext[MAXEXT];
intflags;
s=getenv("
COMSPEC"
/*getthecomspecenvironmentparameter*/
flags=fnsplit(s,drive,dir,file,ext);
Commandprocessorinfo:
\n"
if(flags&
DRIVE)
\tdrive:
drive);
DIRECTORY)
\tdirectory:
dir);
FILENAME)
\tfile:
file);
EXTENSION)
\textension:
ext);
fscanf
从一个流中执行格式化输入
intfscanf(FILE*stream,char*format[,argument...]);
inti;
Inputaninteger:
"
/*readanintegerfromthe
standardinputstream*/
if(fscanf(stdin,"
%d"
&
i))
Theintegerreadwas:
%i\n"
i);
{
fprintf(stderr,"
Errorreadingan\
integerfromstdin.\n"
exit
(1);
}
fgetc
从流中读取字符
intfgetc(FILE*stream);
conio.h>
FILE*stream;
charstring[]="
Thisisatest"
charch;
/*openafileforupdate*/
stream=fopen("
DUMMY.FIL"
"
w+"
/*writeastringintothefile*/
fwrite(string,strlen(string),1,stream);
/*seektothebeginningofthefile*/
fseek(stream,0,SEEK_SET);
do
/*readacharfromthefile*/
ch=fgetc(stream);
/*displaythecharacter*/
putch(ch);
}while(ch!
=EOF);
fclose(stream);
fprintf
传送格式化输出到一个流中
intfprintf(FILE*stream,char*format[,argument,...]);
/*Programtocreatebackupofthe
AUTOEXEC.BATfile*/
FILE*in,*out;
if((in=fopen("
\\AUTOEXEC.BAT"
rt"
))
==NULL)
Cannotopeninput\
file.\n"
return1;
if((out=fopen("
\\AUTOEXEC.BAK"
wt"
Cannotopenoutput\
while(!
feof(in))
fputc(fgetc(in),out);
fclose(in);
fclose(out);
strcpy
串拷贝
char*strcpy(char*str1,char*str2);
charstring[10];
char*str1="
abcdefghi"
strcpy(string,str1);
%s\n"
string);
三、总结
为期三周的高级语言程序设计结束了。
这学期后期,我们被通知要进行三周的课程设计。
当时有点懵,感觉学的东西很少,很零散,不知该怎么联到一起,就要课程设计,是不是太难为我们了。
第一天基本上都是在看书,把基本知识再熟悉一边。
老师发过来20道设计题目题,但我们几乎不知道怎样完成这些任务,不过任务中还附带着一些设计样例,从这几道样例上我得到了不少启发,然后我们组把整个程序的思路理清了,开始着手写程序。
第一周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。
但是,到了第二周,我们由不得不再次陷入困境。
在整个程序的编写过程中。
最难的就是修改和删除这两个模块,这也是我们第二周要解决的重点问题。
开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。
困难之时,老师,帮助了我我们,完成了修改和删除。
这样的话,整个程序基本上全部完成了,就剩下完善工作了。
我们组写了两个程序,最后,两个程序相互组合,互补,大功告成
虽然设计时完成了,但是我觉得其中还是由一些不足之处:
1.字符。
程序中一些对长字符串的输入显示效果不好。
2.重名的情况。
由于考虑的不周全,没有设计遇到重名和学号重合的情况该怎么处理。
3.选择单一。
我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。
整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。
短短的三周课程设计结束了,但是这段时间里,我又学到了更多C知识,如:
对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。
,也看到了团队精神和互帮互助的重要性。
这一点会让我终生受益。
通过三周的课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这三周过的挺充实!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 3067 徐永贺 课程设计 报告