学生籍贯信息记录簿课程报告书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合肥学院
计算机科学与技术系
课程设计报告
2013 ~2014 学年第2 学期
课程面向过程综合设计
课程设计名称学生籍贯信息记录簿设计
学生姓名
学号
专业班级软件工程(2)班
指导教师
2014 年6 月
一、需求分析
随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。

开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规范化。

题目要求设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。

要求为:
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的籍贯信息;
(3)按学号和姓名查询籍贯;
(4)按籍贯查询并输出该籍贯的所有学生;
(5)能添加、删除和修改学生的籍贯信息;(可选项)
二、系统设计
(一)算法及说明
本程序运用c编写,使用顺序表的数据结构来实现。

程序中定义了一个结构体student。

其中在student结构体中包含了学生的基本信息(学生的学号,姓名,性别,年龄,籍贯)。

程序还定义了几个功能函数(保存、录入、显示、添加、查询),这五个函数是彼此相互独立的功能模块。

(二)各项功能分析
(1)学生基本信息的录入:
这部分的功能主要包括信息的录入,首先按程序提示输入学生的学号,姓名,性别,年龄,籍贯。

录入完毕后,按任意键回到菜单,主菜单还有显示学生的全部信息,按学号查询学生的籍贯,按姓名查询学生的籍贯,按籍贯查询该籍贯的所有学生,添加学生的籍贯信息,退出程序等功能,并且这些函数用后的信息都会写到你所指定的文本文件中。

(2)显示学生信息:
此功能将录入的学生信息独处,并在屏幕上显示出来,并且录入到你所指定的文本文件中。

(3)按学号查询学生籍贯信息
此功能可以根据用户输入的选择查出该学生的籍贯信息。

(4)按姓名查询学生的籍贯信息
此功能可以更具用户输入的选择查出该学生的籍贯信息。

(5)按籍贯查询学生信息
此功能可以根据你输入的信息查询相对应的学生信息。

(6)添加学生信息
此功能先输入添加的学生人数,输入后根据提示输入学生的学号,姓名,年龄,性别,籍贯信息。

输入完成后将将其信息录入文本文件中。

(7)退出系统,结束任务。

(三)设计思想:流程图
系统完成功能及功能框图
主要功能如图所示:
(四)设计表示
在此文件中主要是定义了类的3个成员函数(xianshi()、select()、add()),即3种功能。

这3个函数是彼此独立的功能模块。

2个文件操作函数,保存学生信息函数(save
和打开文件),读取信息的数据函数。

具体介绍如下:
成员函数
1.xianshi()
此函数功能是作为显示学生的所有信息,在其他成员函数中都有调用显示函数,辅助其他子函数的功能。

2. select()
在本功能中,可对学生进行查询,按学号和姓名查询籍贯,按籍贯查询并输出该籍贯的所有学生,最后返回管理系统。

3.add( )
本功能函数的功能是添加一个学生的信息,首先还是先打开用来存放职文件fp,如果打不开则返回,否则进行下面的操作:再打来的文件fp中,输入你所要添加的新学生的所有信息,当输入完毕后,关闭文件fp,并返回主界面。

文件操作函数
1、save()
此函数功能是定义好一个读取文件fp的函数,如果fp为空或不存在,则提示错误并返回;否则进行下面的操作:学生信息的录入包括学生的学号,姓名,性别,年龄,籍贯情况;通过scanf 函数从键盘读入4个学生的数据,用fprintf函数输出学生的信息,再用fscanf函数从文件夹中读出这些数据。

最后关闭fp文件,选择返回主界面。

2、打开文件,读取信息函数,同样作为一个子函数,在信息的查找函数中对其进行调用,实现学生的信息查找功能。

通过实现调用这两个文件操作函数,是程序更具有简洁性,不至于太冗杂繁重。

(四)实现过程
运行系统时进入主界面。

主界面由七项构成分别代表是:显示、查询、保存、添加、退出系统。

它们分别有各自所代表的操作数。

由用户输入操作数执行相应的操作。

