同济大学c++复习文件管理系统开发案例

合集下载

vc++文档资料管理系统的设计与实现

vc++文档资料管理系统的设计与实现

摘要本系统使用MFC提供的文档视图结构为主体框架,用XML文挡进行数据的储存,实现对各种资料的管理。

第一部分是实现对用户界面操作的响应,这部分主要是使用MFC提供的不同的窗口类,即框架窗口,视图窗口,对话窗口以及控件来实现用户操作界面的主体框架的实现。

第二部分为处理具体事务的模块,实现用户对资料的管理和使用。

第三部分是用XML编写储存结构,这部分主要是设计XML树和对其存储和读取的具体实现。

利用本系统可以管理自己的各种资料(文本的和电子的),对每一份资料均有命名,对所有的资料进行归类,指明各资料的存放位置,可以给每一份资料指明关键字,便于用户查找资料。

若是电子资料(如电脑上的文件),可以通过鼠标点击直接打开文件。

整个系统实现了最初设计的各种功能,并能够快速方便的帮助用户查找到需要的资料信息,整个操作界面简洁和实用。

关键词:MFC;XML;框架;窗口3.2系统开发环境3.2.1系统软件环境本系统采用的软件工具有:操作系统:WindowsXP开发环境:VC++6.03.2.2工具简介VC++6.0在提供可视化的编程方法的同时,也适用于编写直接对系统进行底层操作的程序,其生成代码的质量要优于很多其他的开发工具。

VC++6.0所提供的基本类库MFC,对Windows所用的Win32应用程序接口进行了十分彻底的封装,这使得开发人员可以使用完全面向对象的方法来进行Windows编程,从而大大节省了应用程序的开发周期,降低了开发成本。

而且,其强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。

随着多媒体技术和图形图像技术的不断发展,可视化技术得到了广泛的重视,愈来愈多的人开始研究并应用可视化技术。

所谓可视化技术,一般是指软件开发阶段的可视化和对计算机图形技术和方法的应用。

VC++是一个很好的可视化编程工具,使用VC++环境来开发基于Windows的应用程序,其界面更友好,便于程序员操作。

开发环境是程序员同VC++的交互界面,通过它程序员可以访问C++源代码编辑器、资源编辑器,使用内部调试器,还可以创建项目文件3.3系统概述软件主要提供的功能包括:资源管理方面——添加资源,删除资源;资源浏览——按照目录,按照搜索。

简单的文件管理系统-C课程设计

简单的文件管理系统-C课程设计

课程设计报告(本科)课程:高级语言程序设计学号:姓名:班级:2011级计算机软件1班教师:时间:2011.12计算机科学与技术系C语言程序代码附录:#include "stdio.h"#include "stdlib.h"#define N 40 /* 宏定义*/int main() /* 主函数*/{void dir();void rename();void del();void move();void copy(); /* 函数声明*/int a;for(;a!=0;) /*死循环,如果用户输入的不是0执行循环*/{printf("\n\n\n");printf("\t\t********************************************\n"); /*屏幕上显示主界面*/printf("\t\t** 欢迎使用文件管理系统 **\n");printf("\t\t********************************************\n");printf("\t\t**\t1.查看文件(只适用文本文件) **\n");printf("\t\t**\t2.重命名文件 **\n");printf("\t\t**\t3.删除文件 **\n");printf("\t\t**\t4.移动文件 **\n");printf("\t\t**\t5.复制文件 **\n");printf("\t\t**\t0.退出系统 **\n");printf("\t\t********************************************\n");printf("\t\t请选择要进行的操作(按enter键执行!):"); /*提示用户输入*/scanf("%d",&a); /*接受用户输入*/switch(a){case 1: dir(); break; /*如果用户输入1调用dir()函数查看文件*/case 2: rename(); break; /*如果用户输入2调用rename()函数-文件*/case 3: del(); break; /*如果用户输入3调用del()函数-删除文件*/case 4: move(); break; /*如果用户输入4调用move()函数-移动文件*/case 5: copy(); break; /*如果用户输入5调用copy()函数-复制文件*/case 0: printf("\t\t谢谢使用!!\n");break; /*如果用户输入0 ,结束循环!退出程序*/default: {printf("输入有误,自动结束!\n");a=0;} /*如果用户输入有误,将0赋给a结束循环*/}}return 0;}void dir() /*dir()函数*/{int a; /*定义变量a,接收用户的操作选择*/for(;a!=0;) /*死循环*/{FILE *fp; /*定义文件指针*/char ch,filename[N];printf("请输入要查看的文本文件(如d:\\1.txt):");/*提示用户输入*/scanf("%s",filename);if((fp=fopen(filename,"r"))==NULL) printf("无法找到该文件!\n");/*打开文件操作*/else{ch=fgetc(fp); /*将fp文件的字符赋给ch*/while(ch!=EOF) /*循环直到遇到文件结束标识符结束*/{putchar(ch); /*将字符ch输出到屏幕上*/ch=fgetc(fp); /*将fp文件的下一个字符赋给ch*/}}fclose(fp); /*关闭文件*/printf("\n\n\t1.继续。

