高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx

上传人:b****4 文档编号:7473270 上传时间:2023-05-08 格式:DOCX 页数:49 大小:131.78KB
下载 相关 举报
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第1页
第1页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第2页
第2页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第3页
第3页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第4页
第4页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第5页
第5页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第6页
第6页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第7页
第7页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第8页
第8页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第9页
第9页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第10页
第10页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第11页
第11页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第12页
第12页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第13页
第13页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第14页
第14页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第15页
第15页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第16页
第16页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第17页
第17页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第18页
第18页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第19页
第19页 / 共49页
高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx

《高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx(49页珍藏版)》请在冰点文库上搜索。

高级C语言课程设计说明书计算机等级考试管理系统Word文件下载.docx

第二章.

详细设计:

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"

==

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2