C语言程序管理系统课程设计报告文档格式.docx

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

C语言程序管理系统课程设计报告文档格式.docx

《C语言程序管理系统课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序管理系统课程设计报告文档格式.docx(34页珍藏版)》请在冰点文库上搜索。

C语言程序管理系统课程设计报告文档格式.docx

/*文件指针*/

intselect;

/*保存选择结果变量*/

charch;

/*保存(y,Y,n,N)*/

intcount=0;

/*保存文件中的记录条数(或结点个数)*/

Node*p,*r;

/*定义记录指针变量*/

l=(Node*)malloc(sizeof(Node));

if(!

l)

{

\n内存分配失败"

/*如没有申请到,打印提示信息*/

return;

/*返回主界面*/

}

l->

next=NULL;

r=l;

fp=fopen("

C:

\\student"

"

ab+"

/*以追加方式打开一个二进制文件,可读可写,若此文件不存在,会创建此文件*/

if(fp==NULL)

\n=====>

无法打开文件!

\n"

exit(0);

}

while(!

feof(fp))

p=(Node*)malloc(sizeof(Node));

p)

memorymallocfailure!

/*没有申请成功*/

/*退出*/

if(fread(p,sizeof(Node),1,fp)==1)/*一次从文件中读取一条学生成绩记录*/

p->

r->

next=p;

r=p;

/*r指针向后移一个位置*/

count++;

fclose(fp);

/*关闭文件*/

printf("

打开文件成功,共记录的数目:

%d.\n"

count);

menu();

while

(1)

system("

cls"

menu();

p=r;

\n请输入您的选择(0~9):

"

/*显示提示信息*/

select);

if(select==0)

if(saveflag==1)/*若对链表的数据有修改且未进行存盘操作,则此标志为1*/

{getchar();

是否保存修改记录文件?

(y/n):

%c"

ch);

if(ch=='

y'

||ch=='

Y'

Save(l);

=====>

谢谢使用!

getchar();

break;

switch(select)

case1:

Add(l);

break;

/*增加学生记录*/

case2:

Del(l);

/*删除学生记录*/

case3:

Qur(l);

/*查询学生记录*/

case4:

Modify(l);

/*修改学生记录*/

case5:

Insert(l);

/*插入学生记录*/

case6:

Tongji(l);

/*统计学生记录*/

case7:

Sort(l);

/*排序学生记录*/

case8:

Save(l);

/*保存学生记录*/

case9:

{system("

Disp(l);

按任何键返回"

chara;

a);

}/*显示学生记录*/

default:

Wrong();

getchar();

/*按键有误,必须为数值0-9*/

}程序中建立了多个函数分别来完成每个所要求的功能:

读文件和写文件函数,建链表函数,插入、修改和删除函数,排序、统计和输出

函数.

程序利用各个函数来完成前面要求所需要的功能。

二:

程序调用图:

8保存成绩

1.输入成绩

2删除成绩

三:

功能菜单

#***************************菜单**************************;

*1输入成绩*2删除成绩

*3查询成绩*4修改成绩

*5插入成绩*6统计成绩

*7成绩排序*8保存成绩

*9显示成绩*0退出系统

#*********************************************************

四.实验结果;

(见程序运行)

五:

体会:

做完这个c语言程序设计的作业,我学会了很多新知识,对c语言有了更进一步的了解.

开始时,我想用结构数组来做这个程序,但后来我发现用做它,修改数据和读取数据都显得很方便.于是,相比较之下,我便选择了链表.

编程时会遇到一些困难,最令人头疼的莫过于程序运行时出错了.有时哪怕是一些很小的错误经常能导致难以预料到的后果,因此,编程时我尽量做到一丝不苟,不敢有丝毫疏忽.

通过这次c语言编程的练习,我的编程水平有了进一步的提高,同时也使我对编程有了一个更清醒的了解和认识.

六,程序。

//密码123

#include"

stdio.h"

/*标准输入输出函数库*/

stdlib.h"

/*标准函数库*/

string.h"

/*字符串函数库*/

conio.h"

/*屏幕操作函数库*/

#defineHEADER1"