c文件管理系统课程设计

c文件管理系统课程设计

c 文件管理系统课程设计。

一、课程目标知识目标:1. 让学生掌握文件管理系统的基本概念,如文件、文件夹、路径等。

2. 使学生了解文件系统的组织结构,如树状结构、目录层级等。

3. 帮助学生理解文件存储的基本原理,如磁盘空间分配、文件存取速度等。

技能目标:1. 培养学生能够熟练使用文件管理器进行文件创建、复制、移动、删除等操作。

2. 让学生学会利用文件系统进行文件分类、整理、备份和恢复。

3. 培养学生具备简单的文件系统故障排查和处理能力。

情感态度价值观目标:1. 培养学生对计算机文件管理的兴趣,提高学习积极性。

2. 培养学生养成良好的文件管理习惯,如分类存放、定期备份等。

3. 培养学生的团队合作意识,学会在小组讨论中分享观点、倾听他人意见。

课程性质:本课程为信息技术课程,旨在让学生掌握文件管理的基本知识和技能,提高信息素养。

学生特点:本课程针对的是初中年级学生,他们对计算机有一定的基础,好奇心强,但注意力容易分散。

教学要求:结合学生特点,教师应采用生动有趣的教学方法,注重实践操作,引导学生主动探究,确保课程目标的实现。

在教学过程中,关注学生的个体差异,及时给予指导和鼓励,使学生在完成具体学习成果的过程中,不断提高自身能力。

二、教学内容1. 文件管理基础- 文件与文件夹概念- 文件系统组织结构- 文件存储原理2. 文件管理操作- 文件创建、复制、移动、删除- 文件夹创建、重命名、属性修改- 文件搜索与排序3. 文件管理技巧- 文件分类与整理- 文件备份与恢复- 文件系统优化4. 文件管理故障处理- 磁盘空间不足- 文件丢失与误删- 文件权限与共享问题教学内容安排与进度:第一课时:文件管理基础第二课时:文件管理操作第三课时:文件管理技巧第四课时:文件管理故障处理教材章节关联:本教学内容与教材中“文件与文件夹管理”章节相关,涵盖了该章节的核心知识点和操作技能。

通过本课程的学习,学生可以系统地掌握文件管理的相关知识,提高实际操作能力。

c语言项目案例

c语言项目案例

c语言项目案例C语言项目案例。

在学习C语言的过程中,很多人会感到枯燥和乏味,因为C语言作为一门结构化的程序设计语言,更多的是以算法和逻辑为主,缺乏实际的项目案例来练习和应用。

因此,本文将给大家介绍一些C语言项目案例,帮助大家更好地理解和应用C语言。

1. 学生成绩管理系统。

学生成绩管理系统是一个非常经典的C语言项目案例。

通过这个项目,你可以学习如何设计一个简单的学生成绩管理系统,包括学生信息的录入、成绩的输入和查询、成绩的统计和分析等功能。

这个项目涉及到文件操作、结构体的使用、指针的应用等内容,对于初学者来说是一个很好的练习项目。

2. 简单的图书管理系统。

图书管理系统是另一个很好的C语言项目案例。

通过这个项目,你可以学习如何设计一个简单的图书管理系统,包括图书信息的录入、借阅和归还功能、图书信息的查询和统计等功能。

这个项目涉及到文件操作、链表的应用、字符串处理等内容,对于提高学生的编程能力和综合运用C语言知识是非常有帮助的。

3. 简单的学生选课系统。

学生选课系统是另一个很好的C语言项目案例。

通过这个项目,你可以学习如何设计一个简单的学生选课系统,包括学生信息的录入、课程的添加和删除、学生选课和退课等功能。

这个项目涉及到文件操作、数组的应用、函数的设计等内容,对于提高学生的逻辑思维和编程能力是非常有帮助的。

4. 简单的学生信息管理系统。

学生信息管理系统是一个非常基础的C语言项目案例。

通过这个项目,你可以学习如何设计一个简单的学生信息管理系统,包括学生信息的录入、修改和删除、学生信息的查询和打印等功能。

