精华内容
下载资源
问答
  • 一、课程设计题目基本要求介绍 学生限时答题评测系统是一个可以允许学生限时答题,同时记录答题情况,并根据答题情况计算学生成绩并给出相应的特色成绩单的系统。经分析该系统需要限时、计时、随机不重复...

    零、团队介绍

    单位名 怀化学院计算机科学与工程学院
    课程名称 《高级语言程序设计》
    班级 1902班 第6组
    团队名称 斗地主(组)
    课程设计题目 学生限时答题评测系统

    一、课程设计题目基本要求介绍

    学生限时答题评测系统是一个可以允许学生限时答题,同时记录答题情况,并根据答题情况计算学生成绩并给出相应的特色成绩单的系统。经分析该系统需要限时、计时、随机不重复出题、改变颜色、计算成绩、评定成绩、生成文档记录答题情况等功能,而想要实现这些功能需要循环、指针、数组、选择、文件的输入与输出等知识。

    二、流程图

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    三、项目目前进展

    1、已完成的功能:
    (1)如果没有按学号加姓名的方式可以提示重新输入。
    (2)一旦输入正式的学号和姓名之后,窗口标题应该修改为该生输入的学号加姓名。
    (3)答题开始时,倒数5秒,每秒倒数一次,倒数不计时。
    (4)支持大写转小写功能,如学生输入fF等同于ff。
    (5)支持学生输入答案中可以有空格,如学生输入f f,等同于输入ff。
    (6)支持开头输入回车或空格不影响学生输入。
    (7)每完成一道题目,提示该同学已正确多少道,已耗时多少秒。
    (8)每到题回答正确提示为绿色,错误提示为红色
    (9)超时后不再允许学生输入,但不关闭程序。
    (10)根据学生成绩判断为不同等级。
    (11)考生答题时(客户端)可以生成文档记录成绩。
    (12)答题中途退出仍然有文档生成记录成绩。
    (13)发布Release版,不再使用默认Debug版本。
    (14)清屏功能。
    2、核心功能讲解
    (1)主要函数内容:
    这部分是利用循环达到循环出题答题的过程,是整个程序的主题部分,我们套用了两个循环达成难易比例出题的目的,但这方面还有不足。这段代码是整个程序的核心部分,是利用循环进行从题库中抽取题目,和客户进行答案的输入,打开之前建立的文件,“a” 模式,对文件内容进行追加,利用time middle=time(NULL)获取开始时间,再利用字符串的比较判断答案的正确与否,正确返回整数0,
    则输出答案正确,正确答题数加一,答题总数加一,否则输出答题错误和正确答案,总题数加一。利用time. end=time(NULL); 获取本题结束时间,在进行字体颜色改变输出相应的提示信息,关闭文件,判断是否超时,超时则结束程序,不超时则继续循环。
    下列是代码展示:

    for(i=0;i<40;i++)
     {
      if(index_rand[i]<=28)
      {
       f=fopen(a,"a");
       time_middle=time(NULL);//获取本题开始时间
       color_printf_fprintf(WHITE,f,"*********************************************************\n");
       color_printf_fprintf(WHITE,f,"第%d题:%s\n",i+1,question_easy[easy[i]]);
       color_printf_fprintf(WHITE,f,"请输入你第%d道题的答案(简单)\n",i+1);
       huickongge(myanswer);
       if(strcmp(strlwr(myanswer),answer_easy[easy[i]])==0)//strlwr()自动转换大小写
       {
        color_printf_fprintf(GREEN,f,"恭喜,你的答案是正确!\n");
        t++;
       }
       else
       { 
        color_printf_fprintf(RED,f,"你的答案是错误的,正确答案为%s\n",answer_easy[easy[i]]);
       }
       all++;
       p=t/all;
       time_end=time(NULL);//获取本题结束时间
       color_printf_fprintf(GREEN,f,"你的正确率为%.2f%%,本题用时%ld秒,你已用时%ld秒\n",p*100,time_end-time_middle,time_end-timestart);
       color_printf_fprintf(WHITE,f,"*********************************************************\n");
       fclose(f);
       if(time_end-timestart>=LIMITTIME)
        break;
      }

    (2)随机出题函数
    利用rand函数生成随机数,从题库中抽取题目,判断是否与之前出题重复,重复则再次生成随机数,不重复则出题。这段代码是随机出题中的一段代码,是生成随机数的一段代码,以此随机出题。将随机数的值赋予自定义整数tmp,在判断该随机数是否与之前出过的题目的相同,同则结束循环,重新抽取随机数。
    下列是代码展示:

    void get_num(int *num,int n)
    {
     int i,j,tmp;
     for(i=0;i<n;i++)
     {
      srand((unsigned)time( NULL ));// 
      for(i=0;i<n;i++) // 
      {
       while(1) //
       {
        tmp=n * rand()/ RAND_MAX +1; //生成一个1~100的随机数
        for(j=0;j<i;j++) //
         if( tmp==num[j] )
          break;
         if(j==i) // 
         {
          num[i]=tmp; //
          break; // 
         }
       }
      }
     }
    }

    修改后,代码节省了运行时间,除去代码最后一题可能一直重复抽题,题目显示时间过长的问题。
    修改后代码:

    void get_num(int *num,int n)
    {
    	int i,j,tmp;
    	srand((unsigned)time( NULL ) );// 
    	for(i=0;i<n;i++)
    	{
    		num[i]=i;
    	}
    	for(i=n-1;i>=0;i--)
    	{
    		j=rand()%(i+1);
    		tmp=num[j];
    		num[j]=num[i];
    		num[i]=tmp;
    	}
    }

    (3)开头回车空格不影响输入,中间空格不影响输入

    void huichekongge(char *a)
    {
     int i = 0 ;
     scanf("%c",&a[i]);
     while(a[i]=='\n'||a[i]==' ')
     {
      scanf("%c",&a[i]);
     }
     while(a[i]!='\n')
     { 
      if(a[i]==' ')
       
      {
       scanf("%c",&a[i]);
      }
      
      else
      { 
       i++;
       scanf("%c",&a[i]);
      }
      
     } 
     a[i]='\0';
    }

    效果图:
    开头空格:
    在这里插入图片描述

    开头回车:
    在这里插入图片描述

    中间空格:
    在这里插入图片描述
    (4)更改窗口名

    void modifywindows(char *n)
    {
     char s[100];
     sprintf(s,"title %s",n);
     system(s);
    }

    效果图:
    未输入姓名学号前:
    未输入姓名学号前
    输入后:
    在这里插入图片描述

    (5)封装变色函数

    void color_printf_fprintf(int color,FILE *file,const char *cmd, ...)
    {
     va_list args;       //定义一个va_list类型的变量,用来储存单个参数  
        va_start(args,cmd); //使args指向可变参数的第一个参数 
     if(color==1)
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
     else if(color==2)
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
     else if(color==3)
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
     else
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);
        vprintf(cmd,args);//必须用vprintf等带V的 
     vfprintf(file,cmd,args);
        va_end(args);     //结束可变参数的获取
     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
    }

    效果图:
    在这里插入图片描述

    (6)5秒倒计时

    void count_down()//倒计时
    {
     int i;
     time_t ts,te;
     for(i=5;i>0;i--)
     {
      ts=time(NULL);//获取开始时间
      te=time(NULL);
      while(te-ts<1)
       te=time(NULL);
      printf("距离开始答题还有%d秒\n",i);
     }
    }

    效果图:
    在这里插入图片描述

    (7)判断输入学号+姓名是否正确

    char islogin(char *a,char *c)
    {
     int i;
     while(1)
     {
      for(i=0; a[i]>='0'&&a[i]<='9'; i++);//用来判断num是否在十以内
      if(i==10)
      {
       return 0; 
      } 
      else
      {
       printf("您输入的格式错误,输入错误请重新输入.\n"); 
       scanf("%s %s",a,c);
      }  
     }
    }

    效果图:
    在这里插入图片描述
    (8)不能输入,但不退出程序

    void cntout(void)
    {
     char input[40]="a";
     while(1)
     {  
      if(input[0] == '\0')//检测是否是空字符
      {
       exit(0);
      }
     } 
    }

    效果图:
    时限120,此处156,超过时间,未关闭程序,不能再答题。
    在这里插入图片描述

    四、未完成项目

    (1)正在完成项目:无
    (2)觉得目前不能完成,今后打算实现的功能
    1.考生答题时(客户端)将某些重要链接信息发送给服务端,服务端可以生 成特定文件来记录下这些客户端发来的链接信息。
    2.考生答完后(客户端)将某些重要的考生完成信息发送给服务端,服务端可以生成特定文件来记录下这些客户端发来的考生完成信息。
    3.如果考生达到某个级别以上,考生会将【学生基本信息_EXAM.txt】自动发送给服务器端,在服务器中保存下来。
    4.发布一种新的联系模式,练习模式可以自己设定限制时间,属于单机版,用于个人练习,但基本功能类似。
    5.制作网络版答题系统。

    五、每日项目进度表及版本更新日志说明

    编号 功能 负责人 完成日期 该功能占比
    1 答题开始时,倒数5秒,每秒倒数一次,倒数不计时 冯俊 2019.11.19 5%
    2 支持大写转小写功能,如学生输入fF等同于ff 冯俊 2019.11.18 5%
    3 每完成一道题目,提示该同学已正确多少道,已耗时多少秒。 冯俊 2019.11.18 5%
    4 每到题回答正确提示为绿色,错误提示为红色 冯俊 2019.11.19 10%
    5 超时后不再允许学生输入,但不关闭程序 冯俊 2019.11.21 10%
    6 考生答题时(客户端)可以生成文档记录成绩 冯俊 2019.11.22 7%
    8 答题中途退出仍然有文档生成记录成绩 冯俊 2019.11.25 6%
    9 发布Release版,不再使用默认Debug版本 冯俊 2019.11.20 6%
    10 随机出题 冯俊 2019.11.20 10%
    11 支持学生输入答案中可以有空格,如学生输入f f,等同于输入ff,开头输入空格回车不影响。 秦国灏 2019.11.20 10%
    12 一旦输入正式的学号和姓名之后,窗口标题应该修改为该生输入的学号加姓名。 秦国灏 2019.11.21 10%
    13 如果没有按学号加姓名的方式可以提示重新输入 秦国灏 2019.11.20 7%
    14 清屏功能 夏江慧 2019.11.25 5%
    15 计算成绩 夏江慧 2019.11.19 5%

    文档地址
    1.ppt链接:ppt链接
    2.视频链接 : 视频链接

    七、每位成员的过程体会

    夏江慧(组长): 这次作业对我来说是一个非常大的挑战,在老师的引导和组员的协助下,才能从一开始的茫然,到后来渐渐有了头绪明白自己要干什么,怎么做,到最后完成它。在这个过程中我收获良多,明白了任务的分配不能随便,了解到分工合作的好处和重要性,提高了与组员共同协作解决问题的能力,也从这次课程的实践中学习了很多c语言知识,更重要的是交到了两个优秀的朋友。

    秦国灏(组员): 这次大作业虽然很辛苦,但也让人收获了很多,让我既能 够独立地解决问题,也能够与组员共同协作解决问题提高沟通能力,既学习了知识,也收获了友谊,这种活动最好多多益善!!!

    冯俊(组员): 这次作业让我深刻理解到了团队合作的重要性。一个人的能力、精力时间都是有限的,要在有限的时间内把大量的工作完成离不开团队的合作,独自一人埋头苦干终将一事无成。

    八、组长想说的话

    自我批评: 在这次课设结束后,我对自己和小组进行了反思,我们确实存在很多不足之处。首先是课设的预备阶段,分配任务时,因为组长我对程序功能的认识不足,分配课设任务分配的十分草率,导致小组人员任务分布不合理,有的组员时间紧,任务重,有的组员完成任务后还有空余时间。冯俊个人完成了大比例的程序编写任务,其他组员程序编写参与感不足。后期任务分配有更改,但仍存在不合理之处。并且团队后期整体存在懈怠情况。

    自我夸奖: 这次课设是我们第一次课设作业,对我们来说都是一次经历,期间存在很多困难,但小组成员都能齐心协力解决问题。小组成员都十分认真负责,分配下去的任务都会尽职尽责完成,并且完成质量较高。小组氛围好,因为小组成员是随机分配,一开始大家都不熟悉,并且性格都相对内向,但经过这次协作之后,大家都是既能一起认真工作又能一起开玩笑的朋友。我真心的认为我们小组超级棒(组吹石锤了)。

    2019.12.30

    过程体会(新增)

    夏江慧(组长): 在期末再来看待这份期中作业有了不一样的看法,期中过后又发生了一些变故,但值得高兴的小组成员都能够选择一起承担,而不是推脱责任。最后分配分数的时候,我们小组每个人都能看到自己身上的不足,和其他组员身上的闪光点,并不一味的想为什么我不是最高分?或者为什么我是最低分?明白分数是每个人应得的,是自己的付出所获得的结果。身为组长的我也明白了,小组有些规定是需要讲明,要避免一些无法预料的意外,这是另一种责任。期中期末中间隔了许久,但当我们聚在一起的时候还是能够很自然的相处,我觉得这是更加可贵的!再次一起做任务,虽然作业还是令人头大,但又有点久别重逢的高兴,又能一起干点什么,好像还不错!组员也没有因为组长比别的组长更麻烦的要求而懈怠,仍能够完成任务。我们是一个组真的很好,组员超棒,斗地组牛逼!

    秦国灏(组员): 回顾这次探究活动,仍然感觉收获满满,也仍然是一次非常难忘的经历,让我第一次感受到了团队协作的重要性,也懂得了分享的重要性,也明白了一个人的力量有限,但是一个team的力量可以变得无限!!!

    冯俊(组员): 这次期中作业,让我深刻的认识到了自己的不足。

    新增
    1、博客新增效果图展示
    2、随机抽题函数修改
    3、添加了特色成绩单,不同等级的成绩显示不同的颜色和语句。
    如等级e的效果图:
    在这里插入图片描述

    展开全文
  • 课程设计总结

    2021-02-20 21:16:04
    1、政府职能部门 望细分、具体,课程压缩所致 2、企业家 结构好、利于规划、参考 强烈希望协调与管理融合进来 3、工程师、技术人员 指导行强 ...老师总结课程缺陷:1、互动不够 2、直播技术弱 ...

    1、政府职能部门
    望细分、具体,课程压缩所致

    2、企业家
    结构好、利于规划、参考
    强烈希望协调与管理融合进来

    3、工程师、技术人员
    指导行强
    望精化、深化、细化

    4、学生
    利于未来规划,创业、就业、发展、学习方向等等

    老师总结课程缺陷:1、互动不够 2、直播技术弱

    协同与应用相结合非常重要

    展开全文
  • c课程设计总结800字 篇一C语言课程设计总结 长江大学工程技术学院课程设计总结 课程设计名称_ C语言课程设计 _开课系部_信息系_专业班级 自动化61002 学生人数 33_起止时间 _ 指导教师_ 徐阳_ 负责人_李敏教授_ 一...
  • 山东德州科技职业学院 信息工程系 SQL Server实训报告书 项目名称 学生信息管理系统 数据库构建与设计 姓 名 X X X 班 级 XX级计算机应用 一班 指导教师 X X 完成时间 200X.X.X-200X.X.X 德州科技职业学院 信息工程...
  • JAVA 程序设计 课程设计报告 系 别 计算机与电子系 专业班级 计算机科学与技术 0803 班 学生姓名 曾一墙 指导教师 ...课程设计总结报告应包括前言基本原理或理论设计计算 书或实验报告结论图纸框图流程图参考资料等或调
  • 闽南师范大学计算机学院 Java课程设计总结报告 学生学号 1308190112 专 业软件工程 姓名 陈志毅 13软件1班 所属学期 2014 -2015 学年第2学期 项目开发总结报告 注内容请参考教材:Java应用开发与实践人民邮电出版社刘...
  • 对于不少学生来言,单片机课程设计是必上课程之一,因为它能帮助我们增强动手能力,也能提高大家的配合能力。以下是由出国留学网小编为大家整理的“单片机课程设计心得体会”,仅供参考,欢迎大家阅读。单片机课程...

    对于不少学生来言,单片机课程设计是必上课程之一,因为它能帮助我们增强动手能力,也能提高大家的配合能力。以下是由出国留学网小编为大家整理的“单片机课程设计心得体会”,仅供参考,欢迎大家阅读。

    单片机课程设计心得体会【一】

    课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

    回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说三极管PNP管脚不懂怎么放置,不懂分得二极管的正负极,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

    这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在信盈达刘老师的辛勤指导下,终于游逆而解。同时,在刘老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和信盈达各位指导老师再次表示忠心的感谢!

    一、单片机课程设计总结

    做了两周的课程设计,有很多的心得体会,有关于单片机方面的,更多的是关于人与人之间关系方面的。

    我们组一共有三个人,但其他两个人是真的神龙见首不见尾,除了在最后答辩的时候他们一起坐在了我旁边,冠冕堂皇的指着我画了几遍的图说了几嘴,我想可能他们自己都不知道自己在说怎么,虽然有的东西他们也答出来了。我佩服他们的勇气,羡慕他们的运气(我见到的很多做了10 天的人最后的成绩都有不如他们的),但是鄙视他们的做法。

    所幸的是,我得到了很多同学的帮助。我想没有他们我可能都要放弃了,因为我本人对单片机也并不是很熟悉,学的东西好像它是它,我是我似的,理论联系不了实际。以前的汇编语言没学好,一开始的程序这块儿就要令我抓狂了。后来请教我们班的一个男生,每次跟他一起到试验室调试程序(他们组也只有他一个人动手),看他边做边给我讲解。最后在开发机上做出来的时候,虽然不是我自己写的,但看他那么高兴,我也有一种分享到的成就感。后来我们组就用了他写的程序,他自己又抽空做了些拓展。

    接下来就是做硬件方面的焊接工作了。没想到这项看起来不需要多少技术的工作却是非常的劳心劳力。很多次是早上起来带瓶水带些吃的到实训中心,一泡就是一天。我看到有很多人跟我一样,不同的是他们是三三两两,而我大部分时间都是一个人做。在这个时候也有很多人帮助我,或是热心的帮我带饭,或是在我打盹儿的时候帮我做点焊接。大家都鼓励我,即使最后出不来东西,但是一定要坚持把它做完。当我想放弃的时候,我也这么对自己说,即使你做出来的是次品...

    展开全文
  • C 语言课程设计学生成绩管理系统 个人心得体会 徐州工程学院 14 计嵌 1 班 07 组 张凯 这一周以来的课程设计不仅让我明白了 C 语言的确是一门很有用的但是又是不容易的一门课程 起初刚开始做课程设计时 以为这个课程...
  • C 语言课程设计学生成绩管理系统 个人心得体会 徐州工程学院 14 计嵌 1 班 07 组 张凯 这一周以来的课程设计不仅让我明白了 C 语言的确是一门很有用的但是又是不容 易的一门课程 起初刚开始做课程设计时 以为这个...
  • 简单学生成绩管理系统的设计与实现 设计目的及内容要求 1 设计目的 巩固和加深学生对高级语言程序设计课程的基本知识的理解和掌握掌握 java 语言编程和程序调 试的基本技能利用 java 语言进行基本的软件设计提高...
  • 课程设计目的 本课程设计的目标就是要达到理论与实际应用相结合提高学生组织数据及编写大型程序的能力并培养基本的良好的程序设计技能以及合作能力 设计中要求综合运用所学知识上机解决一些与实际应用结合紧密的...
  •  课程设计的要求1.学生作业管理系统问题描述:设计一个学生作业管理系统,实现对学生作业提交情况的检查、查询、文件名的规范等操作。系统运行要求:(1)“学生信息表”已经存在,初始为教师的教务管理系统中导出...

    先看个效果图:

     

    使用的是MFC编程;

     

    课程设计的要求

    1.学生作业管理系统

    问题描述:设计一个学生作业管理系统,实现对学生作业提交情况的检查、查询、文件名的规范等操作。

    系统运行要求:

    (1)“学生信息表”已经存在,初始为教师的教务管理系统中导出的点名表,是Excel表格,具体表格见附件一。

    (2)学生提交的作业文档已存在,并保存在同一目录下,作业文件名由学号+姓名组成。

    系统基本要求: 程序采用图形界面下进行交互的工作方式,完成如下功能:

    (1)规范学生作业文件名

          往往有同学上交的文件没有按照规范命名,这些文件名中可能包含了学号和姓名,但顺序不对;或者除学号、姓名外有其他信息;或者只有学号、只有姓名等;对不规范的命名文件要能够进行重命名,顺序不对的进行调整;信息多余的予以删除;信息不全的则到学生信息表中查找补充;对无法规范的文件名统一管理报告,保存到专门的不规范文件列表文件unnamed.txt,并能够随时打开显示。能够规范的文件在生成规范的文件名后以新文件名对老的文件名进行修改。

    (2)多种方式建立学生作业信息

    l       规范后的每个学生的作业文件放在一个目录下,通过读取这些文件名形成学生作业信息表,表中每个节点代表一个学生的作业信息,至少包括学生的学号、姓名、作业文件存放路径,并将作业提交情况信息添加到“学生信息表”保存,在该表中标记已交和未交学生情况;同时将作业信息表保存到StudentFile.txt;

    l      若在目录中新存入一个文件,则可允许通过手工录入的方式录入作业信息,同时更新StudentFile.txt和“学生信息表”;

    l      也可以导入某个路径下存放学生作业信息的文本文件。

    (3)检查浏览学生作业提交情况及作业文档

    l      以列表方式显示所有学生的作业提交信息,区别已交学生和未交学生

    l      可选中某一学生,调用word等编辑器打开其作业文档

    (4)按照学号对所有学生信息进行升序、降序排列,并输出

    l   可选用冒泡、选择、快速排序等算法;

    l   不仅输出屏幕显示,还可根据需要写入相关信息文件。

    (5)按姓名、学号等方式,实现对学生作业信息的精确查询、模糊查询,输出屏幕显示,并能调用word等编辑器打开选中学生的作业文档

    l   精确查询结果演示

    查询“姓名是刘梅”同学信息,则输出

           学号        姓名  作业提交情况        作业文件

    2004112011   刘梅      已交       c:\file\2004112011刘梅.doc

                                查询“作业提交情况是未交”的同学信息,则输出

           学号        姓名  作业提交情况      作业文件

    2004112012   刘强   未交   

    2004112021   张计   未交   

    2004112037   赵冈   未交   

    l   模糊查询结果演示

    查询“姓刘”的同学信息,则输出

           学号        姓名  作业提交情况      作业文件

    2004112011   刘梅   已交     c:\file\2004112011刘梅.doc

    2004112012   刘强   未交   

    2004112013  刘星    已交     c:\file\2004112013刘星.doc

    l   能够实现连续多次查询,并根据用户要求将查询结果保存为文件

    (6)学生作业信息的插入、删除、修改。

    l   通过插入、删除和修改后,保持所有学生信息的有序性;

    l   插入、删除和修改后,对存放所有学生信息的文件及时更新。

    (7)数据的统计功能

    l   统计已交学生名单;

    l   统计未交学生名单;

    l   将上述统计结果,根据用户需要写入相应文件。

     ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    可编辑部分

    一. 当单击list控件的单元框时实现可编辑

    1.  前提是list控件的风格是表格格式

        CListCtrl::SetExtendedStyle(LVS_EX_GRIDLINES)设置为LVS_EX_GRIDLINES风格,这样可以看到单元格,不设置也可以,不过看不到相应的一行

    2.  获取鼠标的位置

       在list控件上添加鼠标单击事件,生成的函数为OnClickList1(NMHDR* pNMHDR, LRESULT* pResult);

       在函数里可以进行强制转换NM_LISTVIEW  *pEditCtrl = (NM_LISTVIEW *)pNMHDR;

       这样pEditCtrl->iSubItem表示单击的是第几列,pEditCtrl->iItem表示的是单击了第几行,这样既可以确定鼠标单击的位置

    3.  创建虚拟的Edit控件

       在单击鼠标的位置创建该控件,然后再该控件输入内容,然后获取该控件的内容,显示在list控件的相应的单元框中,然后把Edit销毁,每单击一次鼠标,就

    创建一次,然后销毁(还有一种不用销毁控件方法就是把控件隐藏,用的时候在显示,显示:m_Edit.ShowWindow(SW_SHOW),隐藏:m_Edit.ShowWindow(SW_HIDE);)

       定义一个CEdit类得对象CEdit m_Edit;然后利用该类的Create()函数

       我的代码:

       m_Edit.Create(ES_AUTOHSCROLL|WS_CHILD|ES_LEFT|ES_WANTRETURN|WS_BORDER,CRect(0,0,0,0),this,IDC_EDIT);
    
       //IDC_EDIT已近在头文件中定义,这个很重要,很多时候会忽略,
       //网上找到的实现编辑办法中这个都没说明
       //我定义为#define  IDC_EDIT 0xffff

      

      设置编辑框的字体:

     m_Edit.SetFont(this->GetFont(),FALSE);//设置字体

       设置框的大小:

    CRect  EditRect;
    EditRect.SetRect(EditRect.left,EditRect.top,EditRect.left+m_list.GetColumnWidth(m_SubItem),EditRect.bottom);
    //m_list.GetColumnWidth(m_SubItem)获取列的宽度

       在显示Edit控件之前要设置父窗口,因为要在list控件上显示,所以将该控件设置为父窗口

    m_Edit.SetParent(&m_list); //将list control设置为父窗口,生成的Edit才能正确定位,这个也很重要,

       显示控件: 

    m_Edit.MoveWindow(&EditRect);
    m_Edit.ShowWindow(SW_SHOW);

       在Edit控件内输出内容:

    m_Edit.SetWindowText();

       获取控件内的内容:

    m_Edit.GetWindowText();

       在创建Edit控件前最好判断该控件存在不存在,若存在先销毁然后再创建 

    if (m_Edit.m_hWnd != NULL)
    {
       m_Edit.ShowWindow(SW_HIDE);
       m_Edit.DestroyWindow();
    }
    		 


    4.  创建一个下拉式Combo Box控件

         定义一个CComboBox类的对象CComboBox m_comBox;

         创建 

    m_comBox.Create(WS_CHILD|WS_VISIBLE|CBS_SORT|CBS_DROPDOWN|CBS_OEMCONVERT,CRect(0,0,80,80),this,0xffff);                                                                       //CBS_OEMCONVERT 实现可编辑                                                                                                                                                    //CBS_DROPDOWN   产生一个下拉式框,小图标
     //CBS_DROPDOWNLIST   图标代替单元格
    		  

          添加下拉框的选项

      //添加选项
     m_comBox.AddString("已交");                                                                                                                                                   m_comBox.AddString("未交");

         

          还有在单击的位置显示该Box控件,获取内容,销毁控件的方法和Edit控件方法一样

     

    二 .   在list控件中

          插入一行   

    m_list.InsertItem(item,iSubItem);
    //item行数,从0开始
    //iSubItem列数,从0开始                                                                                                                                                           
     
     
    //修改一行的各个单元框的内容
    m_list.SetItemText(item,iSubItem,"内容");

     

           插入一列

     

    m_list.InsertColumn(0,"学号",LVCFMT_LEFT,100);
    m_list.InsertColumn(1,"姓名",LVCFMT_LEFT,100); 
    m_list.InsertColumn(2,"作业情况",LVCFMT_LEFT,100);
    m_list.InsertColumn(3,"作业文件",LVCFMT_LEFT,rect.Width()-3*100);

     
       第一个参数是列数,第二个参数是内容,第三个参数是对齐内容(左对齐,右对齐,中间对齐),第四个是宽度

     

      获取list控件中选中的已行

    m_list.GetSelectionMark(); //选中的一行

      返回选中的行数

    //如果list control中有数据则全部删除
    if (m_list.GetItemCount() != 0)
    {
      m_list.DeleteAllItems(); //删除所有行                                                                                                                                          while(m_list.DeleteColumn(0)); //删除所有列
    }

     

       获取总行数

    m_list.GetItemCount() 


       获取总的列数

    m_list.GetHeaderCtrl()->GetItemCount()


     ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     

     双击打开作业

    ShellExecute(this->m_hWnd,"open","WINWORD.EXE",filepath,NULL,SW_SHOWDEFAULT);

    第三个参数是要调用的程序,第四个是要打开的文件的路径

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     

    单击右键菜单

    先添加一个菜单,设计好菜单后,可以使用类向导关联相应的函数,

    CPoint  point;
    CMenu   Menu;
    GetCursorPos(&point); //获取鼠标位置
    Menu.LoadMenu(IDR_MENU1); //加载菜单
    Menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x,point.y,this);
    //显示菜单


    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     

       弹出选择文件的对话框

     //弹出对话框,默认打开Excel文件,可以选择
    CFileDialog  fileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"Excel文件(*.xls)|*.xls|文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");

     

       获取选中的文件的路径

    CString  strPathName;
    strPathName = fileDlg.GetPathName(); //获取文件路径

      

    CString str = strPathName.Right(3); //获取后面3为字符

     

       弹出选择文件夹的对话框


        char szSelected[MAX_PATH];//用来存放文件夹路径
        //选择文件夹框
        BROWSEINFO    bi; 
        LPITEMIDLIST pidl; 
        bi.hwndOwner = this->m_hWnd; 
        bi.pidlRoot = NULL;
        bi.pszDisplayName = szSelected;
        bi.lpszTitle = "选择作业文件路径:";
        bi.ulFlags = BIF_RETURNONLYFSDIRS;
        bi.lpfn = NULL;
        bi.lParam = NULL; 
        bi.iImage = NULL;          
        if((pidl = SHBrowseForFolder(&bi)) != NULL)
        {
            if(SUCCEEDED(SHGetPathFromIDList(pidl,szSelected)))//得到文件夹的全路径,不要的话,只得本文件夹名 
            {
    			strcpy(SPath,szSelected);
            }
        }


     

       

           CString str;
           str.Format("是否要删除?\n学号:  %s\n姓名:  %s\n作业情况:  %s\n作业文件: %s\n",
    	               pDel->pNext->stuNo,pDel->pNext->stuName,pDel->pNext->stuWork,pDel->pNext->stuWorKPath);
    
    	   if (MessageBox(str,"警告", MB_ICONWARNING|MB_YESNO) == IDYES) //确定是否删除
    	   {
    		   pTemp = pDel->pNext;
    		   pDel->pNext = pTemp->pNext;
    		   free(pTemp);
    	       m_list.DeleteItem(item);
    	   }

           效果:

     

      

     

     

     


     


     

     






     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 人工智能课程设计报告 班级 191134 学号 20131000479 学生姓名 陈聪儿 指导老师 赵曼 日期 2015年 11月 目录 第 1 章1 罗马利亚度假问题1 1.1 题目内容1 1.2 需求分析1 1.3 设计1 1.3.1 设计思想1 1.3.2 设计表示10 ...
  • C语言课程设计学生成绩管理系统 个人心得体会 这一周以来的课程设计不仅让我明白了C语言的确是一门很有 用的但是又是不容易的一门课程起初刚开始做课程设计时以为 这个课程设计不会有多难只不过是把多个函数组合起来...
  • C语言课程设计学生成绩管理系统 个人心得体会 这一周以来的课程设计不仅让我明白了C语言的确是一门很有用的但是又是不容易的一门课程起初刚开始做课程设计时以为这个课程设计不会有多难只不过是把多个函数组合起来就...
  • v1.0 可编辑可修改 JAVA 程序设计课程设计报告 设计题目 学生信息管理系统 学院名称 信息工程学院 专业班级 13 计本1 姓 名 学 号 目录 11 v1.0 可编辑可修改 一 需求分析 3 二 概要设计 3 三 详细设计 3 数据库设计...
  • 课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是...
  • 学生成绩管理系统JAVA课程设计 目录 1设计题目1 2 设计目的2 3设计分析 3 4 概念结构设计 6 5 逻辑结构设计 11 6 表结构设计 13 装 7 具体功能实现15 8 总结26 9 附录 27 订 线 共 39 页 第 0 页 1.设计题目 学生...
  • .NET 程序设计 课程设计报告 班级计算机 1403 学号 :1411640305 姓名黄世增 一实验名称 作者信息管理系统 二实验目的 进一步掌握并加深 .NET 程序设计 课程的基本知识理解 .NET 程序设计 课程中重点讲解的 技术在...
  • 设计课程设计是机械设计课程教学必不可少的实践环节,提高教学质量对培养学生分析和解决工程设计问题的能力起着十分重要的作用。以下小编为你带来,希望对你有所帮助!篇1本次课程设计的题目是LC正弦波振荡器的设计,...
  • 管理科学与信息工程学院 班级 计算机 学号 _1401111633 姓名 张浩 程序作者 程光亮 ,张浩 语言程序设计课程 -----设计报告 课程设计的目的 1复习巩固 C 语言的基础知识进一步加深对 C语言的理解 和掌握 2为学生提供...
  • 答题系统1. 求利用结构化程序设计方法以及C的编程思想来完成学生...通过本次课程设计,要求加深对C语言的语法规则、数组、函数、指针等方面基本内容的理解;预习并尝试使用第10章“对文件的输入输出”中的基础知识。
  • 负责图形用户操作界面设计(界面的计时功能,验证答案后弹出正确与否),考试模式统计正确率与考试分数。带括号的四则运算算式及验证答案 罗伟业;负责两个整数间的四则运算算式及验证答案       代码...
  • 课程设计任务书 学生姓名 董航 专业班级 电信 1006 班 指导教师 阙大顺李景松 工作单位 信息工程学院 课程设计名称 Matlab 应用课程设计 课程设计题目 Matlab 运算与应用设计 5 初始条件 以上版本软件 课程设计辅导...
  • 仲恺农业工程学院 仲 恺 农 业 工 程 学 院 课 程 设 计 报 告 题目员工管理系统 课程名称 数据结构与算法 信息科学与技术学院 院 系 专业班级 学 号 名 姓 3 仲恺农业工程学院 目 ... 12 五课程设计总结 . 错误未定义
  • 计算机网络课程设计报告 学生姓名 学号 班级 指导教师 设计时间 目录 第...服务器实现 6 客户端实现 9 第四章运行结果 13 第五章课程设计总结 17 第六章附录 参考文献 19 源代码 19 第一章系统描述 设计目的 1学习网络
  • 数据库原理及Oracle开发课程设计 题 目 选课管理系统 系 (部) 电信系 班 ...一设计题目内容及要求 题目 选课管理系统 内容:1分析与流程设计 2相关程序设计实现调试 3课程设计总结报告 要求1在选课管理过程中实现信息自
  • 算法分析与设计是通过老师的总结,写出的很好学习材料。包括算法分析与设计的基础知识。
  • 课程设计报告 课程设计题目复数计算器 学生 姓名张小华 专 业软件嵌入式 班 级10211111 学 号1021111115 完成实验时间2011-11-30 实验 地点 软件楼306 指导 教师 张军 2011年 12 月 1 日 东华理工大学 课程设计评分...
  • 软件工程课程设计 学生成绩管理系统 需求分析 详细设计 概要设计 测试 总结

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 759
精华内容 303
关键字:

学生课程设计总结