酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

C语言实现Windows环境下科研项目信息管理系统:含录入、查询、修改等功能

下面是一个简单的C语言科研项目信息管理系统的实现。这个程序使用了文件来保存项目信息,并提供了菜单驱动的用户界面。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define FILENAME "projects.dat" typedef struct { int id; char name[100]; char leader[50]; char title[50]; char institution[100]; char phone[15]; } Project; void addProject(); void viewProjects(); void searchProject(); void deleteProject(); void modifyProject(); void displayMenu(); int main() { int choice; do { displayMenu(); scanf("%d", &choice); switch (choice) { case 1: addProject(); break; case 2: viewProjects(); break; case 3: searchProject(); break; case 4: deleteProject(); break; case 5: modifyProject(); break; case 6: printf("退出系统。\n"); break; default: printf("无效的选择,请重新选择。\n"); } } while (choice != 6); return 0; } void displayMenu() { printf("\n科研项目信息管理系统\n"); printf("1. 录入项目信息\n"); printf("2. 浏览项目信息\n"); printf("3. 查询项目信息\n"); printf("4. 删除项目信息\n"); printf("5. 修改项目信息\n"); printf("6. 退出系统\n"); printf("请选择操作:"); } void addProject() { Project project; FILE *fp = fopen(FILENAME, "ab"); if (!fp) { printf("无法打开文件。\n"); return; } printf("输入项目编号: "); scanf("%d", &project.id); printf("输入项目名称: "); scanf(" %[^\n]", project.name); printf("输入主持人姓名: "); scanf(" %[^\n]", project.leader); printf("输入主持人职称: "); scanf(" %[^\n]", project.title); printf("输入主持人单位: "); scanf(" %[^\n]", project.institution); printf("输入主持人电话: "); scanf(" %[^\n]", project.phone); fwrite(&project, sizeof(Project), 1, fp); fclose(fp); } void viewProjects() { Project project; FILE *fp = fopen(FILENAME, "rb"); if (!fp) { printf("无法打开文件。\n"); return; } while (fread(&project, sizeof(Project), 1, fp)) { printf("编号: %d, 名称: %s, 主持人: %s, 职称: %s, 单位: %s, 电话: %s\n", project.id, project.name, project.leader, project.title, project.institution, project.phone); } fclose(fp); } void searchProject() { int choice; printf("1. 按主持人姓名查询\n2. 按项目编号查询\n选择查询方式: "); scanf("%d", &choice); if (choice == 1) { char name[50]; printf("输入主持人姓名: "); scanf(" %[^\n]", name); Project project; FILE *fp = fopen(FILENAME, "rb"); if (!fp) { printf("无法打开文件。\n"); return; } while (fread(&project, sizeof(Project), 1, fp) { if (strcmp(project.leader, name) == 0) { printf("编号: %d, 名称: %s, 主持人: %s, 职称: %s, 单位: %s, 电话: %s\n", project.id, project.name, project.leader, project.title, project.institution, project.phone); } } fclose(fp); } else if (choice == 2) { int id; printf("输入项目编号: "); scanf("%d", &id); Project project; FILE *fp = fopen(FILENAME, "rb"); if (!fp) { printf("无法打开文件。\n"); return; } while (fread(&project, sizeof(Project), 1, fp)) { if (project.id == id) { printf("编号: %d, 名称: %s, 主持人: %s, 职称: %s, 单位: %s, 电话: %s\n", project.id, project.name, project.leader, project.title, project.institution, project.phone); } } fclose(fp); } else { printf("无效的选择。\n"); } } void deleteProject() { int id; printf("输入要删除的项目编号: "); scanf("%d", &id); FILE *fp = fopen(FILENAME, "rb"); FILE *temp = fopen("temp.dat", "wb"); if (!fp || !temp) { printf("无法打开文件。\n"); return; } Project project; int found = 0; while (fread(&project, sizeof(Project), 1, fp)) { if (project.id != id) { fwrite(&project, sizeof(Project), 1, temp); } else { found = 1; } } fclose(fp); fclose(temp); remove(FILENAME); rename("temp.dat", FILENAME); if (found) { printf("项目删除成功。\n"); } else { printf("未找到项目。\n"); } } void modifyProject() { int id; printf("输入要修改的项目编号: "); scanf("%d", &id); FILE *fp = fopen(FILENAME, "rb+"); if (!fp) { printf("无法打开文件。\n"); return; } Project project; int found = 0; while (fread(&project, sizeof(Project), 1, fp)) { if (project.id == id) { found = 1; printf("输入新的项目名称: "); scanf(" %[^\n]", project.name); printf("输入新的主持人姓名: "); scanf(" %[^\n]", project.leader); printf("输入新的主持人职称: "); scanf(" %[^\n]", project.title); printf("输入新的主持人单位: "); scanf(" %[^\n]", project.institution); printf("输入新的主持人电话: "); scanf(" %[^\n]", project.phone); fseek(fp, -sizeof(Project), SEEK_CUR); fwrite(&project, sizeof(Project), 1, fp); break; } } fclose(fp); if (found) { printf("项目修改成功。\n"); } else { printf("未找到项目。\n"); } } ``` 额外需要注意的逻辑点: 1. 文件操作时,确保文件正确打开和关闭,避免资源泄露。 2. 在修改和删除操作中,使用临时文件来存储更新后的数据,确保数据完整性。 3. 在用户输入时,考虑输入验证和错误处理,提高程序的健壮性。 ######[AI写代码神器 | 1596点数解答 | 2025-03-04 21:00:50]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]