课程设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
---学生籍贯信息记录簿 - 副本
面向过程课程设计
学生籍贯信息记录簿软件
院(系)别 信息
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
系 班 级 电气102班
课 程 设 计 任 务
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
题 目 学生籍贯信息记录簿
系 (部) 信息工程系 专 业 电气类 班 级 102班
8 月 29 日至 9 月 2 日 共 1 周
指导教师(签字)
系 主 任(签字)
年 月 日
一、设计内容及要求
编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的籍贯信息;
(3)按学号或姓名查询其籍贯;
(4)按籍贯查询并输出该籍贯的所有学生;
(5)能添加、删除和修改学生的籍贯信息;
(6)显示输出四川籍和非四川籍学生的信息并可分别存盘。
二、设计原始资料
1、链表基础知识
2、文件处理基础知识
三、设计完成后提交的文件和图表
1(计算说明书部分
数据库设计分析
#include
#include
#include
#define LEN sizeof(struct Student)
struct Student
{
char num[21];
char name[256];
char address[562];
struct Student *next;
};
int n;//n为全局变量,本文件模块中各函数均可使用它
struct Student *creat()//定义函数。此函数返回一个指向链表头的指针
{
struct Student *head;
struct Student *p1,*p2;
n=0;
p1=p2=(struct Student *)malloc(LEN);
printf("请依次输入学生的信息,输入学号为零时退出。\n");
printf("请输入学生的学号,\n");
gets(p1->num);
printf("请输入学生的姓名,\n");
gets(p1->name);
printf("请输入学生的地址,\n");
gets(p1->address);
head=NULL;
while(p1->num[0]!='0')//当学号是0时,退出
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct Student *)malloc(LEN);//开辟动态存储区,把起始地址付给p1
printf("请输入学生的学号,\n");
gets(p1->num);//输入其他学生的学号和成绩
printf("请输入学生的姓名,\n");
gets(p1->name);
printf("请输入学生的地址,\n");
gets(p1->address);
}
p2->next=NULL;
system("cls");
return(head);
}
void print_save(struct Student head) {
FILE *fp;
struct Student *p;
fp=fopen("D:\\stduent.txt","ab+");//打开文件
if(fp==NULL)
{
printf("文件无法打开\n");
exit(0);
}
printf("\n现在,有 %d 条记录,分别是:\n",n);
p=&head;
if(&head!=NULL)
do
{
printf("\n学号,");
puts(p->num);
printf("\n姓名,");
puts(p->name);
printf("\n地址,");
puts(p->address);
fseek(fp,0,2);
if(fwrite(p,sizeof(struct Student),1,fp)!=1)
printf("文件无法写入\n");
p=p->next;
}while(p!=NULL);
fclose(fp);//关闭文件
getchar();
system("cls");
}
struct Student *pt;//定义一个Student类型的指针 char comp[3];//comp为保存输入的变量 int main()//一个调用这个creat函数的main函数 c {
void ShowView();//界面显示
void name_surch();//按姓名查找
void num_surch();//按学号查找
void NativePlace_surch();//按籍贯查找
void Delete_shiyan();//删除学生信息
void modification_shiyan();//修改学生信息
void showSzechwan_No();//分别显示四川和非四川籍学生并非别存盘
void fileout(struct Student *p);//文件输出
void print_save(struct Student head);
while(1)
{
ShowView();
if(strnicmp(comp,"1",3)==0)//strnicmp比较两个字符串的函数
{
pt=creat();//函数返回链表第一个结点的地址
}
else if(strnicmp(comp,"6",3)==0)
{
print_save(*pt);
}
else if(strnicmp(comp,"3",3)==0)//输出文件内容
{
fileout(pt);
}
else if(strnicmp(comp,"2",3)==0)
{
name_surch();
}
else if(strnicmp(comp,"7",3)==0)
{
num_surch();
}
else if(strnicmp(comp,"9",3)==0)
{
//modification();
modification_shiyan();//修改学生信息
}
else if(strnicmp(comp,"4",3)==0)
{
//Delete();
Delete_shiyan();
}
else if(strnicmp(comp,"5",3)==0)
{
showSzechwan_No();
}
else if(strnicmp(comp,"8",3)==0)
{
NativePlace_surch();
}
else if(strnicmp(comp,"0",3)==0)
{
break;
}
else
{
printf("输入错误,,,,,,\n");
}
getchar();
system("cls");
}
return 0;
}
void fileout(struct Student *p)
{
FILE *fp;
printf("现在有%d条记录,分别是,\n",n);
fp=fopen("D:\\stduent.txt","rb");//0x00429af0
if(fp==NULL)
{
printf("文件无法打开\n");
exit(0);
}
rewind(fp);
while(!feof(fp))
{
fread(p,sizeof(struct Student),1,fp);//从文件中读取一块数据
printf("%-15s",p->num);
printf("%-15s",p->name);
printf("%-15s",p->address);
puts("\n");
}
fclose(fp);
getchar();
system("cls");
}
void ShowView()//主菜单
{
printf("*******************************************************************************\n");
printf("**********************欢迎进入学生籍贯信息记录簿*******************************\n");
printf("*******************************************************************************\n");
printf("****1、cin添加
*****\n");
printf("****2、namesurch按名字搜索
*****\n");
printf("****3、fileout显示文件中的信息 *****\n");
printf("****4、delete删除学生信息 *****\n");
printf("****5、showSzechwan_No分别显示四川和非四川籍学生并非别存盘
*****\n");
printf("****6、save保存当前信息 *****\n");
printf("****7、numsurch按学号搜索 *****\n");
printf("****8、nativeplace安籍贯查询 *****\n");
printf("****9、modif修改学生信息 *****\n");
printf("****0、break退出 *****\n");
printf("*******************************************************************************\n");
printf("********************请输入您的选择,,,");
gets(comp);
system("cls");//清屏
}
void name_surch()
{
FILE *fp;
char surch[256];
printf("请输入要查询的人的名字,\n");
gets(surch);
fp=fopen("D:\\stduent.txt","r");//0x00429af0
if(fp==NULL)
{
printf("不能打开文件\n");
exit(0);
}
rewind(fp);//指向文件的开始
while(!feof(fp))//查找
{
Student a;
while(!feof(fp))
{
fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据
if(!strcmp(a.name,surch))
{
printf("%s,%s,%s\n",a.num,a.name,a.address);
break;
}
}
if(!feof(fp))
{return;}
else
{
printf("查无此人????\n");
}
}
fclose(fp);
getchar();
system("cls");
}
void num_surch()
{
FILE *fp;
char surch[256];
printf("请输入要查询的人的学号,");
gets(surch);
fp=fopen("D:\\stduent.txt","rb");//0x0042aab8
if(fp==NULL)
{
printf("ERROR");
exit(0);
}
rewind(fp);//指向文件的开始
while(!feof(fp))//查找
{
Student a;
while(!feof(fp))
{
fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据
if(!strcmp(a.num,surch))
{
printf("%s,%s,%s\n",a.num,a.name,a.address);
break;
}
}
if(!feof(fp))
{return;}
else
{
printf("查无此人????\n");
}
}
fclose(fp);
getchar();
system("cls");
}
void NativePlace_surch()//按籍贯查询 {
FILE *fp;
char surch[256];
printf("请输入要查询的人的籍贯,\n");
gets(surch);
fp=fopen("D:\\stduent.txt","rb");//0x00429af0
if(fp==NULL)
{
printf("文件打不开\n");
exit(0);
}
rewind(fp);//指向文件的开始
Student a;
while(!feof(fp))
{
fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读入一组数据
if(!strcmp(a.address,surch))//相当于strcmp(a.address,surch)==0
{
printf("%s,%s,%s\n",a.num,a.name,a.address);
}
}
if(!feof(fp))
{return;}
fclose(fp);
getchar();
system("cls");
}
void showSzechwan_No()//分别显示四川和非四川籍学生并非别存盘
{
FILE *fp;
FILE *sfp;//指向四川籍学生文件
sfp=fopen("D:\\四川stduent.txt","wb");
if(sfp==NULL)
{
printf("不能打开文件\n");
exit(0);
}
FILE *ffp;//指向非四川籍学生文件
ffp=fopen("D:\\非四川stduent.txt","wb");
if(ffp==NULL)//ffp=0x0042aad8
{
printf("不能打开文件\n");
exit(0);
}
fp=fopen("D:\\stduent.txt","rb");//0x00429af0
if(fp==NULL)
{
printf("不能打开文件\n");
exit(0);
}
rewind(fp);//指向文件的开始
printf("四川籍学生信息,\n");
Student a;
while(!feof(fp))
{
fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读取一组数据
if(!strcmp(a.address,"四川
")||!strcmp(a.address,"sichuan")||!strcmp(a.address,"sichuansheng")||!strcmp(a.address,"四川
省"))
{
printf("%s,%s,%s\n",a.num,a.name,a.address);
if(fwrite(&a,sizeof(struct Student),1,sfp)!=1)
{
printf("文件无法写入\n");
break;
}
}
else
{
if(fwrite(&a,sizeof(struct Student),1,ffp)!=1)
printf("文件无法写入\n");
}
}
fclose(fp);
fclose(ffp);
fclose(sfp);
printf("非四川籍学生信息,\n");
ffp=fopen("D:\\非四川stduent.txt","rb");
if(NULL==ffp)
{
printf("文件打不开\n");
}
while(!feof(ffp))
{//此处有问
题,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
fread(&a,sizeof(struct Student),1,ffp);//从p指向的文件读取一组数据
if(a.num=="0")//ffp=0x0042aab8
break;
printf("%s,%s,%s\n",a.num,a.name,a.address);
}
fclose(ffp);
getchar();
system("cls");
}
/*编写写入部分,完成修改,删除,四川与非四川籍分别保存的部分
freab与fwrite用法的详细区别阐述*/
void Delete_shiyan()//删除学生信息
{
FILE *fp;
FILE *fptemp;
char surch[256];
printf("请输入要删除的人的学号,\n");
gets(surch);
fp=fopen("D:\\stduent.txt","rb");//0x00429af0
fptemp=fopen("D:\\temp.txt","wb");
if(fp==NULL)
{
printf("文件打不开\n");
exit(0);
}
Student a;
while(!feof(fp))
{
mark:
fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读入一组数据fp=0x0042aab8
if(0==strcmp(a.num,surch))
{
char p;
printf("%s,%s,%s\n",a.num,a.name,a.address);
printf("如果以上信息与你要删除的人的信息对应,请输入,y/n,,\n");
scanf("%c",&p);
if('Y'==p||'y'==p)
{
goto mark;
}
}
if(strcmp(a.num,surch)!=0)
{
fwrite(&a,sizeof(struct Student),1,fptemp);
}
}
fclose(fp);
fclose(fptemp);
FILE *aa;
FILE *bb;
aa=fopen("D:\\stduent.txt","wb");
bb=fopen("D:\\temp.txt","rb");
while(!feof(bb))
{
fread(&a,sizeof(struct Student),1,bb);
fwrite(&a,sizeof(struct Student),1,aa);
}
getchar();
system("cls");
}
void modification_shiyan()//修改学生信息 {
FILE *fp;
FILE *fptemp;
struct Student a;
char surch[256];
printf("请输入要修改的人的学号,\n");
gets(surch);
fp=fopen("D:\\stduent.txt","rb");//0x0042aab8
fptemp=fopen("D:\\temp.txt","wb");
if(fp==NULL)
{
printf("文件打不开\n");
exit(0);
}
rewind(fp);//指向文件的开始
while(!feof(fp))
{
fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读入一组数据fp=0x0042aab8
if(0==strcmp(a.num,surch))
{
char p;
printf("%s,%s,%s\n",a.num,a.name,a.address);
printf("如果以上信息与你要修改的人的信息对应,请输入,y/n,,\n");
scanf("%c",&p);
if('Y'==p||'y'==p)
{
printf("请输入要修改成的信息(学号、姓名、籍贯),\n");getchar();
printf("学号,");
gets(a.num);
printf("姓名,");
gets(a.name);
printf("地址,");
gets(a.address);
}
}
fwrite(&a,sizeof(struct Student),1,fptemp);
}
fclose(fp);
fclose(fptemp);
FILE *bb;
FILE *pp;
bb=fopen("D:\\stduent.txt","wb");//0x0042aab8
pp=fopen("D:\\temp.txt","rb");
while(!feof(pp))
{
fread(&a,sizeof(struct Student),1,pp);
fwrite(&a,sizeof(struct Student),1,bb);
}
getchar();
getchar();
system("cls");
}
2(图纸部分:
程序流程图
四、进程安排
(1)第一天完成创建信息链表并以磁盘文件保存,读取磁盘文件并显示输出所有
学生的籍贯信息的功能;
(2)第二天完成按学号或姓名查询其籍贯,按籍贯查询并输出该籍贯的所有学生的功能;
(3)第三天完成显示输出四川籍和非四川籍学生的信息并可分别存盘的功能并修饰;
(4)第四天完成能添加、删除和修改学生的籍贯信息的功能并完善;
五、主要参考资料
[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.
成 绩 评 定 表
口试(答辩)成绩 报告成绩 总评成绩
目 录
1 课程设计概述???????????????????????????????????????????????????????????????1
1.1 学生籍贯信息记录簿软件功能概述?????????????????????????????????????1
1.2 Visual C++6.0概述?????????????????????????????????????????????????1 2 学生籍贯信息记录簿软件总体设计?????????????????????????????????????????????1
2.1 学生籍贯信息记录簿软件总体设计思想?????????????????????????????????1
2.2 总体设计流程图?????????????????????????????????????????????????????2
2.3 学生籍贯信息记录簿菜单界面?????????????????????????????????????????3
2.4 录入学生信息界面???????????????????????????????????????????????????错误~未定
义书签。4
2.5 清屏实现???????????????????????????????????????????????????????????5
2.6 查找界面???????????????????????????????????????????????????????????7
2.7 删除界面???????????????????????????????????????????????????????????9
2.8 分别显示四川籍学生与非四川籍学生界面??????????????????????????????10
2.9 修改界面??????????????????????????????????????????????????????????10
3.0 退出界面??????????????????????????????????????????????????????????11 3 设计体会及今后的改进意见????????????????????????????????????????11 4 参考文献????????????????????????????????????????????????????????12
1 课程设计概述
1.1 Visual C++6.0功能概述
Visual C++是微软公司的重要产品之一, 是一种功能强大行之有效的可视化编程工具。它提供了MFC类库,使用户可以方便的开发自己想实现的功能。Visual C++6.0的主要特点:
(1)自动化和宏功能。
(2)可以灵活地定制工具栏和菜单。
(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。
(4)支持Internet连接。
(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。
(6)在工作区内可以包含多个并列的工程文件。
(7)可以在对话框中使用WizardBar将程序同可视化元素联系起来。
(8)Find in File命令支持两个独立的输出窗格,可以保存上一次搜索的结果。
这些新特性可以更好地利用Visual C++开发工具进行Windows应用程序开发。
1.2 字符统计软件功能概述
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的籍贯信息;
(3) 按学号或姓名查询其籍贯;
(4)按籍贯查询并输出该籍贯的所有学生;
(5)能添加、删除和修改学生的籍贯信息;
(6)显示输出四川籍和非四川籍学生的信息并可分别存盘。
2 学生籍贯信息记录簿软件总体设计
2.1 学生籍贯信息记录簿软件总体设计思想
学生籍贯信息记录簿软件的功能为统计每个学生的信息包括:学号、姓名、籍贯。学生籍贯信息记录簿软件的功能模块有:
(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter键进入该功能。
(2)接受用户输入的信息,并以磁盘文件保存。
(3)读取磁盘文件并显示输出所有学生的籍贯信息。
(4)按学号或姓名查询其籍贯。
(5)按籍贯查询并输出该籍贯的所有学生。
(6)能添加、删除和修改学生的籍贯信息。
(7)显示输出四川籍和非四川籍学生的信息并可分别存盘。
1
2.2 总体设计流程图
图所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。选择1-5并按enter键进行操作。如选择出错,系统将提出警告,并提醒用户重新进行选择。
2
2.3 学生籍贯信息记录簿菜单界面
图3,2 字符串累加统计界面
如上图所示,该功能实现显示主菜单。选择1按enter键进入添加功能,程序提
醒用户输入字符串,输入完毕后按enter键将完成统计并显示结果,同时程序将再次
提醒用户进行新的选择。
3
2.4 录入学生信息界面
图3,3 字符串重新统计界面
如上图所示,该功能实现录入学生信息并保存到相应的文件。程序提醒用户输入姓名、学号、地址,输入完毕后分别按enter键,程序将结果保存入相应的文件中,保存完后,程序将再次提醒用户进行新的输入。当输入结束时,输入学号为零就会自动退出。
4
2.5 清屏实现
图3,4,1 清屏前程序运行界面
当每一个操作结束时,系统都会自动清屏,并返回主菜单,以保证屏幕整洁。使用户能拥有一个好的心情使用此软件。输入3 ,按enter键,查看文件中所存储的所有信息。
5
图3,4,2 查看文件中数据的界面
如上图所示,该功能将显示指定文件中保存的所有数据。按enter键将实现清屏并返回主菜单的功能。
6
2.6 查找界面
2.6.1 按学号查找
图3,5,1 按学号查找功能界面
2.6.2按姓名查找
7
图3,5,2 按姓名查找界面
2.6.3按籍贯查询
如上图所示,按照提示输入相应的学号、姓名、籍贯等信息,然后按enter键,就会显示你想要查找的信息。
8
2.7 删除界面
按照上图中的提示,输入要删除的人的学号,按enter键,将显示你要删除的人的信息,如果和你要删除的人的信息相同输入y(不分大小写)按enter键,将删除其信息。
删除完成后显示文件中的所有成员,如上图
9
2.8分别显示四川籍学生与非四川籍学生界面
2.9修改界面
按提示操作,如果现实的学生的信息是你要修改的,就输入y。再输入要改成的详细
信息,按enter键保存、退出。
10
如上图,修改后的学生信息
3.0退出界面
图3,6,1 选择退出功能界面
,6,2 退出界面 图3
如上图所示,该功能将关闭正在运行的程序。选择5按enter键实现该功能,按任意键关闭程序。
设计体会及今后的改进意见
为了提高我们的实践能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期二周的Visual C++课程设计实习,并安排了指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。
在此次字符统计程序开发过程中,有很多东西值得我们思考并总结。
11
开发过程大体可分为以下几个步骤:
(1)思考总体
设计方案
关于薪酬设计方案通用技术作品设计方案停车场设计方案多媒体教室设计方案农贸市场设计方案
:总体结构和模块外部设计,功能分配。思考要实现整个程序大体需要的几个模块和其中用到的Visual C++语言基本操作符、语句等。
(2)画出总体设计
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
流程图:用流程图的形式展现你的基本编程思想。
(3)流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现(并想好实现的关键代码。
(4)编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不断改进(如何实现各函数功能,达到预期效果也将是一项繁复的工作。
(5)代码的调试:在Visual C++6.0环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。
(6)最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化(增强程序的新意与可行性。
通过这次课程设计,使我们更加熟悉的掌握了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.
12
13
14
15