c语言课程设计报告Word下载.docx

上传人:b****5 文档编号:20961182 上传时间:2023-01-26 格式:DOCX 页数:74 大小:608.19KB
下载 相关 举报
c语言课程设计报告Word下载.docx_第1页
第1页 / 共74页
c语言课程设计报告Word下载.docx_第2页
第2页 / 共74页
c语言课程设计报告Word下载.docx_第3页
第3页 / 共74页
c语言课程设计报告Word下载.docx_第4页
第4页 / 共74页
c语言课程设计报告Word下载.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

c语言课程设计报告Word下载.docx

《c语言课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告Word下载.docx(74页珍藏版)》请在冰豆网上搜索。

c语言课程设计报告Word下载.docx

一、课程设计目的

通过实践,学会编制结构清晰、风格良好、数据结构适当的C语言程序,加深对C语言基础知识的理解和掌握,进一步巩固C语言编程实践能力,锻炼思维逻辑和解决综合性实际问题的能力。

二、实习内容及要求

1、用C语言编写一个学生证管理系统,该系统具有以下功能:

(1)录入某位学生的学生证信息;

(2)给定学号,显示某位学生的学生证信息;

(3)给定某个班级的班号,显示该班所有学生的学生证信息;

(4)给定某位学生的学号,修改该学生的学生证信息;

(5)给定某位学生的学号,删除该学生的学生证信息;

(6)提供一些统计各类信息的功能;

(7)提供浏览所有学生的学生证信息的功能。

2、输入要求

应用程序运行后,在屏幕上显示一个菜单;

用户可以根据要求,选定相应的操作项目;

进入某个操作后,根据应用程序的提示,从键盘输入相应的信息。

3、输出要求

(1)应用程序运行后,要在屏幕上显示一个菜单;

(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式

及结束方式等。

三、需求分析

根据题目要求,学生信息要从文本文件中存取,所以本程序应该提供读写文件,显示、

统计、查询、修改记录,保存文件等操作,此外,还应该提供键盘式选择菜单实现功能。

四、总体设计

根据需求分析,可以把这个系统的设计分为添加、修改、查询、浏览、统计、删除六大

模块,其中查询模块可以分为三个子模块,统计模块可以分为三个子模块,子模块下面还有子

函数;

系统功能模块图如下所示:

五、详细设计

5.0头文件及结构体

#include<

stdio.h>

stdlib.h>

string.h>

#defineN100

structClass//班级

{

charCname[20];

//班名

charCno[20];

//班号

};

structStudent//学生

charSname[20];

//姓名

charSex[10];

//性别

charSno[20];

//学号

intAge;

//年龄

structClassCInfo;

//嵌套结构体,表示班级信息

}StuInfo[N];

//结构体数组,用作读取和存放临时数据

5.1主函数

voidmain()

menu();

//菜单

getchar();

}

5.2菜单

voidmenu()

intchose;

intright;

do

{

printf("

\n\t\t\t\t学生证管理系统\n"

);

·

"

菜单:

\t1-添加\t2-修改\t3-浏览全部\t4-查询\t5-统计\t6-删除\t7-退出\n"

请输入数字选择:

scanf("

%d"

&

chose);

if(chose<

1||chose>

8)

right=1;

输入错误,请重新输入!

\n"

}

elseright=0;

}while(right==1);

switch(chose)

case1:

add();

break;

//添加模块

case2:

modify();

//修改模块

case3:

browse();

//浏览模块

case4:

quiry();

break;

//查询模块

case5:

stastic();

//统计模块

case6:

Delete();

//删除模块

case7:

exit(0);

//退出

}

5.3添加模块

首先要判断文件StuInfo.txt是否存在,如果存在就以读写(r+)的方式打开,如果不存在,就以写(w)的方式创建文件StuInfo.txt。

输入格式要求:

性别为男或女,学号为11位且不能重复,年龄在0-100之间,班级号为6位,程序提供了完善的验证机制,输入错误时将提示重新输入直到正确为止。

此外,如果以读写的方式打开,还要判断记录数num<

N是否成立,因为结构体数组的大小为N,当num=N时,表示已满,不能再存储数据,需要修改N的值。

voidadd()

intnum;

//表示记录数

inti;

intage;

//临时变量,用于验证输入的性别是否满足条件

charsno[20];

//临时变量,用于验证输入的学号是否满足条件

charsex[20];

charcno[20];

//临时变量,用于验证输入的班号是否满足条件

FILE*fp;

if((fp=fopen("

StuInfo.txt"

"

r+"

))==NULL)//以读写方式打开

w"

))==NULL)//文件不存在就创建文件

\n文件不存在且创建失败,返回!

\n请按照提示输入学生信息:

\n\n"

姓名:

%s"

StuInfo[0].Sname);

\n性别(男或女):

sex);