这个项目涉及到文件操作、数组的应用、字符串处理等内容,对于初学者来说是一个很好的练习项目。

总结。

通过以上介绍的C语言项目案例,我们可以看到,C语言作为一门结构化的程序设计语言,可以应用到很多实际的项目中。

通过这些项目案例的学习和练习,我们不仅可以提高自己的编程能力,还可以更好地理解和应用C语言的知识。

因此,我建议大家在学习C语言的过程中,多多尝试一些实际的项目案例,这样可以更好地提高自己的编程能力和解决问题的能力。

同济大学c++复习文件管理系统开发案例

同济大学c++复习文件管理系统开发案例

1、基本流程
开始 打开文件 读文件并存入 数组或链表 调用菜单函数 选择菜单操作 退出系统吗 否 调用相应函数 完成相应操作 是 是 已存盘否 否 调用存盘函数
结束
2、功能模块设计
输入模块:实现将数据输入数组或链表
查询模块:在数组或链表中实现按不同字段进行查询 更新模块:实现对记录的增、删、改、排序等操作 统计模块:实现各种统计功能 输出模块:实现将处理后的数据写入文件或在屏幕上 输出的功能。
成绩管理
输入模块
查询模块
更新模块
统计模块 输出模块
文 件 输 入
键 盘 输 入
按 学 号 查 询
按 姓 名 查 询
增 加 记 录
删 除 记 录
修 改 记 录
排 序 记 录
统 计 各 段 人 数
输 出 至 文 件
屏 幕 显 示
系统功能模块图
二、总体设计
基本流程 功能模块设计 数据结构设计
函数功能描述
void modify(student stu[],int len) 功能:修改长度为len的学生表中指定学号的学生记录
void count(student stu[],int len) 功能:对长度为len的学生表按要求进行统计 void sort(student stu[],int len) 功能:将长度为len的学生表中记录按要求排序 void save(student stu[],int len) 功能:将长度为len的学生表中记录保存到文件
易错点的讲解,包括:
•复杂数据结构的访问层次和语句结构 •根据函数功能确定函数参数及返回值类型 •单链表的操作函数中表头指针的变化 •根据文件操作数据类型和文件的有无选取
正确的文件打开方式和文件读写函数。

操作系统实训C++文件管理系统

操作系统实训C++文件管理系统

目录1 设计目的 (1)2 设计内容 (1)3 设计步骤 (1)3.1 开发平台 (1)3.1.1 开发环境介绍 (1)3.1.2 开发界面截图 (2)3.2 详细设计 (2)3.2.1 算法说明 (2)3.2.2 系统流程图 (4)3.3 运行与测试 (4)3.3.1 运行测试 (4)3.3.2 异常处理测试 (7)3.4使用说明 (9)4 设计总结 (10)5 附录 (10)1 设计目的(用小3号黑体,并留出上下间距为:段前0.5行,段后0.5行)《操作系统概论》学习已经快结束了,通过本课程,了解了操作系统的发展,组成,处理器管理,存储管理,文件管理,设备管理,并发进程等相关知识。

理论必须与实际联系,才能理解的更加深刻,所以进行了这次课程设计,制作一个文件模拟系统的程序,加深对相关知识的理解与运用。

2 设计内容本设计应完成以下要求:1.设计一个10个用户的文件系统,用户至少有Create、delete、open、close、read、write等文件操作命令。

2.程序采用多级文件目录管理,仅可能模拟文件存取的全过程。

3 设计步骤3.1 开发平台3.1.1 开发环境介绍我们采用了C语言来并在Visual Studio 2005平台实现。

.NET Framework是生成、运行下一代应用程序和XML Web Services的内部Windows组件。

它简化了分布式Internet环境中的应用程序开发,由公共语言运行库(CLR)和.NET Framework类库两个组件构成。

Visual Studio 2005 是微软公司开发的集成开发环境,支持C、C++、VB、J#、C#等多种开发语言,界面友好,并有自动补全代码功能,便于调式,是当前最流行的.NET Framework开发工具。

安装Visual Studio 2005的系统要求:硬件需求描述处理器Pentium3级600MHZ以上处理器RAM Windows XP Professional至少为160MB硬盘对于Visual C#.NET、Visual ,需要600MB硬盘空间,安装驱动器上需要1.5GB磁盘空间视频800*600像素,256色(建议:增强色16位)鼠标Microsoft鼠标或兼容的指针设备3.1.2 开发界面截图3.2 详细设计3.2.1 算法说明用户登录时要输入用户名和密码,如果正确则进入初始界面,默认只有十个用户。