---------------------------------学生成绩----------------------------------\n"

#defineHEADER2"

|学号|姓名|C语言|数学|英语|总分|平均分|名次|\n"

#defineHEADER3"

|---------------|---------------|-----|----|-----|--------|--------|-----|"

#defineFORMAT"

|%-10s|%-15s|%4d|%4d|%4d|%4d|%.2f|%4d|\n"

#defineDATAp->

data.num,p->

data.name,p->

data.egrade,p->

data.mgrade,p->

data.cgrade,p->

data.total,p->

data.ave,p->

data.mingci

#defineEND"

---------------------------------------------------------------------\n"

intsaveflag=0;

/*是否需要存盘的标志变量*/

/*定义与学生有关的数据结构*/

typedefstructstudent/*标记为student*/

charnum[10];

/*学号*/

charname[15];

/*姓名*/

intcgrade;

/*C语言成绩*/

intmgrade;

/*数学成绩*/

integrade;

/*英语成绩*/

inttotal;

/*总分*/

floatave;

/*平均分*/

intmingci;

/*名次*/

};

/*定义每条记录或结点的数据结构,标记为:

node*/

typedefstructnode

structstudentdata;

/*数据域*/

structnode*next;

/*指针域*/

}Node,*Link;

/*Node为node类型的结构变量,*Link为node类型的指针变量*/

voidmenu()/*主菜单*/

system("

/*调用DOS命令,清屏.与clrscr()功能相同*/

cprintf("

学生成绩管理系统\n"

#***************************菜单**************************#\n"

*1输入成绩*2删除成绩*\n"

*3查询成绩*4修改成绩*\n"

*5插入成绩*6统计成绩*\n"

*7成绩排序*8保存成绩*\n"

*9显示成绩*0退出系统*\n"

#*********************************************************#\n"

/*cprintf()送格式化输出至文本窗口屏幕中*/

voidprintheader()/*格式化输出表头*/

printf(HEADER1);

printf(HEADER2);

printf(HEADER3);

voidprintdata(Node*pp)/*格式化输出表中数据*/

Node*p;

p=pp;

printf(FORMAT,DATA);

voidWrong()/*输出按键错误信息*/

\n\n\n\n\n***********输入有错!

按任意键继续!

**********\n"

voidNofind()/*输出未查找此学生的信息*/

没有找到这名学生!

voidDisp(Linkl)/*显示单链表l中存储的学生记录,内容为student结构中定义的内容*/

Node*p;

p=l->

next;

/*l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息*/

p)/*p==NULL,NUll在stdlib中定义为0*/

没有学生记录!

return;

\n\n"

printheader();

/*输出表格头部*/

while(p)/*逐条输出链表中存储的学生信息*/

printdata(p);

p=p->

/*移动直下一个结点*/

/*************************************************************

作用:

用于定位链表中符合要求的节点,并返回指向该节点的指针

参数:

findmess[]保存要查找的具体内容;

nameornum[]保存按什么查找;

在单链表l中查找;

**************************************************************/

Node*Locate(Linkl,charfindmess[],charnameornum[])

Node*r;

if(strcmp(nameornum,"

num"

)==0)/*按学号查询*/

r=l->

while(r)

if(strcmp(r->

data.num,findmess)==0)/*若找到findmess值的学号*/

returnr;

r=r->

elseif(strcmp(nameornum,"

name"

)==0)/*按姓名查询*/

data.name,findmess)==0)/*若找到findmess值的学生姓名*/

return0;

/*若未找到,返回一个空指针*/

/*输入字符串,并进行长度验证(长度<

lens)*/

voidstringinput(char*t,intlens,char*notice)

charn[255];

do{

printf(notice);

%s"

n);

/*输入字符串*/

if(strlen(n)>

lens)printf("

\n超过所需长度!

\n"

/*进行长度校验,超过lens值重新输入*/

}while(strlen(n)>

lens);

strcpy(t,n);

/*将输入的字符串拷贝到字符串t中*/

/*输入分数,0<

=分数<

=100)*/

intnumberinput(char*notice)

intt=0;

t);

