《C语言课程设计》报告_第1页
《C语言课程设计》报告_第2页
《C语言课程设计》报告_第3页
《C语言课程设计》报告_第4页
《C语言课程设计》报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言课程设计》报告题目:机房收费管理系统开发专业年级:通信工程10级学号:姓名:丁观亮指导教师:卢益民同组设计人员:李曦20目录问题定义---------------------------------02二、开发工具---------------------------------05三、数据结构---------------------------------05四、算法描述---------------------------------06五、程序调试情况-----------------------------12六、开发版本历史记录-------------------------15七、心得及体会-------------------------------16八、参考文献或网站---------------------------18问题定义题目:机房收费管理系统(1)输入功能:输入若干名学生的学号、班级、姓名、开始上机时间和结束上机时间。(2)计算功能:计算每个学生的上机费用(计算公式:上机费用=(结束上机时间-开始上机时间)*收费标准,(以分钟为单位))(3)修改功能:修改学生上机的个人档案(如:增添或删除)(4)查询功能:按条件(班级、学号、姓名)查询学生上机信息,并能显示查询学生的相应全部档案。问题分析:1.这是一个设计小型数据管理系统的课题,课题涉及到用户信息的输入,计算,修改,删除,保存等问题。考虑到用户的信息的类型不一,故选择结构体这个混合数据类型来定义用户。其次,为了方便增加和删除用户。故在结构体中增加了指针域,来保存指针信息。这样一来,这个结构体就上升为链表了。在这里,基于系统需要和开发时间的考虑,我最终选择了单向链表。2.基于安全性的考虑,增加了管理员验证登陆部分。并设置了权限。同样,在信息文件保存的部分,增加了加密算法。在文件读取的部分,增加了解密算法。至此,整个系统的安全性得了进一步的提高。保证了平台安全可靠的运行。功能关系图表:开始画面开始画面管理员登陆创建用户查找系统退出修改/删除保存添加管理员源代码声明及全局定义部分://定义标准头文件#include<stdio.h> #include<stdlib.h>#include<string.h>#definePrice0.02 //定义每分钟上网的价格#defineM6 //定义管理员数目#definejimisf03//定义管理员信息加密/解密算法#definejimisf6//定义用户信息加密/解密算法//结构体定义部分//管理员结构体,用来保存管理员信息structmanage{ charzhanghao[18]; charcode[8]; charture_name[18];}man[M];//用户结构体,描述每一个用户的基本属性structstu { charnum[18]; charcla[6]; charname[18]; inttime0[3]; inttime1[3]; doublemoney; structstu*next; //设置指针域};//全局变量定义structmanagetemp0; //定义结构体对象structstu*head=NULL,*p,*p1,*p2,temp; //定义结构体指针及对象FILE*fp; //定义文件指针//定义静态全局变量,用来标识某个阶段是否完成staticintfg,fg1=0,fg2=1,fg3=0,fg4=0,fg5=0; //函数申明部分charinput(); //输入函数,接收一个字符,返回值是输入的字符intjug(charkey); //判断输入字符是否为合法字符intjug1(charnum[]); //判断输入字符串是否为合法字符串intjug2(charcla[]); //判断输入字符串是否为合法字符串intjug3(charname[]); //判断输入字符串是否为合法字符串voidprint(); //按格式打印某个指针结点的全部内容intpassed(); //遍历整个链表,并打印所有信息intpassed1(chara[],charb[],inti);//遍历整个链表voidjiemi0(structmanage*pt); //对管理员信息进行解密voidjiemi(structstu*pt); //对用户的信息进行解密voidman_load(); //读取文件中的管理员账号/密码voidread_user(); //读取文件中的用户信息voidsys_start(); //创建系统开始画面voidmenu(); //创建主菜单voidmenu_reseach(); //创建查询菜单voidmenu_fixed(); //创建修改菜单voidmenu_fixed_user(); //创建修改用户信息菜单voidcreat_user(); //创建新用户voidreseach_user_num(); //按学号查找用户数据voidreseach_user_cla(); //按班级查找用户数据voidreseach_user_name(); //按姓名查找用户数据voidshow_user(); //显示所有用户的信息voidreseach_user(); //查找用户主菜单voidfixed_user_num(); //修改用户学号voidfixed_user_cla(); //修改用户班级voidfixed_user_name(); //修改用户姓名voidfixed_user(); //修改用户主菜单voiduser_delete(); //删除用户voidfixed(); //用户管理主菜单voidjiami0(structmanage*pt);//对管理员信息进行加密voidjiami(structstu*pt);//对用户的信息进行加密,然后保存在文件中voidman_creat(); //创建新管理员voidman_fixed(); //修改管理员信息voidman_manage(); //管理员信息管理voidsaved_user(); //保存用户数据voidexit_save(); //退出保存用户数据voidsys_exit(); //系统退出画面开发工具硬件环境中央处理器:IntelPentium(R)4@2.40GHz(32位)内存:512MB(400MHz)显卡:NVIDIAGeforce@64MB软件环境操作系统:MicrosoftWindowsXP专业版(32位)开发软件:MicrosoftVisualC++6.0SP6企业英文版数据结构主要数据结构类型:结构体+单向链表数据结构类型定义:structmanage//管理员结构体,描述每一个管理员的属性{ charzhanghao[18];//管理员账号 charcode[8];//管理员密码 charture_name[18];//管理员真实姓名}man[M];//定义管理员的个数structstu //用户结构体,描述每一个用户的属性{ charnum[18];//用户学号 charcla[6];//用户班级 charname[18];//用户姓名 inttime0[3];//上机时间 inttime1[3];//下机时间doublemoney;//上机费用 structstu*next; //设置指针域};数据结构类型赋值:1、结构体赋值举例:printf("请输入账号:");gets(man[0].zhanghao);2、链表赋值举例:head=p1=(structstu*)malloc(sizeof(structstu));printf("请输入学号:");gets(p1->num);数据结构类型引用:结构体引用举例:strcmp(name,man[i].zhanghao);链表引用举例:strcmp(p1->num,p->num);注:以上p,p1表示的是指针。算法描述enter注:以下流程图顺序按声明中的顺序enterexitexit非法输入校检算法描述:对错误输入的字符给予提示,并且返回输入。enterenterenterenterexitexitexitexit信息加密算法信息解密算法描述:对准备进行保存的信息,进行加密保存。对准备读取的文件进行解密。两者互为可逆过程。enterenterenterenterexitexitexitexit创建管理员用户算法管理员验证登陆算法描述:对程序进行管理员验证,只能通过验证才能进入系统。exitenterexitenter用户信息加载算法enter描述:对保存在文件里面的信息进行读取,成功返回1,失败返回0。enterexitexit主函数算法描述:创建图形菜单并提供相应的选项。enterenterexitexitenterenterexitexit创建用户算法查找用户算法描述:利用链表指针对成员变量进行赋值。查找用户,利用链表的遍历与其中的变量值进行比较,如果相等返回1,不相等返回0。enterenterexitexitenterenterexitexit修改用户信息算法删除用户算法enter描述:利用链表指针对结点进行遍历,找到相应信息的位置,然后对其进行替换或者删除的操作。enterexitexit信息保存算法描述:对链表结点中的信息进行数据块保存。程序调试调试测试一:创建系统管理员。调试测试二:系统管理员登陆。调试测试三:浏览所有用户信息。调试测试四:查询用户。调试测试五:用户删除。调试测试六:信息保存。开发版本历史记录版本1.0:最初版本系统是用结构体来存储用户。有简单的输入/查找/修改/删除等操作。版本1.1:此版本改进了上一版本中出现信息乱码BUG。版本2.0:考虑到结构体定义方式存储的用户有限,故采用了单向链表来创建用户,引用指针来管理用户。版本2.1:修正了对非法输入的一系列的问题,加入了验证系统。版本2.2:增加了对信息存储到文件和从文件中读取功能。版本2.3(最终版):1-添加了读取文件功能。 2-纠正了对非法输入的问题。 3-更新了界面。 4-加入管理员验证。 5-对输入/输出文件的密码保护。 6-修正错误输入无限循环问题。编程过程中遇到的问题:函数不能进行循环选择:原因:流中的空间已满,不能再次进行输入。解决方案:每次进行读取时,都用fflush(stdin)函数对流进行清除。心得及体会当你历经跋涉,终于站在那“疑似银河落九天”的壮美飞泻千里的瀑布下时,当你穿过荆棘的灌木从,跨过高考那块门槛,那瞬间,曾否拥有说不出的快感和兴奋。油然,经过挖空心思,整天脑海里想的都是C语言的语句,字符串等等的煎熬,终于把自己所想要的结果显示在我面前时,我又感觉到重温高考完后似乎整个人生得于解放的瞬间。现在回顾一个星期以前,当一个星期前的现在,当看到老师布置给我们的这些题目时,我们都蒙了,这么难的题目我们怎么可能会编出来啊,我们都表示不满,抗议,可是一切都是徒劳,我们只能尽我们自己最大的努力把程序给写出来,虽然知道这一路肯定是异常的艰苦,但豁出去了。上网查资料是我们迈开的第一步,看是否有类似的题目,可是泡了几个小时的网吧还是没有,我们失望而回.但是恍然一想,找学姐,学长们传授点经验啊,但是最终还是空手而归.我们真的有点绝望了,但是由于我们此刻有着年轻人的激情,冲动,火力,想了一想,求天求地求人不如求自己,所以我们决定大家在一起共同努力,分配任务去图书馆查找资料.肯定没有现成的,我们只能查相关的函数,经过两三天的努力,我们把框架弄出来了,可是还有计算和闪烁这两大难题摆在我们面前,真的是个难题,自从把框架弄好了以后就没有进展了,眼看几天都快过了,我们那个急啊,可是急也没有用。我们相信我们几个人总归可以搞定,这是我们可以坚持到现在的信念.后来我们不停地总结过去走过的弯路,回想上课时老师怎么教我们构建一个程序,要想构建一个程序,必须要有一个完整的想法,算法,大概的脑海路径,才能完整地创建一个程序。

