c语言实现的日记系统
- 格式:doc
- 大小:126.50 KB
- 文档页数:8
记事本实验报告一、实验目的创建一个Windows窗体应用程序,实现记事本的基本功能,具体包括新建文件、打开文件、保存文件、查找等功能。
该实验的目的是掌握:(一)窗体程序的开发(二)常用控件的使用(三)常用事件的处理(四)对话框的设计和使用(五)文件访问的基本方法二、实验内容(一)主窗口Form1图1 主窗口主窗口界面如图1所示,功能包括基本编辑操作、主菜单和其它快捷键功能。
1、编辑功能用文本框实现。
2、窗口标题与文件名相一致。
未打开文件时为“无标题”,打开文件(另存为)后为文件名。
3、支持菜单的热键和快捷键。
二者的区别是前者是激活菜单且显示出该菜单项时有效,后者在任何时候有效。
4、实现新建、打开、保存和查找功能。
5、支持F3(查找下一个)。
表1 Form1控件列表using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace WindowsFormsApplication1{public partial class Form1 : Form{public Form2 fm2 = null;public string searchText = "";public Form1(){InitializeComponent();}private void saveFile(){if (textBox1.Text.Length > 0 && textBox1.Modified) {if (MessageBox.Show("想保存文件吗?", "记事本",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning) == DialogResult.Yes){SaveFileDialog d = new SaveFileDialog();d.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";if (d.ShowDialog() == DialogResult.OK){FileStream fs = File.OpenWrite(d.FileName);StreamWriter sr = new StreamWriter(fs);sr.Write(textBox1.Text);sr.Flush();fs.Close();}}}}private void文件NToolStripMenuItem_Click(object sender, EventArgs e) {saveFile();textBox1.Text = "";Text = "无标题 - 记事本";}private void OpenFile(){OpenFileDialog d = new OpenFileDialog();d.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";if (d.ShowDialog() == DialogResult.OK){FileStream fs = File.OpenRead(d.FileName);StreamReader sr = new StreamReader(fs);string s;string s1 = "";while ((s = sr.ReadLine()) != null){s1 += s;}textBox1.Text = s1;string fname = d.FileName.Substring(stIndexOf("\\") + 1);Text = fname + " - 记事本";}}private void打开OToolStripMenuItem_Click(object sender, EventArgs e) {saveFile();OpenFile();}private void保存SToolStripMenuItem_Click(object sender, EventArgs e) {saveFile();}private void查找FToolStripMenuItem_Click(object sender, EventArgs e) {if (fm2 == null){fm2 = new Form2();fm2.fm1 = this;Form2.textBox2 = textBox1;fm2.Show();}elsefm2.Activate();}private void textBox1_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.A && e.Control && !e.Shift && !e.Alt){textBox1.SelectAll();e.Handled = true;}else if (e.KeyCode == Keys.F3 && !e.Control && !e.Shift && !e.Alt) {Form2.findNext();}}}}(二)查找对话框图2 查找对话框查找对话框的界面(图2)与记事本的相同。
C语言课设实验报告[记事本程序]班级:学号:姓名:指导老师:C语言课设实验报告#define key_down 80#define key_up 72#define key_esc 1#define key_alt_f 33#define key_alt_x 45#define key_enter 28#define key_alt_e 18int get_key();void box(int startx,int stary,int high,int width);{int i,key,x,y,l;char *w=NULL,*d=NULL,*s=NULL;FILE *fp;char *menu[]={ "File ", "Edit ","Format","View","Help"};char *red[]={ "F", "E","F","V","H"};char *f[]={ "New ", "Open" , "Save", "Another","Quit alt_x"};char *e[]={"Search","Search next","Replace","Date"};char buf[16*10*2],buf1[16*2];textbackground(3);clrscr();window(1,1,80,1);textbackground(WHITE);textcolor(BLUE);clrscr();window(1,1,80,2);for(i=0, l=0; i <5;i++){x=wherex();y=wherey();textcolor(BLACK);cprintf( " %s ",menu[i]);l=strlen(menu[i]);gotoxy(x,y); x.y等的头文件*//*功能键的扫描码的定义*//* i为循环次数的序数,key为从键盘输入的功能键,x,y 为光标的坐标,l为菜单栏中菜单的字符长度*//*w是存放输入的内容(记录的事情)的指针,*s是存放输入的文件名的指针,*d是存放输入要定时的文件的文件名的指针*/ /*菜单栏中各个菜单的定义*//*菜单栏中菜单开头要标颜色的字母的定义*//* file 子菜单中项目的定义*//*edit子菜单的定义*/ /*缓冲区的定义*//*整个大窗口的背景颜色设置*//*创建菜单栏窗口*/ /*设置菜单栏窗口背景颜色为白色,字体颜色为蓝色*//*利用循环输出menu菜单栏,有多少个菜单循环多少次。
/**************日记管理系统的开发**************/ #include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define M 50#define N 20#define NUM 1000//日记结构体的定义typedef struct node1{char date[N];//日期char title[M];//标题char keyword[N];//关键字char meat[NUM];//内容int trag;struct node1 *next1;}Dairy;//用户结构体typedef struct node2{char name[20];char password[10];Dairy *dairy_list;struct node2 *next2;}User;int Create_User(User *U);Dairy *Init_Dairy(Dairy *D);User *Init_User(User *U);char Is_SameUser(User *U,char name[]);int Check_Password(char password[]);User *Find_USer(User *U,char name[]);User *Choose_User(User *U);User *Login_User(User *U);int Open_Dairy(Dairy *D);int Operate_Dairy(Dairy *D);int Write_Diary(Dairy *D);int Dairy_List(Dairy *D);Dairy *Search_Diary(Dairy *D);void *Save_Dairy(Dairy *D);Dairy *Search_Dairy(Dairy *D);//创建用户链表int Create_User(User *U){char password[10];User *p,*q;Dairy *D=NULL;D=Init_Dairy(D);q=(User *)malloc(sizeof(User));p=(User *)malloc(sizeof(User));if(p==NULL){printf("创建用户失败!");return 0;}printf("\n请输入用户名:");scanf("%s",&p->name);if(Is_SameUser(U,p->name)==NULL){do{printf("\n请输入密码:");Check_Password(p->password);printf("\n请确认密码:");Check_Password(password);if(strcmp(p->password,password)!=0)printf("\n密码确认错误!请重新输入:\n");}while(strcmp(p->password,password)!=0);q->dairy_list=D;q->next2=U->next2;U->next2=q;printf("\n\t用户创建成功!......\n");return 1;}else{printf("该用户已存在!请重新创建...\n");return 0;}}//初始化日记表Dairy *Init_Dairy(Dairy *D){D=(Dairy *)malloc(sizeof(Dairy));if(D!= NULL){D->next1=NULL;return D;}else return 0;}//初始化用户表User *Init_User(User *U){U=(User *)malloc(sizeof(User));if(U!= NULL){U->next2=NULL;return U;}elsereturn 0;}//检查用户是否存在char Is_SameUser(User *U,char name[]){User *q=U->next2;while(q!=NULL){if(strcmp(name,q->name)==0) return 1;q=q->next2;}return 0;}//登录用户密码int Check_Password(char password[]){char password1[10];int i=0;while((password1[i]=getch())!='#'){password[i]=password1[i];password1[i]='*';printf("%c",password1[i]);i++;}password[i]='\0';rewind(stdin);return 1;}//查找用户User *Find_User(User *U,char name[]){User *p,*q;p=U->next2;while(p==NULL && strcmp(p->name,name)!=0){p=p->next2;}if(p==NULL){return p;}elsereturn 1;}//用户选择User *Choose_User(User *U){int choose;printf("\t|^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t| 1.用户登录|\n");printf("\t| 2.新建用户|\n");printf("\t|^^^^^^^^^^^^^^^^^^^^^^^^^|\n");do{printf("\t请输入你的选择:");scanf("%d",&choose);}while(choose<1 && choose>2);if(choose==1)Login_User(U);elseCreate_User(U);}//用户登录User *Login_User(User *U){User *p,*q;printf("\n\t默认用户:admin 密码:123456 \n");p=(User *)malloc(sizeof(User));q=(User *)malloc(sizeof(User));printf("请输入用户名:");scanf("%s",&p->name);q=Find_User(U,p->name);if(q==NULL){printf("该用户名不存在!\n");getch();return 0;}else{printf("请输入密码:");Check_Password(p->password);printf("\n\t默认用户:admin 密码:11111111456 \n");if(strcmp(q->password,p->password)==0){ printf("\n\t默认用户:admin 密码:1233333333333456 \n");printf("登陆成功!!!任意键继续....");getch();Operate_Dairy(p->dairy_list);}elseprintf("密码错误!");getch();}return 0;}//打开日记int Open_Dairy(Dairy *D){printf("\n日记标题:%s",D->title);printf("\n日记关键字:%s",D->keyword);printf("\n日记日期:%s",D->date);printf("\n日记内容:\n\t%s",D->meat);return 1;}//选择日记的操作int Operate_Dairy(Dairy *D){int choose;printf("\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t| 1.写日记 3.查阅|\n");printf("\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");do{printf("\t请输入你的选择:");scanf("%d",&choose);}while(choose<1 && choose>3);if(choose==1)Write_Dairy(D);elseSearch_Dairy(D);return 1;}//写日记int Write_Dairy(Dairy *D){int choose;Dairy *p=NULL;p=(Dairy *)malloc(sizeof(Dairy));printf("请输入日期(2012.4.20):");scanf("%s",&p->date);printf("请输入标题:");scanf("%s",&p->title);printf("请写日记内容:\n");scanf("\t%s",&p->meat);printf("请设置关键字::");scanf("%s",&p->keyword);p->trag=0;p->next1=D->next1;D->next1=p;printf("\t是否要以文件方式保存日记?--->Y-是N--否\t");do{printf("请输入你的选择:");scanf("%d",&choose);}while(choose=='Y'||choose=='N');if(choose=='Y')Save_Dairy(p);return 1;}//保存void *Save_Dairy(Dairy *D){FILE *fp;Dairy *p;p=D->next1;if((fp=fopen("Dairy_text.txt","w"))==NULL){printf("File open error!\n");exit(0);}fprintf(fp,"\t日期: %s\n",D->date);fprintf(fp,"\t标题: %s\n",D->title);fprintf(fp,"\t关键字: %s\n",D->keyword);fprintf(fp,"\t正文:%s\n",D->meat);fclose(fp);printf("文件以保存!任意键继续...\n");getch();}//按顺序查阅日记Dairy *Search_Dairy(Dairy *D){int choose, count=0;Dairy *D1=D;printf("日记列表如下:\n");Dairy_List(D1);printf("日记主要内容:\n");while(D1!=NULL){Open_Dairy(D1);printf("\n-------------------------------------------------\n");D1=D1->next1;}return 0;}//显示日记列表int Dairy_List(Dairy *D){int count=0;Dairy *D1=D;if(D1->next1==NULL)printf("\n\t没有日记信息!\n");else{ while(D1->next1!=NULL){D1=D1->next1;if(D1->trag==0){count++;printf("\t第%d篇--->>时间:%s 日记标题:%s \t关键字:%s\n",count,D1->date,D1->title,D1->keyword);}}}return count;}//主函数int main(){char x;Dairy *D;User *U;D=Init_Dairy(D);U=Init_User(U);printf("任意键进入菜单,ESC退出...");scanf("%c",&x);while(x!='1B'){Choose_User(U);}return 0;}。
C语言课程设计日程管理系统一、教学目标本课程的目标是让学生掌握C语言编程的基本技能,通过构建日程管理系统,培养学生的实际编程能力和解决问题的能力。
具体目标如下:1.知识目标:使学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。
2.技能目标:培养学生具备运用C语言进行程序设计的能力,能够独立完成日程管理系统的开发。
3.情感态度价值观目标:培养学生对编程学科的兴趣,提高学生独立思考和解决问题的能力,培养学生的创新精神。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等。
具体安排如下:1.C语言基本语法和数据类型:介绍C语言的基本语法规则,包括变量声明、数据类型、运算符等。
2.控制结构:讲解顺序结构、选择结构、循环结构的使用方法,并通过实例让学生熟练掌握。
3.函数:讲解函数的定义、声明、调用和返回值,培养学生编写和调用函数的能力。
4.指针和数组:介绍指针的概念和用法,讲解数组的声明、初始化和操作方法。
5.字符串:讲解字符串的基本操作,如字符串的创建、复制、连接和比较等。
6.文件操作:介绍文件的概念、文件指针的使用以及文件的读写操作。
7.日程管理系统的设计与实现:引导学生运用所学知识,分阶段完成日程管理系统的开发,培养学生的实际编程能力。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法,具体安排如下:1.讲授法:教师讲解C语言的基本语法、数据类型、运算符、控制结构、函数等知识,系统地传授给学生。
2.案例分析法:通过分析实际案例,让学生了解和掌握C语言在实际编程中的应用,提高学生的编程能力。
3.实验法:安排实验课程,让学生亲自动手编写代码,实现日程管理系统,培养学生的实际编程能力。
四、教学资源本课程所需的教学资源包括教材、参考书、多媒体资料和实验设备等,具体安排如下:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.参考书:推荐一些经典的C语言编程书籍,供学生课后自学和参考。
C++实现简易log日志系统1.log日志的作用在软件开发周期中,不管是前台还是后台,系统一般会采用一个持久化的日志系统来记录运行情况。
在代码中嵌入log代码信息,主要记录下列信息:(1)记录系统运行异常信息。
(2)记录系统运行状态信息。
(3)记录系统运行性能指标。
通过对上述信息分析和诊断,我们能采取正确的手段来提高系统质量和系统性能。
由此可见log日志在系统中的重要地位和存在的必要性。
2.log日志的类型与级别2.1日志的类型主要分三大类:安全类信息:记录系统边界交互行为和信息;业务类信息:记录系统内部业务处理行为和信息;性能类信息:记录系统硬件对业务处理的支撑能力。
2.2日志的类型一般分五级:ERROR(错误):此信息输出后,主体系统核心模块不能正常工作,需要修复才能正常工作。
WARN(警告):此信息输出后,系统一般模块存在问题,不影响系统运行。
INFO(通知):此信息输出后,主要是记录系统运行状态等关联信息。
DEBUG(调试):最细粒度的输出,除却上面各种情况后,你希望输出的相关信息,都可以在这里输出。
TRACE(跟踪):最细粒度的输出,除却上面各种情况后,你希望输出的相关信息,都可以在这里输出。
在本文实现的简单日志系统中不包括DEBUG和TRACE。
DEBUG在编码过程中进行,TRACE不太需要。
2.3常见的开源log工具C/C++实现的开源log常见有:C++版的log4j 的log4cplus、快速的C++ 日志库——spdlog、纯C日志函数库——zlog、C++日志框架——Google Glog等。
其中开源log工具log4cplus在项目中的使用较为常见,具体用法和源码请参考网络的资源,不再赘述。
3.自实现log工具主要针对ERROR(错误)、WARN(警告)和INFO(通知)这三种日志类型实现了如下的C++简易log工具。
由源文件(logger.cpp)和头文件(logger.h)组成。
用C语言编写简单程序实验日志指导教师:实验时间:学院:专业:班级:学号:姓名:实验室:实验题目:用C语言编写简单简单程序1,基本数据处理2,计算分段函数实验目的:2.1>基本数据处理1,掌握算术表达式和赋值表达式的使用。
2,掌握基本输出函数的使用。
3,能够编程实现简单的数据处理。
1,掌握简单C程序的查错方法。
2.2>计算分段函数1,使用if语句计算分段函数。
2,正确书写关系表达式。
3,掌握基本输入函数的使用,能正确调用C语言提供的数学库函数。
4,掌握简单的单步调试方法。
实验要求:1,掌握算术表达式和赋值表达式的使用。
2,掌握基本输出函数的使用。
3,能够编程实现简单的数据处理。
4,掌握简单C程序的查错方法。
5,使用if语句计算分段函数。
6,正确书写关系表达式。
7,掌握基本输入函数的使用,能正确调用C语言提供的数学库函数。
8,掌握简单的单步调试方法。
实验主要步骤:1,按照实验内容中的调试示例进行实验,根据实验题目要求,查看实验题目提供的错误程序,再按照题后的错误分析,了解该段程序的错误的地方,按照错误分析一点点的改过来,重新编程。
2,根据老师在课堂上讲的知识和调试示例所示的我们容易出现的错误,再通过下面的编程题来进行实践的上机实验。
3,在下面的具体的编程题中,根据各题目的具体要求进行编程,同时根据题后的说明进行对所编程的程序正误进行判断与修改。
4,对于改错题的要求:将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。
实验结果:1,根据实验要求,分别对各编程题进行了编程与程序的运行。
2,改错题的源程序是:#include<stdio.h>int main(void){int y;y=x*x;printf("%d=%d*%d",x);printf("d*%d=%d",y);return 0;}运行结果是显示存在错误,然后改后的程序是:#include<stdio.h>int main(void){int y,x;scanf("%d",&x);y=x*x;printf("%d=%d*%d\n",y,x,x);printf("%d*%d=%d\n",x,x,y);return 0;}此时程序正确运行,并显示出题目所要的形式。
分享⼀个⽇志系统源码(C语⾔)代码路径: 这是⼀个简单、⾼效和轻量级C语⾔写的的⽇志系统,linux下不需要第三⽅库安装。
⽬前主要是在linux下编写和测试,通⽤分⽀()为⼀个基于Apache的(⼀个C语⾔跨平台的开源库)编写的跨平台版本,由于精⼒有限只基于最简单的⽇志打印功能进⾏了改写,仅供参考。
⽇志系统⽀持多线程多句柄、印级别控制、IO缓存设置、备份控制、⽇志⽂件⼤⼩控制、异常退出堆栈打印、加密(AES-128)、压缩(lz4)和散列校验(MD5)。
所有配置和接⼝都在log.h内。
堆栈打印是接收所有异常退出信号时打印堆栈,输出⽂件名通过TRACE_PRINT_PATH宏控制,在其信号处理时还对所有⽇志句柄进⾏刷新处理,减少⽇志丢失可能。
下⾯介绍下接⼝使⽤:⽇志创建: //log_filename:输出⽂件名。
//max_file_size:每个⽂件最⼤上限。
//max_file_bak:最⼤备份⽂件数量,备份⽂件名为输出⽂件名末尾+备份序号,如有其它需要可⾃⾏修改。
//max_iobuf_size:IO缓存⼤⼩,可以设为0⽆缓存。
//cflag:三个宏选项,NORMALIZE, ENCRYPT, COMPRESS 或者 ENCRYPT|COMPRESS,分别对应正常,只加密/压缩,加密和压缩。
//password:密码,在cflag有设ENCRYPT时⽣效。
//返回为⼀个log句柄,可以创建多个,数量最⼤值由MAX_HANDLE_NUM宏控制。
log_t* log_create(const char *log_filename, size_t max_file_size, size_t max_file_bak, size_t max_iobuf_size, int cflag, const char *password);刷新和销毁为: //刷新是将IO缓存内数据刷新到⽂件内,lh为创建返回的句柄指针。
c语言日程管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在日程管理系统中的应用和重要性。
2. 学生掌握结构体、数组、文件操作等C语言基础知识点,并能将其应用于日程管理系统的设计。
3. 学生能运用所学知识实现日程的添加、删除、查询和修改功能。
技能目标:1. 学生掌握使用C语言进行程序设计的基本方法,具备独立编写日程管理系统代码的能力。
2. 学生能够运用调试工具对程序进行调试和优化,提高程序执行效率。
3. 学生通过课程学习,培养解决问题的能力和团队协作能力。
情感态度价值观目标:1. 学生对C语言编程产生兴趣,增强学习动力,形成积极的学习态度。
2. 学生在课程学习过程中,培养耐心、细致的良好编程习惯。
3. 学生通过团队协作,学会分享和交流,培养合作精神。
课程性质:本课程为C语言程序设计实践课,注重理论与实践相结合,强调学生动手实践能力的培养。
学生特点:学生具备一定的C语言基础,对编程感兴趣,但实践经验不足,需通过课程学习提高实践能力。
教学要求:教师应注重启发式教学,引导学生主动思考,培养学生解决问题的能力。
同时,关注学生的个体差异,提供针对性的指导,确保课程目标的实现。
通过课程学习,使学生能够将所学知识应用于实际项目中,达到学以致用的目的。
二、教学内容1. C语言基础回顾:结构体、数组、文件操作等基础知识点的复习和巩固。
相关教材章节:第二章 结构体和联合、第三章 数组、第四章 文件操作。
2. 日程管理系统功能设计:- 日程添加:学习如何使用C语言实现输入、存储日程信息。
- 日程删除:学习如何实现删除指定日程信息的功能。
- 日程查询:学习如何实现查询指定日期或事件的日程信息。
- 日程修改:学习如何实现修改已存在的日程信息。
相关教材章节:第五章 函数、第六章 指针、第七章 结构体与文件。
3. 程序调试与优化:教授学生如何使用调试工具,对程序进行调试和优化,提高程序执行效率。
相关教材章节:第十章 程序调试与优化。
C语言技术中的日志记录方法与工具推荐在软件开发中,日志记录是一项非常重要的技术,它可以帮助开发人员追踪和调试程序的运行过程,以及记录关键信息和错误日志。
对于C语言技术而言,日志记录同样具有重要性。
本文将介绍C语言中的日志记录方法以及一些工具的推荐。
一、日志记录方法1. printf语句最简单的日志记录方法就是使用printf语句将关键信息输出到控制台。
这种方法简单直接,适用于小规模的项目或者调试阶段。
但是,它的缺点是无法自动记录时间戳、无法保存到文件中,且不便于管理和过滤。
2. 文件输出为了解决printf语句的缺点,我们可以将日志信息输出到文件中。
通过使用标准库函数fopen、fprintf和fclose,我们可以将信息写入到指定的文件中。
这种方法可以记录时间戳,且方便管理和过滤。
但是,需要注意的是,频繁的文件操作可能会对性能产生一定的影响。
3. 宏定义宏定义是一种更加高效的日志记录方法。
通过定义一些宏,我们可以在代码中插入日志语句,并且可以根据需要灵活地开启或关闭日志记录。
例如,我们可以定义一个宏LOG,用于输出日志信息。
在发布版本中,我们可以将这些宏定义为空,从而避免日志记录对性能的影响。
二、日志记录工具推荐1. log4clog4c是一个开源的C语言日志记录工具,它提供了丰富的功能和灵活的配置选项。
使用log4c,我们可以将日志信息输出到控制台、文件、网络等不同的目标中,并且可以按照不同的级别进行过滤和管理。
log4c还支持多线程环境下的日志记录,可以满足大部分项目的需求。
2. syslogsyslog是一个标准的日志记录系统,可以在大多数Unix-like系统中使用。
它提供了一个守护进程,负责接收和处理日志信息,并且可以将日志信息输出到指定的文件中。
syslog还支持日志的远程传输和集中管理,适用于分布式系统和大规模项目。
3. GlogGlog是Google开发的一个C++日志记录库,但它同样适用于C语言。
福建工程学院计算机与信息科学系实验报告
Break;
Case3:按写日记的顺序查阅;
Break;
}while(choice!=’0’);
}
6.修改密码
(4)程序界面
1.主界面
2用户登录界面:
3.查阅日记界面:
调试过程记录
实验结果记录以及与预期结果比较以及分析1.新用户注册:
2.用户登录:
用户存在时:
当用户不存在时:
2.写日记:
3.查阅日记:
1.按日期查阅日记:
2.按关键字查阅:
3.按写日记的顺序查阅:
分析:经程序运行的结果看,实际的结果与预期的一样.所以该程序基本上没问题.
总结以及心得体会
指导老师评阅意见
指导老师:年月日。