高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx
- 文档编号:7473270
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:49
- 大小:131.78KB
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx
《高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx(49页珍藏版)》请在冰点文库上搜索。
第二章.
详细设计:
2.1需求分析……………………………………………………………15
2.1.1系统简介…………………………………………15
2.1.2功能详述…………………………………………15
2.1.3开发环境…………………………………………15
2.1.4运行环境…………………………………………15
2.2函数说明……………………………………………………………16
2.3用户使用说明………………………………………………………16
2.4测试结果
2.4.1主控模块………………………………………17
2.4.2数据输入………………………………………18
第三章.
设计感悟:
3.1小结………………………………………………………………21
3.2参考文献…………………………………………………………22
第四章.
附录<
源程序>
:
4.1源程序……………………………………………………………22
第一章
1.1模块化分
本程序系统从大的方向分为数据模块和代码模块。
数据模块用一个单链表来存储数据,然后用一个指针域将链表中的数据存放到磁盘文件中进行保存。
代码模块主要用于程序相关功能的实现。
以下分模块介绍:
数据模块,单链表如下:
typedefstructstudent
{
charnum[9];
charname[13];
charrang[2];
charcollege[15];
intttscore;
intopscore;
charsex[2];
charID[19];
};
用typedef定义结构体类型数据,用以存放考生的相关信息。
其中,num[]存放考生的考号,name[]存放考生的姓名,rang[]存放考生的等级,college[]存放考生的学校名,ttscore存放考生的笔试成绩,opscore存放考生的机试成绩,sex[]存放考生的性别,ID[]存放考生的身份证号码。
typedefstructnode
{
structstudentdata;
/*数据域*/
structnode*next;
/*指针域*/
}NODE,*link;
该链表将上一个链表作为其元素,构成其数据域,然后定义自身机构提类型,作为指针域,以便下文查找链表的位置。
NODE为结构体类型变量,ling为结构体类型指针。
代码模块,用不同的函数完成不同的功能,并能通过函数的有机结合,完成复杂的输入,查询,删改等功能。
主要分为以下几个大块:
1>
添加信息voidadd(),用于新增考生记录。
2>
删除信息voiddel(),用于删除已有的考生记录。
3>
查找信息voidqur(),用于在文件中查找相关字段的记录。
4>
修改信息voidmodify(),用于修改文件中已有的记录。
5>
保存信息voidsave(),用于存储新增加的记录。
6>
显示信息voiddisp(),用于显示已有的考生记录。
7>
显示错误voidwrong(),当输入的不是规定的字段时,或操作失败时,系统提示出错情况,以及出错原因,提示用户进行修改。
8>
显示查找失败voidNofind(),当进行查找或者修改操作时,系统会根据用户输入的字段进行查找,确定相应的记录位置,当没有找到相应的记录时,输出查找失败信息,并提醒用户进行校正。
9>
标准字符输入函数voidstringinput(char*t,intlens,char*notice),输入相应的字符串,并进行检验,如果输入有误,则输出错误原因,提示用户进行修改。
10>
标准数字输入函数intnumberinput(char*choice),输入数字字符串,并进行检验,若果有错,则输出出错原因,提示用户进行修改。
11>
输出数据函数voidprintdata(NODE*pp),将结构体数据进行整体输出。
12>
输出表头函数voidprintheader(),将结构体数据,即考生记录按类似表格的形式进行整体规划分栏输出。
13>
确定记录位置NODE*Locate(linkL,charfindmess[],charnameornum[],将用户输入的信息进行相应的处理,找到相应的位置,对指针进行定位查找。
14>
主控函数voidmain(),用于对整个程序进行操作的控制。
以下是函数结构简图:
1.2模块说明
主控函数viodmain(),以下是其代码:
voidmain()
linkL;
FILE*fp;
intselect;
charch;
intcount=0;
NODE*p,*r;
L=(NODE*)malloc(sizeof(NODE));
if(!
L)
printf("
\nAllocatememoryfailure"
);
/*如果没有申请到,打印提示信息*/
return;
}
L->
next=NULL;
r=L;
fp=fopen("
e:
\\wintc\\student"
"
ab+"
/*以追加方式打开一个二进制文件,可读可写,若文件不存在,会创建此文件*/
if(fp==NULL)
\n====>
Cannotopenthisfile!
\n"
exit(0);
while(!
feof(fp))
p=(NODE*)malloc(sizeof(NODE));
p)
Memorymallocfailure!
exit(0);
if(fread(p,sizeof(NODE),1,fp)==1)/*一次从文件中读取一个学生的信息*/
p->
/*每次让动态指针指向0*/
r->
next=p;
/*连接节点*/
r=p;
/*每次让r指向下一个文件头*/
count++;
fclose(fp);
\n==>
Openfilesuccess,thetotlenumberis:
%d\n"
count);
menu();
while(L)
system("
cls"
p=r;
\n===>
>
Pleaseenteryourchoice(0-6):
"
scanf("
%d"
&
select);
if(select==0)
if(saveflag==1)/*若对链表的数据有修改且未进行存盘,则标志为1*/
{getchar();
\n===>
Whethertosavethemodifiedrecordtofile?
(y/n)"
%c"
ch);
if(ch=='
y'
||ch=='
Y'
)
save(L);
===>
Thankyouforusingthisprogram!
!
"
getchar();
switch(select)
case1:
add(L);
break;
/*增加学生信息*/
case2:
del(L);
/*删除学生信息*/
case3:
qur(L);
/*查询学生信息*/
case4:
modify(L);
/*修改学生信息*/
case5:
save(L);
/*保存学生信息*/
case6:
system("
disp(L);
/*显示学生信息*/
default:
wrong();
getchar();
/*按键有误*/
}
首先,以计算机动态分配的方式,分配一个结构体类型的数据空间,然后,打开数据文件,将两个结构联系起来,并设置进入和退出方式。
进而,进入双while()主循环,首先,动态分配数据存储巍峨年结构体,然后,设置读取方式,,每次从文件中读取一个考生记录,并且计数,然后输出已有的考生记录。
下一步,进入内部while循环,显示菜单,提示用户进行合理的操作。
接着,用switch()开关设置菜单操作响应,并设置出错响应。
以下是六个功能函数的简介:
输入记录函数add()
voidadd(linkL)
NODE*p,*r,*s;
charch,num[9];
intflag=0;
s=L->
next;
disp(L);
while(r->
next!
=NULL)
r=r->
/*将r移至表的最尾部,准备添加数据*/
stringinput(num,9,"
Inputsortnumber(Press'
0'
toreturnmenu):
if(strcmp(num,"
0"
)==0)/*输入为0则返回主界面*/
{return;
while(s)
if(strcmp(s->
data.num,num)==0)
{flag=1;
s=s->
if(flag==1)
===>
Thenumber%sisexisting,tryagain?
(y/n):
num);
continue;
elsereturn;
else{break;
p=(NODE*)malloc(sizeof(NODE));
\nAllocatememoryfailure!
strcpy(p->
data.num,num);
stringinput(p->
data.name,13,"
Name:
data.sex,2,"
Sex:
data.college,15,"
college:
data.ID,19,"
IDnumber:
data.ttscore=numberinput("
Textscorescore[0-100]:
data.opscore=numberinput("
Operatescorescore[0-100]:
data.rang,2,"
Range:
/*表明这是链表的尾部节点*/
/*将新建节点加入链表尾部中*/
saveflag=1;
应用单链表结构,在内存空间动态存储数据。
首先对输入的数据进行检测,看是否已经存在,然后,进行数据的输入。
用结构体指针进行数据的存储操作,每次输入一个数据,将其用结构体元素的形态存入结构体,然后整体存入文件。
查找数据函数voidqur()
voidqur(linkL)
charsearchinput[20];
NODE*p;
L->
next)
{system("
Nostudentrecord!
1按考号查找===>
2按姓名查找\n"
3按身份证号查找\n"
pleasechoice:
if(select==1)
stringinput(searchinput,9,"
Inputtheexistingsortnumber:
p=Locate(L,searchinput,"
num"
if(p)
printheader();
printdata(p);
printf(END);
Pressanykeytoreturn"
elseNofind();
elseif(select==2)
stringinput(searchinput,13,"
Inputtheexistingname:
name"
elseif(select==3)
stringinput(searchinput,19,"
InputtheexistingID:
ID"
elsewrong();
根据标准输入函数输入的数据,进行检测并设置不同的查询方式,用户可以根据喜好,进行相应的选择,分为考号查询,身份证号查询,姓名查询。
如果找到相应的记录,以表格的形式输出数据,没找到,则输出错误信息。
删除记录函数voiddel()
voiddel(linkL)
intsel;
charfindmess[20];
==>
1按考号删除===>
2按姓名删除\n"
3按身份证号删除\n"
Pleaseselect:
sel);
if(sel==1)
stringinput(findmess,9,"
Inputthesortnumber:
p=Locate(L,findmess,"
=p)
next=p->
/*将p所指的节点从链表中删除*/
free(p);
Deletesuccess!
saveflag=1;
elseif(sel==2)
stringinput(findmess,13,"
Inputthestudentname:
if(sel==3)
stringinput(findmess,19,"
InputthestudentIDnumber:
elsewrong();
本函数与查找函数相似,提供了姓名,考号,身份证号三种查询方式,用户可自由选择。
系统将根据用户的选择进行不同的检测,找到记录后,提示用户确定后进行记录的删除操作。
修改记录函数voidmodify()
voidmodify(linkL)
Modifystudentrecord"
Inputtheexistingstudentnumber:
p){printf("
Thenumberyouputisnotexisting!
\n"
return;
Number:
%s,\n"
p->
data.num);
Name:
data.name);
Inputnewname:
data.num,9,"
Inputsortnumber:
Inputthefinallrang:
InputtheIDnumber:
Inputthecollegename:
Inputthesex:
\nTheoriginaltextscorescore:
%d,"
data.ttscore);
\nTheoriginalOperatescorescore:
%d,\n"
data.opscore);
Thethenewtextscoreis:
Thethenewoperatescoreis:
Modifysuccess!
else
Nofind();
修改记录操作被选中时,系统先提示用户输入相应的字段,系统根据用户提供的字段进行检测,找到记录后,输出原有的记录,然后让用户自行修改记录,完成后返回到菜单。
如果没找到相应的记录,则输出错误信息。
保存新纪录函数voidsave(linkL)
voidsave(linkL)
NODE*p;
wb"
==
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言 课程设计 说明书 计算机等级考试 管理 系统