if((strcmp(sex,"

男"

)!

=0)&

&

(strcmp(sex,"

女"

=0))

{

输入错误,请输入男或女!

right=1;

getchar();

strcpy(StuInfo[0].Sex,sex);

\n学号(11位):

sno);

if(strlen(sno)!

=11)

输入错误,学号长度应为11位数!

strcpy(StuInfo[0].Sno,sno);

\n年龄:

age);

if(age<

=0||age>

100)

年龄应在0-100之间,请重新输入年龄!

StuInfo[0].Age=age;

\n班号(6位):

cno);

if(strlen(cno)!

=6)

输入错误,班号长度应为6位数!

strcpy(StuInfo[0].CInfo.Cno,cno);

\n班名:

StuInfo[0].CInfo.Cname);

fprintf(fp,"

\n%s\t%s\t%s\t%d\t%s\t%s"

StuInfo[0].Sname,StuInfo[0].Sex,StuInfo[0].Sno,StuInfo[0].Age,StuInfo[0].CInfo.Cno,StuInfo[0].CInfo.Cname);

fclose(fp);

\n保存成功!

\n请按enter键返回主菜单!

}//以上的输入是以写的方式输入,下面是以读写的方式输入数据

for(i=0;

!

feof(fp);

i++)

fscanf(fp,"

%s%s%s%d%s%s"

StuInfo[i].Sname,&

StuInfo[i].Sex,&

StuInfo[i].Sno,&

StuInfo[i].Age,&

StuInfo[i].CInfo.Cno,&

StuInfo[i].CInfo.Cname);

num=i;

//记录数

if(num==N)

\n保存记录数超出结构体数组数的大小,请先修改N的值!

getchar();

StuInfo[num].Sname);

strcpy(StuInfo[num].Sex,sex);

i<

num;

i++)

if(strcmp(sno,StuInfo[i].Sno)==0)

{

printf("

该学号已经存在,请重新输入!

}

strcpy(StuInfo[num].Sno,sno);

StuInfo[num].Age=age;

strcpy(StuInfo[num].CInfo.Cno,cno);

StuInfo[num].CInfo.Cname);

//把该记录写到文件末尾

StuInfo[num].Sname,StuInfo[num].Sex,StuInfo[num].Sno,StuInfo[num].Age,StuInfo[num].CInfo.Cno,StuInfo[num].CInfo.Cname);

5.4修改模块

先判断文件StuInfo.txt以读(r)的方式能否打开,不能就返回,可以就读入记录;

然后输入学号查找记录,没找到就返回,找到就按照提示修改该记录,与输入模块一样,输入的格式要求:

性别为男或女,学号为11位且不能与除当前修改的记录的学号外的记录的学号重复,年龄在0-100之间,班级号为6位,程序提供了完善的验证机制,输入错误时将提示重新输入直到正确为止。

输入完成后,再以写(w)的方式创建文件,不能创建就返回,可以就将结构体数组中的所有记录保存到文件中,这与添加稍有差别,最后返回主菜单。

voidmodify()

intfound=-1;

charStuNO[20];

FILE*fpr,*fpw;

if((fpr=fopen("

r"

))==NULL)

文件打不开!

feof(fpr);

i++)/

fscanf(fpr,"

fclose(fpr);

\n请输入学号选择要修改的记录:

StuNO);

if(strcmp(StuNO,StuInfo[i].Sno)==0)

found=i;

\n你要修改的学生信息为:

printf("

姓名性别学号年龄班号班名\n"

printf("

%s\t%s\t%s\t%d\t%s\t%s\n"

StuInfo[i].Sname,StuInfo[i].Sex,StuInfo[i].Sno,StuInfo[i].Age,StuInfo[i].CInfo.Cno,StuInfo[i].CInfo.Cname);

\n请按照提示输入学生的新信息:

scanf("

StuInfo[found].Sname);

strcpy(StuInfo[found].Sex,sex);

if((i!

=found)&

(strcmp(sno,StuInfo[i].Sno)==0))

strcpy(StuInfo[found].Sno,sno);

StuInfo[found].Age=age;

strcpy(StuInfo[found].CInfo.Cno,cno);

StuInfo[found].CInfo.Cname);

if((fpw=fopen("

文件打不开,保存失败!

i++)//保存文件

fprintf(fpw,"

fclose(fpw);

\n修改成功!

if(found<

0)

\n没有找到该学号的记录:

}

5.5浏览模块

voidbrowse()

))==NULL)

\n已添加%d个学生信息\n\n"

num);

姓名性别学号年龄班号班名\n"

%s\t%s\t%s\t%d\t%s%s\n"

5.6查询模块

voidquiry()

\n1-按学号查询\t2-按姓名

查询\t3-某班学生信息\t4-返回\n"

\n请输入数字选择:

1||cho

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

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1