同济大学档案管理系统

同济大学档案管理系统

图9
件的基本信息的录入、编辑、修改外,还支持用户远程上传各
换接口,可以非常容易地和各种办公自动化系统进行连接。
同济大学档案馆
-3-
档案网络管理系统 6.0
第二章 档 案 管 理
由于该系统是浏览器、服务器结构的系统,客户端的计算机只要通过浏览器就可以登录档 案管理系统。在同济大学校园网计算机的浏览器的地址栏中输入http://192.168.250.32或者 http://192.168.250.32/login.asp ,即可打开档案管理系统登录页面,输入用户名和密码即可 进入档案管理系统的应用。
2. 鼠 标 左 键 点 击
“打开”超链
接,系统进入
“编辑档案信
息主页面”。如
图 2 所示:
该页面显
示当前打开档
案表中的所有
案卷或文件记 录,并以类目结
图2
构显示,左边显示的是类目结构,右边是相应类目下的案卷、文件记录。图 2 中存在一个
档案表“档案馆(教学 JX)”,它的下面有个“教学综合 JX11”的类目。
2. 全文管理与全文检索
本系统的全文管理通过高效的全文检索算法,实现了全文的高速检索。系统还支持用户远 程上载各种格式的电子文件全文、纸质文件扫描图像,从而实现了对档全文检索、打印、下载、 上传、备份等的全方位管理。
3. 图像、录像、录音等多媒体档案管理
系统对扫描图像、录像、录音等多媒体档案进行统一管理,用户可以远程上载图像、多媒 体文件到系统中,对于录音录像档案还可以进行在线点播。
同济大学档案馆
-7-
档案网络管理系统 6.0
图8
11.用户在编辑页面下,可以对所选的案卷或文件的基本信息
进行修改,修改完成后需用鼠标左键点击页面最下方的“保

同济CC软件基础数据库2

同济CC软件基础数据库2


4.4.5 数据库备份与恢复
一、数据库的完整备份 步骤: a) 展开服务器组,然后展开服务器。 b) 展开“数据库”文件夹,右击要备份的数据库,指向 “所有任务”子菜单,然后单击“备份数据库”命令 。 c) 在“备份”选项下单击“数据库 — 完全”。 d) 在"目的"选项下,单击"磁带"或"磁盘",然后指定备 份目的地。如果没出现备份目的地,则单击"添加"以 添加现有的目的地或创建新目的地。

例8. 查询student表中姓陈的学生信息 SELECT * FROM student WHERE 姓名 LIKE ‘陈%’
字段 [NOT] BETWEEN 值1 AND 值2
例9. 例如查询student表中奖学金在300至400之间的学
生信息 SELECT * FROM student
关系表达式 逻辑表达式 字段 [NOT] LIKE "字符串通配式" 字段 [NOT] BETWEEN 值1 AND 值2 字段 [NOT] IN (值列表) 字段 IS [NOT] NULL

关系表达式 关系运算符:
关系运算符两边值的类型必须一致。

例4. 查询student表中奖学金大于等于350的学生姓名和奖学 金金额
视 图
是个虚拟表。常用于集中、简化和定制显示数据
库中
的信息。对一个或多个基表中的数据进行筛选、
引用。
存储过程
存放于服务器的预先编译好的一组T-SQL语句。

•4.4.2 创建数据库
创建数据库就是为数据库确定名称、大小、存放位置、文 件名的过程。SQL Server 2000中创建数据库的方法有:

C++课程设计---文件管理系统

C++课程设计---文件管理系统

报告内容:1.管理系统的功能说明这是一个用来进行文件管理的系统,能够实现对文件信息(包括文件号、文件名、文件性质、创建日期、文件大小)的浏览、创建、修改、搜索等功能。

2.储存数据的描述储存的数据由Flies类完成,Flies类中设置了num,name,type,date,space 5个成员来分别记录数据的文件号、文件名、文件性质、创建日期、文件大小。

(便于测试事先录入了5个初始数据)3.概要设计说明源程序主要分为3个部分:1.用于储存数据的Flies类(其中包括修改数据的函数check以及显示数据内容display)。

2.实现系统功能的函数(包括主菜单显示函数menu、增加数据函数add、用于查询数据的函数search1,search2)。

3.主函数。

