C#实训报告

时间:2024.4.8

+

 《面向对象程序设计(C#)》

实训报告

           

(2011/20##学年第二学期)

系    别:

  班    级: 1

  姓    名:   

 学    号:

指导教师:

设计时间:1周(2012.6.4--2012.6.8)

二〇##年六月四日

  实训项目:学生信息管理系统

一、实训目的

1、掌握VS.NET 2008集成开发环境;

2、并通过VS.NET 20## 来开发控制台应用程序和Windows应用程序,掌握解决实际应用问题的思路、方法和步骤;

3、Visual Studio .NET调试方法和技巧;

4、体会软件开发的流程和规范,熟悉常用开发工具;

5、培养学员团队开发和协同工作的能力,熟悉团队成员的角色分工及沟通;

6、强化与巩固《C#程序设计》所学习的课程知识内容;加强单元测试与联调;

7、激发学生的创造性,培养学生的团队精神。

二、实训要求

1.要求学生在实训期间,做好实训日记、以及实训所得资料、内容的整理工作。实训结束时,写民实训报告并有实训作品。实训报告内容详略得当。

2.实训结束前,需要提交实训的最终作品,指导老师对所有学生提交的作品进行审核并组织学生答辩,当场给出设计成绩。

3.实训要在机房中计算机上完成整个程序的调试,通过实训,应使学生达到以下要求:

² 熟悉.Net的开发环境。

² 掌握C#中的数据类型、变量、常量、表达式和运算符;

² 掌握C#中顺序结构、选择结构、循环结构的编写,语句的实现。使学生养成良好的编程习惯。培养分析、解决问题的能力。

² 掌握可用对象、数组对象、类以及方法,能够对异常进行正确处理和排错。

三、试验性质

    自主设计实验

四、实训内容

主要是通过所学的相关类的知识编写一个《学生成绩管理》的控制台应用程序;所要实现的功能均模拟数据库的增删改查操作,以下为具体功能:

²  将学生成绩保存在文本文件中,所有的功能均针对文本文件进行操作;

²  实现添加学生基本信息及对应的成绩的功能;

²  实现删除学生信息的功能,其中又分为:按学生姓名删除,按学生学号删除;

²  实现修改学生相关信息的功能,其中分为:按学生姓名修改,按学生学号修改;

²  实现查询功能,其中分为:按学生学号进行查询,按学生姓名进行查询。

五、实训步骤

(1)新建一个 “Windows”控制台应用程序项目,将程序文件的名称更改为“xsgl.cs”。

(2)设计程序,显示登录提示信息“请输入命令”界面,参考界面如下,输入“1”命令,会显示帮助信息,用户输入相应的命令,可以执行不同的操作。

(3)输入“2”命令,要求用输入登录“用户名”及“密码”,验证成功后,才可以执行相关的查找,插入和删除操作。登录错误,要显示相关的错误信息。

如下图:

(4) 输入“3”命令,进行添加学生信息,按要求输入,显示“信息添加成功!”,出错,要显示相关的错误信息。如下图:

(5) 输入“4”命令,进行删除学生信息,按要求输入,显示“信息删除成功!”,出错,要显示相关的错误信息。如下图:

(6) 输入“5”命令,进行查询学生信息,按要求输入,显示所查询的信息,

(7) 输入“0”命令,将退出程序。

(8) 各模块功能实现源代码:

1、   主函数

        static void Main(string[] args)

        {           

            Do_sth .Dohelp ();

            int x = int.Parse(Do_sth.Input(">请输入命令(0-5)"));           

            while (x != 0)

            {

                if (x == 1)

                {   Do_sth.Dohelp();   }

                if (x == 2)

                {   Do_sth.Login();    }

                if (x == 3)

                {   Do_sth.Add();      }

                if (x == 4)

                {   Do_sth.Delete();   }

                if (x == 5)

                {   Do_sth.Select();   }

                x = int.Parse(Do_sth.Input(">请输入命令(0-5)"));              

            }           

             Console.ReadLine();

        }

2、   “help” 显示帮助

public static void Dohelp()

        {

            Console.WriteLine("——学生管理系统——");

            Console.WriteLine("   1.help:显示帮助");

            Console.WriteLine("   2.login:登录系统");           

            Console.WriteLine("   3.add:添加学生信息");

            Console.WriteLine("   4.delete:删除学生信息");

            Console.WriteLine("   5.select:查找学生信息");

            Console.WriteLine("   0.exit:退出\n");

          }

3、   “login” 登陆系统

         public static void Login()

        {

            Console.WriteLine("请输入登录信息");

            Console.Write(">");

            try

            {  

string uName = Do_sth.Input("请输入用户名");

                string uPass = Do_sth.Input("请输入密码");

                string admInfo="";

                FileStream fs = new FileStream("D:/zxh.txt", FileMode.Open, FileAccess.Read);

                StreamReader sr = new StreamReader(fs,Encoding .Default );

                admInfo = sr.ReadLine();

                sr.Close();

                fs.Close();

                string[] admAry = admInfo.Split(',');

                if ((admAry[0] == uName) && (admAry[1] == uPass))

                {

                    Console.WriteLine("  登录成功!");                    

                    return;

                }

            }

            catch (Exception ex)

            {

                string StuInfo = Do_sth.Input("出错" + ex.ToString());

            }

        }

4、   “add” 添加信息

         public static void Add()

        {

            string StuInfo =Do_sth .Input ("请输入学生信息:学号,姓名,成绩");

            try

            {  

FileInfo fi = new FileInfo("D:/zxh.txt");

                using (StreamWriter sw = fi.AppendText())

                {

                    sw.WriteLine(StuInfo );

                    sw.Flush();

                    sw.Close();

                }

                Console.WriteLine("  信息添加成功!");

            }

            catch (Exception ex)

            {

                Console.WriteLine("信息添加失败" + ex.ToString());

            }

        }

5、   “delete” 删除信息

        public static void Delete()

        {

            string StuId = Do_sth.Input("请输入要删除的学生学号");           

            List <string > StuList=new List<string> ();

            try

            {  

string admInfo = "";

                FileStream fs = new FileStream("D:/zxh.txt", FileMode.Open, FileAccess.Read);

                StreamReader sr = new StreamReader(fs, Encoding.Default);

                admInfo =sr.ReadLine ();

               

                while  (admInfo !=null &&admInfo !="")

                {

                    string[] admAry = admInfo.Split(',');

                    if (admAry [0]!=StuId )

                    {

                        StuList .Add (admInfo );

                    }

                    admInfo =sr.ReadLine ();

                }

                sr.Close ();

                fs.Close ();

                FileStream fs2 = new FileStream("D:/zxh.txt", FileMode.Create, FileAccess.Write);

                using (StreamWriter sw = new StreamWriter(fs2, Encoding.Default))

                {

                    foreach (string Stu in StuList)

                    {

                        sw.WriteLine(Stu );

                    }

                    sw.Flush();

                    sw.Close();

                }

                fs2.Close();

                Console.WriteLine("  信息删除成功!");

                }

                catch (Exception ex)

               {

                   Console.WriteLine("出错" + ex.ToString());

                }

        }        

6、   “select” 查找信息

       public static void Select()

        {

            string StuCh = Do_sth.Input("请输入要查询的学生学号");

            List<string> StuList = new List<string>();

            string admInfo = "";

            FileStream fs = new FileStream("D:/zxh.txt", FileMode.Open, FileAccess.Read);

            StreamReader sr = new StreamReader(fs, Encoding.Default);

            admInfo = sr.ReadLine();

            while (admInfo != null && admInfo != "")

            {

                string[] admAry = admInfo.Split(',');

                if (admAry[0] == StuCh)

                {

                    StuList.Add(admInfo);

                }

                admInfo = sr.ReadLine();

            }

            sr.Close();

            fs.Close();

            foreach (string Stu in StuList)

            {

                Console.WriteLine(Stu );

            }

        }

六、实训总结

   通过一周的实训,让我意识到,虽然C#以已经学了一学期,但是到了真正写代码的时候,我对以前所学的知识还是有些陌生,不知道该从哪着手。这次实训在老师的指导和同学的帮助下,我终于完成了程序的编写与运行。

当然在编写过程中并不是一帆风顺的,总是会遇到这样那样的问题。比如说:最基本的有漏写;或};会把变量的定义给漏掉等。在这次实训中,我试着总结出C#程序编码步骤:

(1) 确定目的;

(2) 确定范围;

(3) 规范内容;

(4) 编写程序;

(5) 编译运行;

这次实训不仅让我对以前所学知识有了一个更深的了解,更重要的是锻炼了我的动手能力,也让我们把所学的知识转化到实际应用当中。


第二篇:c程序实训报告


C语言程序设计

               实训报告

课题:图书管理系统

          院系:电子工程系

学生:张翰

          学号:1052100606

          指导老师:黄建灯

          日期:20##-7-5

桂林电子科技大学信息科技学院

图书管理系统

摘要:设计图书管理系统,通过分别定义两个数据体来存储书籍和借书卡信息,并建立他们的联系以达到结束和还书的目的,通过main函数来实现各个功能模块的调用。在设计过程中感到了自己的严重不足,需要进一步的努力!

关键词:图书 借书卡 数据体 函数 模块

一,课题解析

我所选择的课题是图书管理系统,这个课题要求我们用C语言设计一个界面友好,功能完善,实用性强的系统。而一个实用的图书管理系统,应当包含有以下功能:

(1),从借阅者的角度出发,应当要实现查找书籍、借阅书籍、归还书籍这些基本功能,为方便借阅者查找,还应当提供按书名或者作者名的多种查找方式。

(2),从管理者的角度出发,应当能对图书库进行编辑,包括添加书籍(书名、作者、编号、出版社等)、删除书籍、统计书籍总数的功能,同时,也要对借书卡进行管理,包括添加新的借书卡和删除旧的借书卡。

二.框架结构

程序运行的主界面:

管理系统界面:

三.程序的实现

1.结构体的定义

(1).书籍的结构体

struct book//定义书的结构体

{ char  bookname[30];

  char  booknum[15];

  char  writer[10];

  char  publisher[20];

  int  kucun;

} A[500];

int num=0;

在这个数组里定义了书的五个变量,包括书名,编号,作者,出版社以及库存。

(2).借书卡的结构体

struct card//定义借书卡的结构体

{char cardname[16];

 char cardnum[11];

 char booknum1[15];

}B[200];

int num1=0;

这里定义的借书卡有三个变量,持卡人姓名,卡号,以及此卡所借书籍的编号。

2.各个功能模块

(1)查找图书模块:分别设计了两个查找函数,函数1通过书籍的名字查找,函数2通过书籍作者查找,比较方便使用。

void  findbook()//查找图书函数1

{ int i;

  char  str[30];

  getchar();

  printf("请输入您要查找的书名:\n");

  gets(str);

  for(i=0;i<num;i++)

          if( strcmp(str,A[i].bookname)==0)

{ printf("书名:%s  编号:%s   作者:%s   出版社:%s 库存:%d \n\n",A[i].bookname,A[i].booknum,A[i].writer,A[i].publisher,A[i].kucun);

             break;

          }

     if(i>=num)  printf("您所查找的图书不存在!\n");

}

void findbook1()//查找图书函数2

{ int i;

char str[10];

getchar();

printf("请输入您要查找的作者名:\n");

gets(str);

for(i=0;i<num;i++)

   if( strcmp(str,A[i].writer)==0)

   {printf("书名: %s  编号: %s 作者:%s 出版社:%s 库存:%d \n\n",A[i].bookname,A[i].booknum,A[i].writer,A[i].publisher,A[i].kucun);

       break;

   }

   if(i>=num)  printf("您所查找的图书不存在!\n\n");

}

(2).借阅图书模块

   这个模块实现的是借书的功能,首先运用查找功能找到想要借阅的图书,然后查找到自己的借书卡,通过下标关联到一起,书的变量库存减1,借书卡一个变量赋值为该书的编号,从而达到借书目的。

void lendbook()//借书函数

{

  int i,j,s=0,s1=0;

  char bn[11],sn[15],c;

  do{

  printf("输入要借的书的编号:");

  scanf("%s",bn);

  for(i=0;i<num;i++)

  {

         if(strcmp(bn,A[i].booknum)==0) {s=1;break;}

  }

  if(s==0) {printf("未找到该书!");continue;}

  printf("请输入借阅者的卡号:");

  scanf("%s",sn);

  for(j=0;j<num1;j++)

  {

         if(strcmp(sn,B[j].cardnum)==0) {s1=1;break;}

  }

  if(s1==0) {printf("未找到该卡!\n");continue;}

  else {

       A[i].kucun=A[i].kucun-1;

    strcpy(B[j].booknum1,A[i].booknum);

  }

  printf("借阅成功,是否继续(Y/N)?\n");

  getch();

  scanf("%c",&c);

  }while(c=='y'||c=='Y');

}

(3).还书模块

还书功能的实现与借书类似,把该书的库存+1,同时对应的借书卡的变量值归零。

void huanbook()//还书函数

{

  int i,j,s=0,s1=0;

  char bn[11],sn[15],c;

  do{

  printf("输入要还书的编号:");

  scanf("%s",bn);

  for(i=0;i<num;i++)

  {

         if(strcmp(bn,A[i].booknum)==0) {s=1;break;}

  }

  if(s==0) {printf("未找到该书!");continue;}

  printf("请输入您的卡号:");

  scanf("%s",sn);

  for(j=0;j<num1;j++)

  {

         if(strcmp(sn,B[j].cardnum)==0) {s1=1;break;}

  }

  if(s1==0) {printf("未找到该卡!");continue;}

  else {

       A[i].kucun=A[i].kucun+1;

    B[j].booknum1==0;

  }

  printf("还书成功,是否继续(Y/N)?\n");

  getch();

  scanf("%c",&c);

  }while(c=='y'||c=='Y');

}

(4).删除模块

运用查找功能找到想要删除的图书,赋值为0,书籍的数据体总数-1,查找时直接跳过。

void delbook()//删书函数

{int n,i,m;

char str[30];

printf("请输入您想删除的旧书的名字:\n");

getchar();

gets(str);

for(i=0;i<num;i++)

{

   if(strcmp(str,A[i].bookname)==0)

   {

        for(n=i;n<num;n++)

A[i]=A[i+1];

num--;

m=1;

printf("删除成功!\n");break;

   }

}

if(m==0) printf("没有这本书!\n");

}

(5).借书卡管理函数

这个函数实现了借书卡的增加和借书卡的删除功能,只有当数据体里面存在着相应的借书卡的时候,借书才能成功完成,否侧借书函数内会有出错提示。

void mcard()//卡管理函数

{int n,i,m,j;

char str[16];

char sn[11];

  while(4)

  {printf("========欢迎进入借书卡管理系统==========\n\n");

  printf("1.增加借书卡号\n");

  printf("2.删除借书卡号\n");

  printf("0.返回\n\n");

  printf("您的选择:");

  scanf("%d",&n);

  switch(n)

 {

 case 1:printf("请输入增加卡的数量:\n");

 scanf("%d",&m);

 num1=m;

 printf("输入您的借书卡信息(姓名,卡号)\n");

 for(i=0;i<m;i++)

 scanf("%s%s",B[i].cardname,B[i].cardnum);

 printf("新卡创建成功!\n");

 break;

 case 2:printf("请输入您要删除的旧卡姓名:\n");

 getchar();

gets(str);

for(i=0;i<num1;i++)

{

   if(strcmp(str,B[i].cardname)==0)

   {

        for(n=i;n<num1;n++)

B[i]=B[i+1];

num1--;

m=1;

printf("删除成功!\n");break;

   }

}

if(m==0) printf("没有这张卡!\n");break;

  }

  if(n==0) break;

  }

}

3.主函数

 在主函数中,用了三个while循环语句,通过switch来选择相应的功能模块。

void main()

 {  int ch1,ch2,ch3;

   while(1)

   {

        printf("================欢迎进入尧山图书馆==============\n\n");

        printf("\t\t1. 查找书籍\n\n");

        printf("\t\t2. 借阅书籍\n\n");

        printf("\t\t3. 归还书籍\n\n");

        printf("\t\t4. 管理系统\n\n");

        printf("\t\t0. 退出系统\n\n");

        printf("===========书籍是人类进步的阶梯----高尔基========\n");

        printf("请选择您的操作类型(0-4):\n");

     scanf("%d",&ch1);

        switch(ch1)

        {

        case  1:   while(2)

                            {getchar();

                                   printf("请选择您的查找方式:\n\n");

                                   printf("1.按书名查找\n\n");

                                   printf("2.按作者查找\n\n");

                                   printf("0.返回\n\n");

                 printf("请输入0-2\n");

                                   scanf("%d",&ch2);

                                   switch(ch2)

                                   {

                                   case 1:findbook();break;

                                   case 2:findbook1();break;

                                   case 0:main();break;

                                   default:printf("无此操作\n");break;

                            }

                     }

        case  2:   lendbook();break;

        case  3:   huanbook();break;

     case  4:  

               while(3)

       {

printf("==============欢迎进入图书管理系统==============\n\n");

printf("1.增加图书\n");

printf("2.删除图书\n");

printf("3.书籍统计\n");

printf("4.借书卡管理\n");

                                   printf("0.返回\n");

                                   printf("请输入0-4:\n");

                                   scanf("%d",&ch3);

                                   switch(ch3)

                                   {

                                   case 1:addbook();break;

                                   case 2:delbook();break;

                 case 3:printf("当前图书馆共有%d本藏书\n",num);break;                                         case 4:mcard();break;

                                   }if(ch3==0) break;

                      }

                      }

       if(ch1==0)  break;}

}

四.实训总结

这次课程设计对于我们来说,有很大的难度。因为它要求我们较完整的去实现一个比较可行的程序。将其应用到实际的生活中去。我选中的题目是图书管理系统。这个题目相对来说贴近生活,比较容易理解。但是设计一个较为完整的程序却不是这么简单的。

一开始在做这个系统的过程中发现自己C的水平很低,在刚开始时完全是一头雾水,不清楚这个系统应该是从哪里下手,不明白该怎么处理各种功能要求,把这些要求揉和到语言中去。后来在老师的指点下,学会了对整体框架进行架构。之后又参考了别人的成品,虽然大多数都采用了文件存贮,但是还是对我的这个程序有很大的参考价值。这可以看出我们在学习中应该多阅读程序,多看别人好的程序是怎么运行的,这样才能慢慢的学会自己去说去做。

同时通过这一周的程序及报告编写,我也发现了自己的很多不足,自己知识的很多漏洞,看到了自己理论联系实际的能力还是比较脆弱。尤其是编写大型的程序所要拥有的知识和技能比较缺乏。程序编好了,还要经过调试和修改,这步也很关键,好的程序是经过了无数次的修改和调试才产生的。我的程序基本上能够满足要求,但还有一些地方需要改进,在今后我应该在多看书的同时还要加强实践的练习。才能进一步提高自己的编程能力。

更多相关推荐:
实训报告范文

实训报告仪模拟对话企业介绍学年学期专业班级姓名学号指导老师1实训项目商务面试进出口公司市场营销商务礼目录1实训一2实训二3实训三4实训四5实训五6实训六模拟面试与简历制作公司结构与企业文化实践建立公司模拟业务流...

实训报告范本

秦皇岛职业技术学院有关艾欣超市的实训报告实训项目:连锁超市商品摆放与周边环境实训时间:20xx年x月x日8:00-12:00.指导教师:王蕾实训人员:张艳林一、实训目的1.这次上实训的主要目的是将《连锁企业商品…

实训报告模板

荆楚理工学院课程实训成绩年级20xx级专业电气工程及其自动化课程低压电气控制技术班级11电工2班姓名志学号20xx401020xx3指导教师评语在为期三周的实训中该生严格遵守各项实训制度未有无故缺勤迟到早退现象...

实训报告

《阿里巴巴国际站操作平台》实训报告姓名舒*班级2011级阿里2班学号11*****01经济管理学院电子商务专业20xx年5月一、实训目的与要求阿里巴巴电子商务国际平台是阿里巴巴集团旗下的B2B贸易平台,主要有两…

实习实训报告

20##届本科毕业实习报告专业班级:学号:学生姓名:指导教师:实习期间:实习地点:二○##年三月二十五日信息工程系校外实习报告要求1.整个毕业实习报告包括封面、毕业实习考核内容及评分标准、正文、毕业实习考勤表、…

实训报告格式

汽车诊断与检测实训一、实训目的(一)掌握电控发动机的结构和工作原理。(二)掌握汽油喷射系统的构造及原理。(三)了解汽车空调系统特点。(四)掌握汽车空调的组成、原理、安装、作用和控制面板的用途及使用。(五)了解车…

实训报告

为期一周的实训已经画上了句号。虽然时间不长,但是这次的实训中我学到了很多,同时也让我意识到我要学的更多。通过整个实训我更加明确了自己将来的工作方向,以及自己以后学习的方向。第一天我们参观的是上海电气,上海电机学…

实训报告

西南财经大学天府学院20xx届企业经营实战实训报告公司名称永安堂医药有限公司指导教师辛亦维实训时间20xx年09月05日12日组长吴非联系电话1820xx61443企业经营实战课程组公司宣言以全球营销网络为依托...

实训报告

实验题目双色球彩票选号器MySSQ电子0903班覃济灿学号20xx4737一实验目的1熟悉linux环境的使用2熟练linux下嵌入式Qte环境搭建3熟悉嵌入式qtopia桌面应用软件开发的一般步骤4有效结合实...

实验八 实验报告表

实验八实验报告表实验名称学号实验报告表81并行算法和串行算法实验数据表1120xx0421姓名宋丽班级020xx303实验时间1219实验报告表82分布式实验数据表实验报告表83虚拟计算实验数据表

实习报告表格

牡丹江大学经贸与管理学院顶岗实习报告实习单位姓名学号专业班级实习岗位实习日期至顶岗实习报告专业班级姓名以下为顶岗实习报告正文可以加页顶岗实习报告撰写要求顶岗实习报告是学生顶岗实习实训过程的全面总结是表述其实训成...

实验十四 实验报告表

实验十四实验报告表实验名称数据管理与数据库操作实验报告表141数据库管理系统实验数据表实验报告表142虚拟数据库设计实验报告表143虚拟数据库查询1

实训报告(43篇)