/*输入分数*/

if(t>

100||t<

0)printf("

\n评分必须在[0100]!

/*进行分数校验*/

}while(t>

0);

returnt;

/*增加学生记录*/

voidAdd(Linkl)

Node*p,*r,*s;

/*实现添加操作的临时的结构体指针变量*/

charch,flag=0,num[10];

s=l->

/*先打印出已有的学生信息*/

while(r->

next!

=NULL)

r=r->

/*将指针移至于链表最末尾,准备添加记录*/

while

(1)/*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/

while

(1)/*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作*/

stringinput(num,10,"

输入号码(按'

0'

返回菜单):

/*格式化输入学号并检验*/

flag=0;

if(strcmp(num,"

0"

)==0)/*输入为0,则退出添加操作,返回主界面*/

{return;

while(s)/*查询该学号是否已经存在,若存在则要求重新输入一个未被占用的学号*/

if(strcmp(s->

data.num,num)==0)

flag=1;

s=s->

if(flag==1)/*提示用户是否重新输入*/

人数%s是不存在的,再试一次?

(y/n):

num);

continue;

return;

{break;

p=(Node*)malloc(sizeof(Node));

/*申请内存空间*/

strcpy(p->

data.num,num);

/*将字符串num拷贝到p->

data.num中*/

stringinput(p->

data.name,15,"

Name:

p->

data.cgrade=numberinput("

C语言[0-100]:

/*输入并检验分数,分数必须在0-100之间*/

data.mgrade=numberinput("

数学Score[0-100]:

data.egrade=numberinput("

英语Score[0-100]:

data.total=p->

data.egrade+p->

data.cgrade+p->

data.mgrade;

/*计算总分*/

data.ave=(float)(p->

data.total/3);

/*计算平均分*/

data.mingci=0;

/*表明这是链表的尾部结点*/

r->

/*将新建的结点加入链表尾部中*/

r=p;

saveflag=1;

voidQur(Linkl)/*按学号或姓名,查询学生记录*/

/*1:

按学号查,2:

按姓名查,其他:

返回主界面(菜单)*/

charsearchinput[20];

/*保存用户输入的查询内容*/

next)/*若链表为空*/

\n=====>

1按学号搜寻=====>

2按名称搜索\n"

pleasechoice[1,2]:

scanf("

if(select==1)/*按学号查询*/

stringinput(searchinput,10,"

输入现有的学生学号:

p=Locate(l,searchinput,"

/*在l中查找学号为searchinput值的节点,并返回节点的指针*/

if(p)/*若p!

=NULL*/

printheader();

printdata(p);

printf(END);

按任意键返回"

else

Nofind();

elseif(select==2)/*按姓名查询*/

stringinput(searchinput,15,"

输入现有的学生姓名:

if(p)

Wrong();

/*删除学生记录:

先找到保存该学生记录的节点,然后删除该节点*/

voidDel(Linkl)

intsel;

charfindmess[20];

next)

{system("

没有该学生的记录\n"

1按学号删除=====>

2按姓名删除\n"

请选择[1,2]:

sel);

if(sel==1)

stringinput(findmess,10,"

p=Locate(l,findmess,"

if(p)/*p!

r=l;

while(r->

=p)

next=p->

/*将p所指节点从链表中去除*/

free(p);

/*释放内存空间*/

删除成功!

saveflag=1;

elseif(sel==2)/*先按姓名查询到该记录所在的节点*/

stringinput(findmess,15,"

输入现有的学生姓名:

/*修改学生记录。

先按输入的学号查询到该记录,然后提示用户修改学号之外的值,学号不能修改*/

voidModify(Linkl)

没有该学生记录!

修改学生记录"

inputtheexistingstudentnumber:

/*输入并检验该学号*/

/*查询到该节点*/

=NULL,表明已经找到该节点*/

Number:

%s,\n"

p->

data.num);

%s,"

data.name);

输入新姓名:

C语言分数:

%d,"

data.cgrade);

C语言分数[0-100]:

数学分数:

data.mgrade);

data.mgra

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

当前位置:首页 > 总结汇报 > 学习总结

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

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