4.源程序#include <iostream>#include <string>using namespace std;class Flies{ //定义Flies类public:string num,name,type,date,space; //flies类的成员Flies(){}Flies(string n,string N,string T,string D,string S){num=n;name=N;type=T;date=D;space=S;}void check() //修改flies类成员的函数check {cout<<"输入新的文件号:";cin>>num;cout<<"输入新的文件名:";cin>>name;cout<<"输入新的文件类型:";cin>>type;cout<<"输入新的创建日期:";cin>>date;cout<<"输入新的文件大小:";cin>>space;}void display() //显示flies类成员内容的函数display {cout<<"文件号:"<<num<<endl;cout<<"文件名:"<<name<<endl;cout<<"文件类型:"<<type<<endl;cout<<"创建日期:"<<date<<endl;cout<<"文件大小:"<<space<<endl;cout<<endl;}};void menu() //显示主菜单的函数menu {cout<<"*--------------------------*"<<endl;cout<<"| Menu |"<<endl;cout<<"| 输入:T (浏览数据) |"<<endl;cout<<"| A (增加数据) |"<<endl;cout<<"| C (修改数据) |"<<endl;cout<<"| S (查询数据) |"<<endl;cout<<"| Q (退出程序) |"<<endl;cout<<"| |"<<endl;cout<<"*--------------------------*"<<endl;};Flies add() //添加新文件的函数add {string num,name,type,date,space;cout<<"输入文件号:";cin>>num;cout<<"输入文件名:";cin>>name;cout<<"输入文件类型:";cin>>type;cout<<"输入创建日期:";cin>>date;cout<<"输入文件大小:";cin>>space;Flies b(num,name,type,date,space);return b;}void search1(Flies a[],int Num) //按文件名查找对象的函数search1 { int count,i;string V;cout<<"输入要查找的文件名:";cin>>V;cout<<"查找结果为:"<<endl;for(i=0,count=0;i<Num;i++){if (a[i].name==V)a[i].display();elsecount++;}if(count==Num)cout<<"空"<<endl;cout<<endl;}void search2(Flies a[],int Num) //按文件类型查找对象的函数search2 { int count,i;string V;cout<<"输入要查找的文件类型:";cin>>V;cout<<"查找结果为:"<<endl;for(i=0,count=0;i<Num;i++){if (a[i].type==V)a[i].display();elsecount++;}if(count==Num)cout<<"空"<<endl;cout<<endl;}int main() //主函数{static int Num=5;char n,x;int i;Flies A("01","windows","dll","2012/2/3","20k"), //设置初始文件B("02","office word","doc","2012/4/12","500k"),C("03","Warcarft III","exe","2012/6/1","1.2G"),D("04","homework","txt","2012/12/7","128k"),E("05","Mylove","mp3","2013/6/13","4M");Flies a[]={A,B,C,D,E};while(1) {cout<<"****************************************************"<<endl;cout<<endl;menu();cout<<endl;cout<<"****************************************************"<<endl;cout<<"选择功能:"; //程序功能选择的实现cin>>n;if(n=='Q')break;switch (n){case 'T':for(i=0;i<Num;i++){a[i].display();}break;case 'A':a[Num]=add();Num++;break;case 'C':cout<<"需要修改第几个文件:";cin>>i;if(0<i&&i<=Num){a[i-1].check();break;}elsecout<<"该文件不存在,请确认"<<endl;break;case 'S':cout<<"(1)按文件名查找(2)按文件类型查找选择你需要的方式:";cin>>x;switch(x){case '1':search1(a,Num);break;case '2':search2(a,Num);break;default:cout<<"输入错误,请正确输入"<<endl;cout<<endl;break;}break;default:cout<<"输入错误,请正确输入"<<endl;cout<<endl;break;}}cout<<"谢谢使用,再见"<<endl;return 0;}5.测试分析主界面浏览初始数据(T)增加数据(A)修改数据(C)查新数据(S)退出程序(Q)6.总结报告总体来说这次设计还是比较顺利的,整个程序的内容设计基本上都在平时作业中出现过,也都是基础内容,由此可见平时的学习是十分重要的。

基于VC++文档管理系统设计毕业设计(含源文件)

基于VC++文档管理系统设计毕业设计(含源文件)

文档管理系统说明书主要功能《文档管理系统》主要用于对企业的文档进行有效管理,其主要包括基本信息、文档管理和系统设置。

系统的功能性强,操作灵活,是您企业进行文档管理的最佳帮手。

操作注意事项用户在使用《文档管理系统》之前,应注意以下事项:(1)在登录系统之前应先附加数据库,否则无法运行。

(2)本系统的初始用户名为:mr,密码为:mrsoft。

(3)本系统完全支持按〈Enter〉键跳到下一文本框的功能,用户无需再通过鼠标定位光标位置。

第1章系统登录双击可执行文件,进入如图1.1所示的登录界面。

