//个人记账本
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define MAX 50
struct person
{
char name[30];
char code[20];
};
typedef struct node
{
char date[MAX]; //日期
char tip[MAX]; //备注
int in; //收入
int out; //支出
struct node *next;
}count,*Pcount;
void create_person(struct person *p)//创建用户
{/* 将创建的的姓名和密码保存在一个文件中*/
FILE *fp=NULL;
printf("创建姓名:");
scanf("%s",(*p).name);
printf("创建密码:");
scanf("%s",(*p).code);
if(fp=fopen("person.txt","a+"))
{
fprintf(fp,"%s\n",(*p).name);
fprintf(fp,"%s\n",(*p).code);
printf("创建成功!\n");
exit(0);
}
else
{
printf("创建失败!");
getchar();
}
fclose(fp);
}
int enter(struct person *p)//登录函数
{/*姓名密码匹配返回1,不匹配返回0*/
FILE *fp=NULL;
char str_name[30];
char str_code[20];
int flag=0;
printf("输入姓名:");
scanf("%s",(*p).name);
printf("输入密码:");
scanf("%s",(*p).code);
if(fp=fopen("person.txt","r"))
{
while(!feof(fp))
{
fscanf(fp,"%s",str_name);
fscanf(fp,"%s",str_code);
if(strcmp((*p).name,str_name)==0&&strcmp((*p).code,str_code)==0)
{
flag=1;
break;
}
}
if(flag==1)
{
printf("登录成功!\n");
return 1;
}
else
{
printf("账号或密码错误!\n");
return 0;
}
}
else
{
printf("系统错误,请重新登录");
return 0;
}
fclose(fp);
}
void begin() //开始函数
{
int n;
struct person P;
printf("欢迎使用个人记账本!");
getchar();
system("cls");
printf("1.已有账号\n2.注册\n");
scanf("%d",&n);
while(n!=1&&n!=2)//指令选择
{
printf("请输入正确的指令:");
scanf("%d",&n);
}
if(n==1)
{
printf("请登录\n");
enter(&P);
}
else if(n==2)
{
create_person(&P);
}
}
Pcount creat_count(Pcount H)//创建账单链表头结点
{
Pcount p;
H=(Pcount)malloc(sizeof(count));
H->next;
if(p)
{
return H;
H->next=NULL;
}
else
{
printf("创建失败!");
return NULL;
}
}
void add(Pcount c)//记账函数
/*利用单链表记入数据*/
{
Pcount p,q;
p=c->next;
q=(Pcount)malloc(sizeof(count));
}
//主程序
int main()
{
begin();
}
大一C课程设计-个人记账系统
需积分: 0 34 浏览量
更新于2024-03-07
收藏 32KB RAR 举报
【大一C课程设计-个人记账系统】是针对初学者设计的一项编程实践项目,旨在帮助学生通过实际操作深入理解C语言的基础知识和程序设计思维。在这个项目中,学生需要编写一个简单的个人记账系统,这不仅可以提升他们的编程技能,也能让他们在实际应用中体会到编程的乐趣和实用性。
在开发个人记账系统时,学生需要掌握以下几个核心知识点:
1. **基本数据类型与变量**:在C语言中,数据类型包括整型(int)、浮点型(float/double)、字符型(char)等。在记账系统中,可能需要定义不同类型的变量来存储金额、日期等信息。
2. **输入输出函数**:`scanf()` 和 `printf()` 是C语言中最常用的输入输出函数,用于从键盘接收用户输入(如收支金额)并显示相关信息(如账户余额)。
3. **结构体(struct)**:为了更好地组织数据,可以使用结构体来封装多个相关的变量,例如创建一个包含日期、类别、金额的结构体来表示一笔交易记录。
4. **数组与动态内存分配**:如果需要存储多笔交易记录,可以使用数组或动态内存分配(如 `malloc()` 和 `free()`)来创建可变大小的数据存储空间。
5. **循环与条件语句**:在程序中,`for`、`while` 循环和 `if...else` 语句用于根据用户输入和特定条件执行不同的操作,例如遍历交易记录、判断余额是否为正等。
6. **函数(function)**:将程序的不同部分抽象成独立的函数,可以使代码更清晰、更易于维护。例如,可以有专门的函数处理用户输入、计算余额、显示报表等。
7. **文件操作**:为了持久保存数据,需要学习如何使用C语言的文件操作函数(如 `fopen()`、`fwrite()`、`fclose()` 等)读写文件。用户的数据应被安全地保存到磁盘,并在程序启动时自动加载。
8. **错误处理**:在编程过程中,良好的错误处理机制至关重要。学生应学会如何使用 `try...catch` 或返回值来捕获并处理可能出现的异常情况,如无效输入、文件无法打开等。
9. **结构化编程**:遵循“单一职责原则”,确保每个函数都有明确的任务,使得代码易于理解和调试。
10. **代码风格与注释**:良好的编码风格和适当的注释能让代码更易读,有助于团队协作和未来代码的维护。
通过这个项目,学生不仅能巩固C语言基础,还能锻炼问题解决能力和逻辑思维,同时对面向过程的编程思想有更深的理解。在实际操作中,他们可能会遇到各种挑战,但每一次成功解决问题都将带来成就感,激励他们在编程之路上不断前进。

ATiger
- 粉丝: 56
最新资源
- 2022年计算机文化基础必背知识点大全.doc
- 图片优化在搜索引擎中的作用(可编辑修改word版).docx
- 人工神经网络resenaion.pptx
- pyporter-Python资源
- 关于总包工程项目管理的几点看法.doc
- 消石灰堆积密度的算法[最终版].pdf
- 公需课大数据前沿技术及应用.doc
- 数控机床及编程ppt课件.ppt
- 电子商务个人职业生涯规划书.docx
- 网络公司广告范本.doc
- 金蝶财务软件使用说明书.doc
- 基于大数据技术的电子商务个性化推荐系统设计与实现.docx
- 一个不错的智慧城市PPT课件.ppt
- 安装工程师职位说明书生活网络工程公司.doc
- 电信宽带直投网络直投电信弹窗广告.ppt
- 沈阳旅游信息网站毕业论文.doc