此功能由switch语句实现,当用户输入不同的操作数程序将进入不同的函数模块。

进入各个函数后的运作过程在“成员函数”中已给出。

三、学生籍贯信息记录簿的使用说明
(一)学生籍贯信息包括学生学号,学生的姓名,性别,年龄,籍贯情况设计一学生籍贯信息管理系统,提供以下功能:
1、系统以菜单方式工作
2、学生信息录入功能(学生信息用文件保存)--输入
3、学生信息显示功能--输出
4学生信息查询功能--算法
查询方式:
按学号查询,按姓名查询,按籍贯查询。

5、学生的信息添加功能。

(二)使用本系统是数据输入时的格式要求:
按功能要求选项进行选择,数据输入可以是字符,也可以是字符串。

(三)操作过程中要注意的一些方法:一定要按照系统界面的提示进行操作,包括子菜单中的功能选择。

切忌不要随意的进行操作。

如果用户的输入操作有误或者功能不可执行,造成系统瘫痪,请关闭程序,重新进行操作。

四、系统调试
4.1.1 菜单
进入系统后即可显示如下界面。

根据需求选数字,只需按:数字+enter即可,但如果输入错误,则会显示:输入错误,请重新输入,返回主菜单,并清屏。

例如,输入:8+enter.则会显示如下界面:
4.1.2 显示所有信息
选择第一个选项后,系统将会读取磁盘文件"D:\\1..txt" 中所保存的信息,并在显示屏上显示(如下图),且会提示输入任意键即可退回主菜单。

4.1.2 按学号查询
选择第二个选项后,系统会系统会先提示:“你要查询的学生学号是”。

输入学号(例如:1)后键入“enter”
随后键入任意键返回主菜单,继续运行程序。

4.1.3 按姓名查询
选择第三个选项后,系统会系统会先提示:“你要查询的学生姓名是”。

随后键入任意键返回主菜单,继续运行程序。

4.1.4 按籍贯查询
选择第四个选项后,系统会系统会先提示:“你要查询的学生籍贯是”。

随后键入任意键返回主菜单,继续运行程序。

4.1.5 添加学生信息
系统先会提示你要输入的学生数目。

接着会提示要依次输入那些信息:“请输入增加学生的姓名、学号、性别、年龄及籍贯”。

输入的信息将会被写入“D:\\1.txt"”文件中。

如下图:
4.1.6 退出系统
选择第七个选项后
随后任意键入一个键就结束程序。

4.2调试小结
这个程序算是在所有程序中最基础的了,但是在做的过程中仍然遇到了很多困难,特别是刚做的那几天,对着书本去做,基本是在做无用功,让人很是着急。

我前几天做了好几个程序,但都一大堆错误。

比如“无法调用函数”,“无法读取文件”,“无法查询函数”。

但是做了几天,在问了老师和同学后,我慢慢地摸透了方法,开始重新做,一个功能一个功能的验证,程序虽简单,调试过程中总是会出现这样那样很多错误,例如:少分号,未定义等等。

有些错误很简单,自己看一下就可以改出来,但有些错误怎么也修改不出来,例如系统显示无错误,可是在运行的时候却无法执行查询的功能,同学都无法检测中其中的错误,于是就去请教老师,在一处处验证中,终于解决了这个问题。

困扰我一个多星期的程序终于完成了。

五、总结
学习C语言已经有半个学期了,就向人们所说的那样,的确不容易学好。

我也没有进行系统设计的实际经验,一直就是跟着教学计划按部就班地进行着:上课——上机——写实验报告,一直觉得自己学得不够好,但通过这次课程设计,我认识到徐好多C语言的内在要素:
(1)程序设计语言是程序设计的工具。

这是我通过两周课程设计深深体会的一点,
并且发现如果想进行有效的进行程序设计,正确地应用程序设计语言表达算法,必须正确地运用程序设计语言,掌握其语法知识。

(2)学习程序必须重视实践环节,多读程序,多编写程序,多上机实践。