图1.1 用户登录在用户名和密码的文本框内输入用户名“mr”、密码“mrsoft”,单击【登录】按钮,即可进入如图1.2所示的主界面。

图1.2 文档管理系统主界面第2章基本信息【基本信息】主要包括【单位文档】和【文档类别】。

2.1 单位文档单击【基本信息】/【单位文档】选项,进入如图1.3所示的单位档案主界面。

此界面可对单位档案进行添加、修改、删除操作。

图1.3 基本信息1.基本信息添加在“单位编号”等文本框内输入相应的内容。

最后单击【添加】按钮,即添加完成。

结果如图1.4所示。

图1.4 基本信息添加2.基本信息修改在“单位列表”界面中选择要修改的单位档案,双击进入进行修改。

修改后单击【修改】按钮,即修改完成。

3.基本信息删除●在“单位列表”界面中选择要删除的单位档案,双击进入进行删除。

●在“单位档案”界面中输入“单位编号”直接删除。

2.2 文档类别单击【基本信息】/【文档类别】选项,进入如图1.5所示的界面,该界面可以对文档类别进行添加、修改、删除等操作。

图1.5 基本信息1.档类别添加在“单位编号”等文本框内输入相应的内容。

最后单击【添加】按钮,即添加完成。

结果如图1.6所示。

2.文档类别修改输入要修改的单位编号及类别编号,在文档类别的文本框内输入新的文档类别,最后单击【修改】按钮,即修改完成。

3.文档类别删除输入要删除的单位编号、类别编号和文档类别,最后单击【删除】按钮,即删除完成。

文件管理系统开发案例PPT文档共51页

文件管理系统开发案例PPT文档共51页
Thank you
文件管理系统开发案例
41、实际上,我们想要的不是针对犯 罪的法 律,而 是针对 疯狂的 法律。 ——马 克·吐温 42、法律的力量应当跟随着公民,就 像影子 跟随着 身体一 样。— —贝卡 利亚 43、法律和制度必须跟上人类思想进 步。— —杰弗 逊 44、人类受制于法律,法律受制于情 理。— —托·富 勒
45、法律的制定是为了保证每一个人 自由发 挥自己 的才能 ,而不 是为了 Biblioteka 缚他 的才能 。—— 罗伯斯 庇尔
6、最大的骄傲于最大的自卑都表示心灵的最软弱无力。——斯宾诺莎 7、自知之明是最难得的知识。——西班牙 8、勇气通往天堂,怯懦通往地狱。——塞内加 9、有时候读书是一种巧妙地避开思考的方法。——赫尔普斯 10、阅读一切好书如同和过去最杰出的人谈话。——笛卡儿

c++复习文件管理系统作业

c++复习文件管理系统作业

实验文件管理系统设计与实现
【目的】
1、引导学生对程序进行进一步优化和深入思考;
2、学会多文件程序的编写;
3、理解结构化程序的编程抽象及代码组织
【内容】
参照课件内容,实现或优化如下函数功能:
1、实现menu函数;
2、实现display函数;
3、优化search函数;
4、实现append函数;
5、实现del函数;
6、实现modify函数
7、编写统计输出各科最高分的函数count;
8、实现按学号排序的函数sort;
9、实现将学生记录写入文件的save函数
10、实现将文件内容读到学生数组的readf∏e函数;
【要求】
1、将代码组织成由客户文件、接口文件和库文件组成的多文件形式。

2、用结构化和面向对象两种方法实现。

3、编写主函数对以上各函数功能进行测试。

文件管理系统C++

文件管理系统C++

目录一.课程设计目的及要求 (2)二.相关知识 (2)三. 题目分析 (3)四.概要设计 (4)五.代码及流程 (5)六.运行结果 (20)七.设计心得..................................................................... 错误!未定义书签。

八.参考文献.. (23)一.课程设计目的及要求深入了解文件管理系统,初步掌握文件管理系统的实现方法。

用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。

从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。

编写一程序,模拟一个简单的文件管理系统。

树型结构,目录下可以是目录,也可以是文件。