现在决定重新分配任务,刚开始大家由于分配任务不合理,所以才出现分散的局面,所以决定重新调整.先集中精力把第一个基础程序变出来再编综合题.第一基础程序还是比较简单,终于工夫不负有心人,我们参照类似程序,改改和添添,终于大功告成,我们欢呼我们雀跃,终于相信我们自己是足够的伟大。第一个程序指向指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。N个整数在主函数中输入。最后在主函数中输出。就是定义头文件#include<stdio.h>,然后就是声明函数,对于函数的声明还是有一定的规则的,一般形式有两种,第一种,首先就是函数类型函数名(参数类型1,参数类型2,参数类型3,……参数类型n);第二种就是:函数类型函数名(参数类型1,参数名1,参数名2,参数名3,……,

参数名n);第一种形式是基本形式。为了便于阅读程序,也允许在函数原型中加上参数名,就形成了第二种形式。但是编译系统不检查参数名。因此参数名是什么都无所谓。用函数原型来声明,能减少编写程序时可能出现的错误。由于函数声明的位置与函数调用语句比较近,因此在写程序时便于就近参照函数原型来书

写函数调用,不容易出错。程序中还主要用到循环语句。在许多问题中需要用到循环控制。通常,计机要处理一系列数据,会出现许多重复计算,重复计算过程用循环结构控制。循环结构用于描述在某个条件成立时,重复计算某个计算。循环结构由控制循环的条件和一个重复计算的循环体组成。绝大多数应用程序都包含循环。循环结构是结构化程序设计的基本结构之一,它和顺序结构共同作为各种复杂程序的基本构造单元。因此熟练掌握选择结构和循环结构的概念及使用程序设计的最基本的要求。计算表达式的值,并将实参表达式的值给对应的形参。2.数的局部变量分配内存空间。3.为函数的局部变量分配内存空间。4函数体内的语句序列。5体执行完,或执行了函数体内的ruturn语句(如果ruturn语句带表达式的值,并以此值作为函数返回值)后,释放为这次函数调用分配的全部内存空间。6.数返回值(如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论