这次的实践教学使得课堂教学、实践之间的关系更为紧密。

对我的学习有着深远的影响。

现在我更加熟悉的掌握了Visual C++语言的运用。

帮助我熟悉了更多Visual C++语言的功能,提高了我的动手能力,学到了许多解决实际问题的宝贵经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。

我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。

现在知道自己还有很多的不足,而且,由于认识的有限,无法去完善现在的程序,导致这个程序有很多功能还没有实现。

对此,自己以后还需要继续学习,把它完善。

六、参考文献
[1] 马安鹏.Visual C++程序设计导学。

北京:清华大学出版社,2002
[2] 谭浩强,C程序设计(第四版)
[2] 电子书籍. Visual C++技术内幕(第四版).网址:
[3] Beck Zaratian.Microsoft Visual Visual C++ 6.0程序员指南.希望图书创作室译.北京:北京希望电脑公司出品,1998
[4]Richard C.Leinecker,Tom Archer. Visual C++ 6 宝典.张艳,张谦译.北京:电子工业出版社,1999
[5] 李强,贾云霞. Visual C++项目开发实践.北京:中国铁道出版社,2004
[6] 郑莉,董渊,张瑞丰.C++语言程序设计.2003.
[7] H.M.Deitel,P.J.Deitel. Small C++ How to Program.2006.
七、源程序设计
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 100
void xianshi();
void xhselect();
void xmselect();
void hjselect();
void add();
void save();
/********************定义结构体*******************/
struct student
{
char number[20];/*定义学号*/
char name[20];/*定义姓名*/
char sex[5]; /*定义性别*/
char age[5];/*定义年龄*/
char jiguan[20];/*定义籍贯*/
};
struct student s[N];////定义新结构体 student
/*******************主函数********************/
int n;
void main()
{
int m;
int flag=0;
system("cls");
while(1)
{
printf("\n=========学生籍贯信息记录簿==========\n");
printf("***************欢迎进入****************\n");
printf(" 1、显示教材信息 \n");
printf(" 2、按学号查询籍贯 \n");
printf(" 3、按姓名查询籍贯 \n");
printf(" 4、按籍贯查询学生 \n");
printf(" 5、添加学生信息 \n");
printf(" 6、保存学生信息 \n");
printf(" 7、退出管理系统 \n");
printf("--------------------------------------\n");
printf("请您在上述功能中选择(1--7):\n");
printf("你的选择是:");
scanf("%d",&m);
system("cls");
switch(m)/*选择结构,选择各个功能*/
{
case 1:xianshi();break;
case 2:xhselect();break;
case 3:xmselect();break;
case 4:hjselect();break;
case 5:add();break;
case 6:save();break;
case 7:flag=1;break;
default:printf("输入错误,请重新输入\n");
} if(flag) break;
}
}
/******************存入信息函数**********************/
void save()
{ FILE *fp;/*定义文件型指针变量*/
if((fp=fopen("D:\\1.txt","w"))==NULL)/*打开文件,根据fopen的返回值(fp),判断该文件是否打开,如果没有打开,则打印"cannot open this file"信息,然后退出程序*/
{
printf("can not open file");
exit(1);
}
int i=0;
printf("请输入要录入的学生个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入学生学号:");
scanf("%s",s[i].number);
fprintf(fp," %s",s[i].number);
printf("请输入学生姓名:");
scanf("%s",s[i].name);
fprintf(fp," %s",s[i].name);
printf("请输入学生性别:");
scanf("%s",s[i].sex);
fprintf(fp," %s",s[i].sex);
printf("请输入学生年龄:");
scanf("%s",s[i].age);
fprintf(fp," %s",s[i].age);
printf("请输入学生籍贯:");
scanf("%s",s[i].jiguan);
fprintf(fp," %s",s[i].jiguan);
printf("录入结束:\n");
}
fclose(fp);/*关闭fp指向的文件句柄*/
printf("输入任意键回主菜单:");
getch();
}
/*********************显示信息函数**************************/
void xianshi()
{
FILE *fp;
if((fp=fopen("D:\\1.txt","r"))==NULL)/*打开文件*/
{
printf("can not open!");
exit(1);
}
printf("学号\t姓名\t性别\t年龄\t籍贯\t \n");
int i;
while(fscanf(fp,"%s%s%s%s%s",s[i].number,s[i].name,s[i].sex,s[i].age,s[i]. jiguan)!=EOF)/*从文件中逐个读取字符直到文件尾*/
{
printf("%s\t%s\t%s\t%s\t%s\t",s[i].number,s[i].name,s[i].sex,s[i].age,s[i] .jiguan);
printf("\n");
}
fclose(fp);
printf("\n");
printf("输入任意键回主菜单:");
getch();
}
/***********************查询函数*******************************/
void xhselect()
{
FILE *fp;
char num[20];
int i;
system("cls");
printf("你要查询的学生的学号是:\n");
scanf("%s",num);
if((fp=fopen("D:\\1.txt","r+"))==NULL)
{
printf("can not open!");
exit(1);
}
while(!feof(fp))
{
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t",s[i].number,s[i].name,s[i].sex,s[i].age,s
[i].jiguan);
if(strcmp(s[i].number,num)==0)
{
printf("这个学生的信息为:\n");
printf("%s\t%s\t%s\t%s\t%s\t",s[i].number,s[i].name,s[i].sex,s[i].age,s[i].ji guan);
printf("按任意键返回菜单!!\n");
}
}
fclose(fp);
getch();
}
void xmselect()
{
FILE *fp;/*打开文件*/
char nam[20];
int i;
system("cls");
printf("你要查询的学生的姓名是:\n");
scanf("%s",nam);
if((fp=fopen("D:\\1.txt","r+"))==NULL)
{
printf("can not open!");
exit(1);
}
while(!feof(fp))
{
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t",s[i].number,s[i].name,s[i].sex,s[i].age,s [i].jiguan);
if(strcmp(s[i].name,nam)==0)/*判断字符串比较是否相等*/
{
printf("这个学生的信息为:\n");
printf("%s\t%s\t%s\t%s\t%s\t",s[i].number,s[i].name,s[i].sex,s[i].age,s[i].ji guan);
printf("按任意键返回菜单!!\n");
}
}
fclose(fp);
getch();
}
void hjselect()
{
FILE *fp;/*打开文件*/
char ji[20];
int i;
system("cls");
printf("你要查询的学生的籍贯是:\n");
scanf("%s",ji);
if((fp=fopen("D:\\1.txt","r+"))==NULL)
{
printf("can not open!");
exit(1);
}
while(!feof(fp))
{
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t",s[i].number,s[i].name,s[i].sex,s[i].age,s [i].jiguan);
if(strcmp(s[i].jiguan,ji)==0)/*判断字符串比较是否相等*/
{
printf("这个学生的信息为:\n");
printf("%s\t%s\t%s\t%s\t",s[i].number,s[i].name,s[i].sex,s[i].age);
printf("按任意键返回菜单!!\n");
}
}
fclose(fp);
getch();
}
void add()
{ FILE *fp;/*打开文件*/
if((fp=fopen("D:\\1.txt","a"))==NULL)
{
printf("can not open file");
exit(1);
}
int i=0;
system("cls");
printf("请输入要录入的学生个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入学生学号:");
scanf("%s",s[i].number);
fprintf(fp," %s",s[i].number);
printf("请输入学生姓名:");
scanf("%s",s[i].name);
fprintf(fp," %s",s[i].name);
printf("请输入学生性别:");
scanf("%s",s[i].sex);
fprintf(fp," %s",s[i].sex);
printf("请输入学生年龄:");
scanf("%s",s[i].age);
fprintf(fp," %s",s[i].age);
printf("请输入学生籍贯:");
scanf("%s",s[i].jiguan);
fprintf(fp," %s",s[i].jiguan);
printf("录入结束:\n");
}
fclose(fp);
printf("输入任意键回主菜单:");
getch();
}。

相关文档
最新文档