课程设计 报告.docx
- 文档编号:28139472
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:37
- 大小:150.68KB
课程设计 报告.docx
《课程设计 报告.docx》由会员分享,可在线阅读,更多相关《课程设计 报告.docx(37页珍藏版)》请在冰豆网上搜索。
课程设计报告
重庆科技学院
课程设计报告
院(系):
_电子信息工程学院__专业班级:
测控技术与仪器08
学生姓名:
曾慧学号:
2008442312
设计地点(单位)___I520、I515_____________
设计题目:
学生信息管理系统___________
完成日期:
2009年7月10日
指导教师评语:
_______________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):
________________
指导教师(签字):
________________
重庆科技学院
课程设计任务书
设计题目:
学生信息管理系统
学生姓名
曾慧
课程名称
C语言程序设计课程设计
专业班级
测控普2008-01,2008-02
地点
I520,I515
起止时间
6.29-7.10
设计内容及要求
设计内容:
设计一学生信息管理系统,通过该系统实现对学生的基本信息进行录入、显示、修改、删除、保存等操作,学生信息的查找等的管理。
设计要求:
1、系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
2、本系统显示操作菜单如下:
请选择系统功能项:
a、学生信息录入功能(学生信息用文件保存)---输入
b、学生信息浏览功能---输出
c、查询、排序功能---算法
d、按学号查询
e、按姓名查询
f、学生信息的删除与修改(可选项)
g、 退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。
(清屏)
4、将学生基本信息保存到文件中。
5、进入系统之前要先输入密码。
设计
参数
1.程序不低于500行代码。
2.程序基本功能要求实现完整,并有简单的验证。
3.设计报告要求格式规范,符合学校课程设计报告要求。
4.报告中流程图要求描述规范,算法设计清楚正确。
进度
要求
1.理解设计题目,要求和说明2009.6.29
2.查阅资料,确定设计任务,熟悉相关知识2009.6.30
3.确定程序设计的思路和技术方案2009.7.1
4.编程实现基本功能2009.7.2-2009.7.6
5.调试并完善程序2009.7.7-2009.7.8
6.撰写课程设计报告2009.7.9-2007.7.10
参考资料
1.克尼汉.《c程序设计语言》(第二版).机械工业出版社
2.(美)霍顿著,杨浩译.《C语言入门经典》(第4版).清华大学出版社
3.PeterPrinz,TonyCrawford.《C语言核心技术》.机械工业出版社
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导老师:
杨治明李忠2009年7月10日
摘要
C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技巧,以及开发应用程序。
本文主要是对学生信息管理系统这一案例进行说明。
其主要内容有各个模块的功能描述,主要函数和流程图。
包括了指针、结构体、文件等C语言基础知识。
每个功能独立起作用,互不影响。
该系统可以实现对学生基本信息的录入、显示、修改、删除、保存以及查找等的管理。
结构体数组中包含了每个学生的基本信息:
学号、姓名、年龄、性别、出生年月、地址、电话和E-mail。
关键字:
流程图,指针,结构体,文件
1设计内容
1.1基本内容
设计学生信息管理系统,通过该系统实现对学生基本信息的录入、显示、修改、删除、保存等操作以及学生信息的查找等的管理。
建立该系统时,要完善其功能,使每个功能得到完整实现。
要充分理解每个功能模块所表达的含义,能够用文字进行叙述。
1.2问题分析
目前程序设计的理念已经从“面向过程的程序设计”向“面向对象的程序设计”方面转变。
学生信息管理系统是学习面向对象的编程思想的理想实例。
现在面向对象的计算机编程语言很多,都可以编程来实现。
本次C语言程序设计是用C语言设计一个“学生信息管理系统”的过程。
其中涉及到定义文件指针以及如何写入文件的具体操作,如何使用switch语句实现其具体功能,最终达到实现程序的目的。
1.3基本思路
要实现每一个具体功能,就要对所要用到的各种语句了解透彻。
查阅各种资料,了解switch语句、if-else语句以及for语句等的定义和功能,在程序编写过程中准确掌握,正确使用。
对要实现的每个功能具体分析,先用文字叙述,在了解清楚后,再编写为C语言程序语段。
2设计目的与要求
2.1设计目的
主要利用C语言的文件操作能力设计学生信息管理系统等。
结合具体应用的实际需要进行恰当的功能划分,力争做到有一定的实用价值。
编程使系统功能完整,最终使此系统具备对学生信息的录入、显示、修改、删除、保存和查找等的管理。
2.2设计要求
2.2.1总体要求
1)巩固和加深学生对C语言基本知识的理解,提高综合运用课程知识的能力。
2)培养学生的实际操作能力。
3)通过实际课程设计,初步掌握简单软件的分析方法和设计方法。
4)了解与课程有关的工程技术规范,能正确解释和分析实验结果。
2.2.2具体要求
1)系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
2)该系统最终能够实现对学生信息的录入功能(学生信息用文件保存),学生信息的浏览功能,学生信息的查询、排序功能以及学生信息的删除与修改功能。
3)在所有功能实现后,结束操作,退出系统。
4)执行一个具体的功能之后,程序将重新显示菜单,即完成清屏操作。
5)将所有学生的基本信息保存到文件中。
6)设置密码功能,即进入系统之前要先输入密码,才能进行下一操作。
7)所编写的程序不得低于500行代码。
程序基本功能要求实现完整,并有简单的验设计报告要求格式规范,符合学校课程设计报告要求。
报告中流程图要求描述规范,算法设计清楚正确。
3概要设计
该程序在VC6.0的环境下用VC来编写,主要运用这学期所学的面向对象和运用控制台以及数组等来编写程序。
运用C语言中对象和类的思想来实现该程序。
图3.1整体结构示意图
学号升序
学号降序
修改
新建
初
建
追
加
按学号
按姓名
排序
显示
退出
删除
查询
学生信息管理系统
3.1界面菜单设计
设计菜单功能选项,选择编号选项以实现相应功能。
1、新建信息;2、查询信息;3、修改信息;4、显示信息;5、删除信息;6、排序信息;0、退出系统。
3.2学生信息的设计
关于学生的信息,定义了一个结构体类型,用来表示学生的各种属性(如下)。
typedefstruct_someone
{
charname[40];
charaddress[40];
intnumber;
charphone[20];
charsex[10];
charemail[40];
intage;
intbirth;
}someone;
3.3学生信息录入的设计
学生信息录入包括“初建信息表”和“追加信息表”两个子模块。
从键盘输入学生的信息,以二进制方式将这些数据写入文件中去。
首先要建立文件指针(FILE*fp*fp2),打开文件,再输入信息,写入文件,最后关闭文件。
3.4学生信息查询的设计
按照姓名查询,输出结果;按照学号查询,输出结果。
使用if语句实现选择功能。
printf("请选择查询方式:
\n1、姓名查询\n2、学号查询\n");
scanf("%d",&choice3);
if(choice3==1)
if(choice3==2)
3.5学生信息修改与删除的设计
输入需要修改或删除的学生的姓名,根据提示选择是或否。
再将信息保存在文件中。
3.6学生信息显示的设计
选择菜单对应功能选项实现其功能,在界面上显示已经录入的学生的信息。
3.7学生信息排序的设计
选择菜单选项对应的功能选项实现该功能,通过提示选择排序方式,显示排序后结果,以供浏览。
4详细设计
4.1主函数
该函数定义了文件指针,用于对文件进行操作。
对系统设置了密码保护,并且使用switch语句实现各个功能。
各功能实现后程序结束,返回主菜单,继续下一个操作。
结束
结束
结束
结束
结束
结束
结束
退出
T
排序
T
T
删除
显示
T
修改
T
查询
T
新建
T
选择0
F
选择6
F
选择5
F
选择4
F
选择3
F
F
选择2
选择1
开
始
选择
图4.1主函数程序流程图
4.2信息录入模块
选择编号选项1。
创建二进制文件,首先用fopen()函数来打开文件,然后提示操作者选择,输入1或者2,进入do-while语句,由于结构体里定义了字符型指针,即已经为它申请好了内存,之后按屏幕的提示来输入学生信息,用fprintf()函数来把信息写入文件中,最后释放内存、清屏,提示操作者是否继续输入信息,选择1或者2,继续或者退出循环语句,当信息表已录入100个学生的信息后,提示操作者系统已满,跳出循环;用fclose()函数来关闭文件。
图4.2信息录入流程图
结束
关闭文件
输出ch
写入文件
输入信息
ch=1||2
输入ch
打开文件
4.3信息查询模块
选择编号选项2。
按姓名或者学号查找学生信息,并输出结果。
用fopen()函数来打开文件。
首先选择编号项目,进入一个if语句,根据提示输入,调用fscanf()函数,按照给定的控制格式读取数据,当读完一个学生的信息后,再用if语句判断输入的姓名或者学号是否与文件中的相同,这里的strcmp()函数十比较输入的姓名是否与文件中的姓名相等,如果相等,输出学生信息,用break语句来跳出当前循环,然后释放内存;如果不相等,则显示没有此人,并继续循环。
用fclose()函数来关闭文件。
图4.3信息查询流程图
结束
break
没有此人
flag=1
flag=0
输出信息
名字是否相等
读取文件
打开文件
输入名字
4.4信息修改模块
选择编号选项3。
调用scanf()函数输入需要修改的学生的姓名。
然后调用fopen()函数来打开文件。
再调用fscanf()函数,按照给定的控制格式读取数据,当读完一个学生的信息后,进入一个if语句,然后判断输入的姓名是否与文件中的姓名相等。
如果相等,则调用printf()函数输出学生信息,然后根据提示修改该学生的信息,再调用fprintf()函数将修改后的信息写入文件中;如果不相等,则显示没有此人,继续下一步骤。
用fclose()函数来关闭文件。
图4.4信息修改流程图
结束
写入并关闭文件
修改信息
没有此人
flag=1
flag=0
输出信息
名字是否相等
读取文件
打开文件
输入学生名字
4.5信息显示模块
选择编号选项4。
调用fopen()函数来打开文件。
进入一个for语句,调用fscanf()函数读取数据,然后再调用printf()函数输出学生信息。
该功能用于浏览和查看各学生信息。
用fclose()函数来关闭文件。
4.6删除信息模块
选择编号选项5。
调用scanf()函数输入需要删除的学生的姓名。
然后调用fopen()函数来打开保存学生信息的文件。
再调用fscanf()函数,按照给定的控制格式读取数据,当读完一个学生的信息后,进入一个if语句,然后判断输入的姓名是否与文件中的姓名相等。
如果相等,则调用printf()函数输出学生信息,根据提示选择是否删除此人;如果不相等,则显示没有此人。
若选择是,则调用fprintf()函数将其他学生的信息保存。
若选择否,则跳出该循环。
用fclose()函数来关闭文件。
没有此人
flag=0
输出信息
图4.5信息删除流程图
结束
选择是否删除
flag=1
名字是否相等
读取文件
打开文件
输入学生名字
4.7信息排序模块
选择编号选项6。
根据提示选择排序的方式,并调用scanf()函数输入选择项目。
然后用fopen()函数来打开文件。
进入一个if语句,若文件内容不为空,进入while语句。
这里调用了feof()函数,用来判断指针是否到了文件结尾,是则返回1,否则返回0。
再调用fscanf()函数读取数据,当读完一个学生的信息后,进入一个if语句,根据选择进行排序。
这里定义了一个temp数组,用于存储一个学生的信息。
使用for循环语句,将每个学生的信息依次进行比较,然后调用printf()函数输出经过排序后的学生信息。
这里调用了一个getch()函数,表示程序运行到这,暂时停止,进行下一步骤。
文件头“conio.h”包含了该函数。
清屏并跳出该功能。
结束
升序排列信息
选择2
降序排列信息
选择1
读取文件
文件是否为空
输入排序方式
图4.6信息排序流程图
4.8退出系统模块
选择编号选项0。
在菜单界面时,选择该选项,则退出该学生信息管理系统。
用break语句实现。
5设计结果与分析
5.1菜单显示
输入正确的密码后,进入界面菜单,对应有7个功能选项,实现相应功能。
图5.1菜单界面图
5.2创建信息
屏幕将给出提示,操作者按提示进行录入。
录入完毕后,将会给出提示,是否继续。
图5.2创建信息界面图
5.3信息查询(按姓名)
首先根据提示输入需要查询的学生的姓名或者学号,然后按下回车键,界面将显示该学生的信息。
图5.3信息查询界面图
5.4信息显示
直接选择菜单编号选项4,然后按下回车键,界面显示处每个学生的信息。
图5.4信息显示界面图
5.5信息排序
根据提示选择按学号降序或者升序排列,输入选择后,界面将排列后的学生信息显示出来。
然后按任意键即可返回主菜单。
图5.5信息排序界面图
6设计体会与建议
这次C语言课程设计加强了我对C语言的认识,也提高了我编写C语言程序的能力,这次C语言程序编写中,我深刻体会到了编写程序的困难,但是,也学会了编写程序的一些技巧,最重要的是增加了我的知识。
6.1结构体
typedefstruct_someone{}someone;这是定义一个结构体。
typedefstruct_someone是结构体类型,大括号里表示的是学生的各种属性,someone就相当于typedefstruct_someone。
在该学生信息管理系统中,结构体里定义了字符型指针,可以节省内存。
6.2文件的操作
首先应定义一个文件指针FILE*fp。
打开文本文件fp=fopen(“f:
\\ZH.txt”,“w”)然后用scanf()函数来输入信息,再用fprintf()函数将输入的信息写入文件中去;最后用函数fclose(fp)关闭文本文件;读出时也需要打开文件,用fscanf()函数按照给定的控制格式读取数据,再用printf()函数将信息从屏幕上显示出来,最后用函数fclose(fp)关闭文本文件。
文件的追加和创建文件是一样的,只是打开文本文件时用fp=fopen(“f:
\\ZH.txt”,“a”)。
文件结束检测feof(文件指针)函数,用其来判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。
6.3体会
在整个设计过程中,必须对switch语句了解透彻,才能正确实现其作用,在编辑每个功能时,要尽量做到不遗漏任何一个可能的结果,使功能完善。
我了解到了用结构体定义学生的信息,并且以文件的形式写入、读取信息;我觉得用流程图来表示运行步骤,非常容易看懂和理解,这次课程设计大大提高了我的C语言程序编写能力,我希望以后会有更多这样的锻炼机会。
7参考文献
[1](美)霍顿著,杨浩译.《C语言入门经典》(第4版).清华大学出版社
[2]何钦铭,颜晖主编.C语言程序设计.北京:
高等教育出版社,2008.1
[3]谭浩强编著.C程序设计.北京:
清华大学出版社,1991
指导
教师
评语
课程
设计
成绩
指导
教师签字
年月日
附录程序
#include
#include
#include
#include
typedefstruct_someone
{
charname[40];
charaddress[40];
intnumber;
charphone[20];
charsex[10];
charemail[40];
intage;
intbirth;
}someone;
intmain()
{
someonex[100],y[100],temp;
FILE*fp,*fp2;
charname[40];
inti,j,k,n;
intnumber,password,index,score,flag;
intchoice1,choice2,choice3,choice4,choice5;
do{
system("cls");
printf("系统保护!
!
!
!
!
!
!
!
!
!
\n\n\n");
printf("*******************************");
printf("\n\n\n");
printf("密码验证!
!
!
!
!
!
!
!
!
!
\n\n\n");
printf("*******************************");
printf("\n\n\n");
printf("First,pleaseinputthepassword:
");
scanf("%d",&password);
}while(password!
=2008442312);
system("cls");
printf("\n\n\n\n");
printf("欢迎进入学生信息管理系统!
\n");
printf("\n\n");
do
{
system("color3f");
printf("**********************\n");
printf("***请选择编号选项***\n");
printf("**********************\n");
printf("***1、新建信息***\n");
printf("***2、查询信息***\n");
printf("***3、修改信息***\n");
printf("***4、显示信息***\n");
printf("***5、删除信息***\n");
printf("***6、排序信息***\n");
printf("***0、退出系统***\n");
printf("**********************\n");
printf("请选择功能:
");
scanf("%d",&choice1);
system("cls");
printf("\n\n\n\n");
printf("********************\n\n\n");
printf("**********\n\n\n");
switch(choice1)
{
case1:
printf("1、初建信息表\n2、追加信息表\n");
scanf("%d",&choice5);
system("cls");
printf("********************\n\n\n");
printf("**********\n\n\n");
if(choice5==1)
{
i=0;
fp=fopen("f:
\\ZH.txt","w");
do
{
printf("请输入姓名:
");
scanf("%s",x[i].name);
printf("请输入地址:
");
scanf("%s",x[i].address);
printf("请输入学号:
");
scanf("%d",&x[i].number);
printf("请输入电话:
");
scanf("%s",x[i].phone);
printf("请输入性别(girl(女),boy(男)):
");
scanf("%s",x[i].sex);
printf("请输入邮箱:
");
scanf("%s",x[i].email);
printf("请输入年龄:
");
scanf("%d",&x[i].age);
printf("请输入出生年月:
");
scanf("%d",&x[i].birth);
fprintf(fp,"%s\n",x[i].name);/*按控制格式的方式向文件中写入数据*/
fprintf(fp,"%s\n",x[i].address);
fprintf(fp,"%d\n",x[i].number);
fprintf(fp,"%s\n",x[i].phone);
fprintf(fp,"%s\n",x[i].sex);
fprintf(fp,"%s\n",x[i].email);
fprintf(fp,"%d\n",x[i].age);
fprintf(fp,"%d\n",x[i].birth);
printf("请选择是否继续输入:
\n\n1、继续\n2、退出\n");
scanf("%d",&choice2);
system("cls");
i++;
}while(choice2==1&&i<100);
if(i==100)
printf("信息管理系统已满
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告