在此文件管理系统,可实现的操作有:改变目录:格式:cd <目录名>显示目录:格式:dir <目录名>创建目录:格式:md <目录名>删除目录:格式:rd <目录名>新建文件:格式:edit <文件名>删除文件:格式:del <文件名>退出文件系统:exit二.相关知识1.文件结构体struct FileNode{char filename[FILENAME_LEN];//文件名/目录名int isdir;//目录文件识别标志int i_nlink;//文件的链接数int adr;//文件的地址struct FileNode *parent, *child;//指向父亲的指针和指向左孩子的指针struct FileNode *sibling_prev, *sibling_next;//指向前一个兄弟的指针和指向//后一个兄弟的指针.};整个文件系统采用二叉树型存储结构,初始化文件树如下:图2-1 初始目录树2.所使用函数及其功能int Main(); //主函数void Init();//初始化文件树int ParseCommand();//接受输入的命令并把其分解成操作名和路径文件名void ExecuteCommand();//执行命令,分别执行cd,edit,md,del,rd, dir,exit命令int cdComd(); //改变目录功能处理int editComd();//处理edit命令,即创建文件,只要创建表示文件的节点即可,内容及大小不考虑int mdComd(); //创建目录int delComd();//处理del命令,即删除指定文件,不存在是给出错误信息int dirComd();//处理dir命令,显示目录int rdComd(); //删除目录int FindFilename(char Para2[]);//查找文件名struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink);//创建结点int GetInput(char* buffer,unsigned int buffer_len);//获取输入3.所使用的变量struct FileNode *cp, *tp, *root;// *cp, *tp, *root是根目录节点char path[INPUT_LEN-COMMAND_LEN];//记录当前走过的路径char Para1[COMMAND_LEN],Para2[INPUT_LEN-COMMAND_LEN];//para1数组存储输入的命令,para2数组存储输入的文件名char filename[FILENAME_LEN],tmp;unsigned int i,j;三题目分析1.文件系统采用二叉树型存储结构,结点结构如下:struct FileNode{char filename[FILENAME_LEN];//文件名/目录名int isdir;//目录、文件的识别标志(0为文件,1为目录)int i_nlink;//文件的链接数//int adr;//文件的地址struct FileNode *parent, *child;//指向父亲的指针和指向左孩子的指针struct FileNode *sibling_prev, *sibling_next;//指向前一个兄弟的指针和指向后一个兄弟的指针.};2.目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开3.功能具体描述:改变目录:改变当前工作目录,目录不存在时给出出错信息显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s参数的dir 命令,显示所有子目录)创建目录:在指定路径或当前路径下创建指定目录。

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

else if(choice==2) { cout<<"输入姓名:"<<endl; cin>>name; for(i=0;i<len;i++) if(strcmp(stu[i].name,name)==0) { cout<<"学号\t姓名\t语文\t数学\t英语\t总分"<<endl; cout<<stu[i].num<<'\t'<<stu[i].name<<'\t'; for(j=0;j<3;j++) cout<<stu[i].s[j]<<"\t"; cout<<stu[i].s[0]+stu[i].s[1]+stu[i].s[2]<<endl; cout<<"按任意键继续"<<endl; getchar(); return; } cout<<"\n未找到该生记录,按任意键继续\n"; getchar(); return; } else { cout<<"\n选择错误,按任意键返回"<<endl; getchar(); ?思考:比较按姓名和学号两种方 }
switch(choice) { case 1:display(stu,len);break; case 2:search(stu,len);break; case 3:len=append(stu,len);break; case 4:len=del(stu,len);break; case 5:modify(stu,len);break; case 6:count(stu,len);break; case 7:sort(stu,len);break; case 8:save(stu,len);break; default: cout<<"\n输入错误,按任意键继续"<<endl; getchar(); } } }
成绩管理
输入模块
查询模块
更新模块
统计模块 输出模块
文 件 输 入
键 盘 输 入
按 学 号 查 询
按 姓 名 查 询
增 加 记 录
删 除 记 录
修 改 记 录
排 序 记 录
统 计 各 段 人 数
输 出 至 文 件
屏 幕 显 示
系统功能模块图
二、总体设计
基本流程 功能模块设计 数据结构设计
函数功能描述
4、函数功能描述(数据结构以结构数组为例) void display(student stu[],int len) 功能:显示长度为len的学生表中存储的学生记录。 void search(student stu[],int len) 功能:在长度为len的学生表中按姓名或学号查找指 定的学生记录。 int append(student stu[],int len) 功能:在长度为len的学生表的末尾添加新的学生记录 int del(student stu[],int len) 功能:从长度为len的学生表中删除指定学号的学生
同按学号查找过程,略
输出未找到提示
结束
void search(student stu[],int len) { int choice,i,j; char num[8],name[20]; system("cls"); cout<<"1.按学号查询 2.按姓名查询\n"; cout<<"输入查找方式[1,2]:"; cin>>choice; if(choice==1) { cout<<"输入学号:"<<endl; cin>>num; 字符串比较必须通过此函数 for(i=0;i<len;i++) if(strcmp(stu[i].num,num)==0) { cout<<"学号\t姓名\t语文\t数学\t英语\t总分"<<endl; cout<<stu[i].num<<'\t'<<stu[i].name<<'\t'; for(j=0;j<3;j++) cout<<stu[i].s[j]<<"\t"; cout<<stu[i].s[0]+stu[i].s[1]+stu[i].s[2]<<endl; cout<<"按任意键继续"<<endl; getchar(); return; } cout<<"\n未找到该生记录,按任意键继续\n"; getchar(); return ;
2、menu函数的设计 该函数功能很简单,只需在屏幕上按 要求显示菜单项,请自行完成设计。
3、display函数的设计 分析:
遍历长度为len的结构数组stu,输出每个学生的所 有信息。注意对结构数组成员的访问层次,尤其是 成员本身又为数组的学生成绩,需逐一访问。如第 i个学生的第j门课的成绩需表示为:
5、append函数的设计 设计思路: 在学生表中添加新的学生记录。 ① 首先输入要添加的学生学号,在原表中查找该 学号的记录是否已存在。
② 若已存在,则选择是否重新输入新学生记录, 如选择“是”,则返回①;否则结束函数返回 主菜单。若原表中不存在该学号的学生,则继 续输入要添加的学生的姓名和三门课的成绩。
通过代码组织理解文件包含的作用、掌
握多文件操作的方法。 引导学生思考如何对系统功能的进一步 完善和对代码的进一步优化。
学生成绩管理系统
设计要求:
学生信息以数据文件的形式存放在磁盘 中,包括学号、姓名、班级、语文、数 学、英语三门课程的成绩,系统对学生
信息可以进行各种增、删、改、排序及
对文件进行读写等功能。
需求分析 总体设计
详细设计及编码
代码组织---编程抽象
一、需求分析
能从文件中读入学生记录存于计算机中,同时也能将 学生记录保存到磁盘文件;
能按不同方式添加新学生记录;
能对指定的学生记录进行修改、删除; 能按照不同条件查询学生记录 能对学生成绩进行统计并显示统计结果 可对学生表按条件进行排序 可用菜单形式显示系统功能供用户选择,并能从不同 功能操作中返回到菜单
根据前面的基本流程设计出如下的主函数:
void main() { struct student stu[N]; int len; 增强交互 int choice; char ch; len=readfile(stu); //调用读文件函数 cout<<"按任意键继续"<<endl; 清屏,原型包含 getchar(); 在stdlib.h中 while(1) //注意该循环退出的条件 { system("cls"); //清屏函数 menu(); //调用菜单显示函数 cout<<"选择菜单项(0~8):"; cin>>choice; if(choice==0) //选择退出 { cout<<"\n保存到文件吗?"<<endl; cin>>ch; if(ch=='y'||ch=='Y') save(stu,len); cout<<"\n欢迎再次使用,按任意键退出"<<endl; getchar(); break;
易错点的讲解,包括:
•复杂数据结构的访问层次和语句结构 •根据函数功能确定函数参数及返回值类型 •单链表的操作函数中表头指针的变化 •根据文件操作数据类型和文件的有无选取
正确的文件打开方式和文件读写函数。
通过代码的不同组织了解不同层次的抽 象设计思想,包括函数库、接口、类等概 念,进一步区分结构化程序设计过程和面 向对象设计中函数的不同使用方式和意义
void modify(student stu[],int len) 功能:修改长度为len的学生表中指定学号的学生记录
void count(student stu[],int len) 功能:对长度为len的学生表按要求进行统计 void sort(student stu[],int len) 功能:将长度为len的学生表中记录按要求排序 void save(student stu[],int len) 功能:将长度为len的学生表中记录保存到文件
3、数据结构设计 学生成绩信息结构 struct student { char num[8]; char name[20]; int s[3]; //三门课成绩 } 若通过数组实现,则定义 结构数组 struct student stu[N]; N为已定义过的符号常量 若通过单链表实现,则单 链表结点结构定义: struct node { char num[8]; char name[20]; int s[3]; struct node *next; }
int readfile(student stu[]) 功能:将文件中的学生数据读入到学生记录表中,并返 回表中的记录数。 void menu() 功能:显示系统提供的可选菜单项
void main() 整个系统的控制部分。
三、详细设计及编码
1、主函数的设计: 启动程序后,首先从文件中将学生信息读入到 结构数组或链表中,然后进入菜单界面供用户 选择,根据选择项执行相应的操作,直到退出 该管理系统。菜单界面如下:
相关文档
最新文档