c语言个人财务管理系统[1]

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1页(共15页)个人财政支出管理付欣05计算机四班指导老师:梁新元一、问题描述及分析.......................................................................................................................1二、实验程序设计思想及功能描述...............................................................................................13、主要函数模块的设计思想和具体实现.............................................................................2三、实验程序测试...........................................................................................................................41、程序开始执行时系统的所显示的页面:.........................................................................42、选择退出系统:.................................................................................................................53、选择登陆,并且输入的帐号和密码都正确:.................................................................54、用户输入的帐号不正确:.................................................................................................55、用户输入的帐号正确,密码不正确:.............................................................................6四、实验程序自我评价...................................................................................................................7五、课程设计创新...........................................................................................................................7六、课程设计总结...........................................................................................................................7七、参考书目:...............................................................................................................................7八、实验程序源代码.......................................................................................................................8一、问题描述及分析编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。同时也要求系统能够对不同的用户的身份进行查找和验证。在验证通过之后,在对其进行用户所要求的操作。作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。除此之外,还必须有足够大的空间来存储新的记录。所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。二、实验程序设计思想及功能描述根据前面对于编写一个个人财政支出管理系统的程序的问题描述和分析,确定了此程序的基本思想和相关功能。1、基本思想首先定义一个结构体数组,这个数组的功能便是用来所有用户的所有信息。它的成员为每个用户的帐号(account)、密码(code)、姓名(name)、记录(recordrec[max]),以及记录的条数(rec_len)。其中记录(recordrec[max])这个成员本身也是一个结构体数组。它包含了用户所有的记录(record),并且根据用户的操作,记录这个成员变量也会有所跟改,例如如果拥护增加了一条记录,那么这一条记录就会存储在此成员变量中。除了这个成员变量是动态变化之外,记录的条数(rec_len)也会根据用户的操作进行变化,例如如果用户增加了一条记第2页(共15页)录,则rec_len就会自加1,如果用户删除了一条记录,则rec_len就会自减1。记录(recordrec[max])这个成员变量是以后函数中操作的主要内容。除了这两个成员变量之外,其它的成员变量则不会被改变,系统只允许用户对其进行访问,但不允许进行操作,因为这几个成员变量的作用主要是用来验证用户的身份用的,所以不可以更改。其中的密码(code)甚至只能别系统调用,而不能对用户进行显示的,也就是说密码(code)对于用户是不可预知的,这样做的目的是为了系统自身的安全性,以免用户的信息被其他人看到。这就是这个结构体数组的功能和基本成员变量及各个成员变量的功能。定义了结构体数组之后,首先要做的就是要把所有的记录都存入这个结构体数组中,以方便用户的操作。所以在main函数中有系统自行调用了old_record这个函数来存入信息。在此之后进行的操作便是让用户选择所要进行的是登陆系统的操作还是退出系统的操作。如果选择登陆,则要输入帐号和密码。之后由系统来检查帐号的存在性和密码的正确性。如果这两项都通过了系统的检查,那么用户便可以进行具体记录的操作了。这便是这个程序的基本设计思想。2、各个函数模块的功能(1)old_record():此函数由系统自行调用,作用是将所有用户信息存入系统。(2)voidsave():此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。(3)load():此函数的作用是将结构体数组中写入文件的信息读出,由系统调用。(4)lookup_accounts():此函数的作用是将用户输入的帐号与系统中的所有帐号进行对比,查看系统中是否有此帐号。(5)check_code():此函数是作用是在系统查询到了帐号之后,对用户输入的帐号和密码进行检验,看是否相对应。(6)print_message():此函数的功能是在系统检查了用户输入的帐号和密码之后,如果用户通过了系统的检查,在此显示用户可见的基本信息。(7)find_record():此函数的作用是根据用户输入的日期进行查找操作。(8)insert_record():此函数的功能是在记录中增加一条新的记录,这个记录由用户输入。(9)del_record():此函数的功能是根据用户的输入的位置,将相应位置的记录删除。(10)sum_num():此函数的功能是计算所有收入和支出的总和,计算全部的收入的总合,计算全部输出的总合。(11)打印输出记录的函数:在本程序中一共有三个打印输出记录的函数,分别为all_print()、acc_print()、pay_print()这三个函数。它们的功能依次是打印输出全部记录,打印输出输入记录,打印输出支出记录。(12)mian():在主函数中,可以根据用户的选择来操作系统允许用户使用的功能,也可以随时退出这个系统。3、主要函数模块的设计思想和具体实现(1)voidsave()函数和load()函数。这两个函数的功能是在系统调用了old_record()这个函数之后,结构体内就有了所有用户的所有信息。Save()函数的作用是将所有的信息都存入文件中,便于数据的保存和读取。Load()函数的作用则是把存入的文件中的信息读出来。这两个函数所涉及的知识点为文件的读入和写出。主要是freadhe和fwrite两个函数的应用。它们的一般调用形式为:fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);第3页(共15页)其中:Buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。Size:要读写的字节数。Count:要进行读写多少个size字节的数据项。Fp;文件型指针。调用这两个函数之后,如果调用成功,则函数返回值为count的值,即输入或输出数据项的完整个数。(2)lookup_accounts()函数和check_code()函数:这两个函数的功能主要是用来核对用户的身份。系统先检验的是axxounts这个函数。根据用户输入的帐号与系统中所有的帐号进行比较,查找看是否有相同的。如果找到了,则进行对密码进行检验,看密码与帐号是否对应。在检验帐号的时候,如果用户输入的帐号在系统中不存在,系统则会给出提示要求用户从新输入。但如果用户输入了三次体统都找不到帐号的时候,系统则会强制要求用户退出系统,此时则显示结束语的欢迎词。而如果帐号找到了,但用户输入的密码与原有密码不一致,系统也会给出提示信息要求用户再次输入。同样的,如果用户输入三次体统都检验到不是正确的密码的时候,系统则会强制要求用户退出系统,此时则显示结束语的欢迎词。在这两个函数中主要用到的知识点就是对字符串的相关操作。如果帐号和密码都通过检验之后,此函数则将返回structlist_record类型的数据。字符串处理的函数主要有以下几个:puts函数:其一般形式为puts(字符数组)。其作用是将一个字符串输出到终端。Gets函数:其一般形式为gets(字符数组)。其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。Stract函数:其一般形式为strcat(字符数组1,字符数组2)。Strcat是字符串连接的缩写。其作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。Strcpy函数:其一般形式为strcpy(字符数组1,字符数组2)。Strcpy是字符串复制的简写。它的作用是将字符串2复制到字符数组1中去。在本程序中。用到的最多的便是此函数。strcmp函数:其一般形式为strcmp(字符串1,字符串2)。Strcmp是字符串比较的缩写。它的作用是比较字符串1和字符串2,比较的结果有函数值带回。如果字符串1=字符串2,则函数值为0;如果字符串1大于字符串2,则函数值为一个正整数,否则则为负整数。(3)find_record()函数:此函数的功能是根据用户输入的时间查找当天的记录。这个函数的参数为一个指向结构体的指针和一个字符串。字符串是用语输入的日期,指向结构体的指针指向的则是

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功