学生信息管理系统
来源:互联网 发布:java的applet过时了吗 编辑:程序博客网 时间:2024/06/06 01:45
**
用c语言制作的一个微型学生管理系统
**
#include<stdlib.h>#include<windows.h>#include<string.h>#include<stdio.h>#include <direct.h>#include <io.h>typedef struct{ char S_num[20];//学号 char name[25];//姓名 char sex[5];//性别 long int birthday;//生日 int age;//年龄 char adress[50];//住址 char department[30];//系 char major[20];//专业 int Classes;//班级}Student_information;//学生信息Student_information S_Data[20000];//最多20000个学生数据FILE *fp;void CreateSystemData()//建立文件夹和数据库{ _mkdir("D:\\tem");//新建文件夹 fp = fopen("D:\\tem\\data.dat", "wb");//建立dat数据库 if (fp == NULL)//创建失败 { printf("Create error!\n->>please check your D disk<<-\n"); exit(0); }}void save()//信息录入保存{ int i = 0; if ((fp = fopen("D:\\tem\\data.dat", "wb")) == NULL) { printf("can't open file\n"); exit(0); } while(strcmp(S_Data[i].name, "#") != 0)//将数组中的数据写入磁盘 if (fwrite(&S_Data[i++], sizeof(Student_information), 1, fp) != 1) { printf("file write error!\n"); exit(0); } fwrite(&S_Data[i], sizeof(Student_information), 1, fp); fclose(fp);}void LoadData()//读取文件中的信息{ int i = 0; if ((fp = fopen("D:\\tem\\data.dat", "rb")) == NULL) { printf("can't open file\n"); exit(0); } do { if (fread(&S_Data[i], sizeof(Student_information), 1, fp) != 1)//将磁盘中的数据读入数组中 { printf("file read error!\n"); exit(0); } } while (strcmp(S_Data[i++].name, "#") != 0); fclose(fp);}void add_save(Student_information t_Data[])//追加录入数据{ int i = 0, j = 0; LoadData(); while (strcmp(S_Data[i].name, "#") != 0) i++; while (strcmp(t_Data[j].name, "#") != 0)//将新的数据添加到数组尾 { S_Data[i++] = t_Data[j++]; } S_Data[i] = t_Data[j]; FILE *temp;//新建临时文件保存数据 if ((temp = fopen("D:\\tem\\tempt.dat", "wb")) == NULL) { printf("can't open file\n"); exit(0); } i = 0; while (strcmp(S_Data[i].name, "#") != 0)//数据写入临时文件中 if (fwrite(&S_Data[i++], sizeof(Student_information), 1, temp) != 1) { printf("file write error!\n"); exit(0); } fwrite(&S_Data[i], sizeof(Student_information), 1, temp); fclose(temp); unlink("D:\\tem\\data.dat");//删除原文件 rename("D:\\tem\\tempt.dat", "D:\\tem\\data.dat");//将临时文件改名覆盖到原来的文件}int Search(char num[])//通过学号查找信息返回数组下标失败返回-1{ int i = 0; while (S_Data[i].age != 0) { if (strcmp(num, S_Data[i].S_num) == 0) return i; i++; } return -1;}void Change_Data(){ int op; while (1) { int i = 0; printf("\nIn put number to choose operation:\n1.entering data\t2.change data\t3.another operation\n"); scanf("%d", &op); if (op == 1)//信息录入 { printf("Please entering students' information in order:\n <student name | number | sex | birthday | age | adress | dapartment | major\n | class>\n"); //按顺序输入数据 printf("Finish entering with '#'\n");//以#号结束输入 fp = fopen("D:\\tem\\data.dat", "rb");//读取一个数据以判断文件中有无数据 fread(&S_Data[0], sizeof(Student_information), 1, fp); fclose(fp); if (S_Data[0].age != 0)//有数据则追加输入数据 { Student_information t_Data[100]; i = 0; scanf("%s", t_Data[i].name); while (strcmp(t_Data[i].name, "#") != 0) { scanf("%s", t_Data[i].S_num); scanf("%s", t_Data[i].sex); scanf("%ld %d", &t_Data[i].birthday, &t_Data[i].age); scanf("%s %s %s", t_Data[i].adress, t_Data[i].department, t_Data[i].major); scanf("%d", &t_Data[i].Classes); i++; scanf("%s", t_Data[i].name); } add_save(t_Data); } else//否则从头开始写入数据 { i = 0; scanf("%s", S_Data[i].name); while (strcmp(S_Data[i].name, "#") != 0) { scanf("%s", S_Data[i].S_num); scanf("%s", S_Data[i].sex); scanf("%ld %d", &S_Data[i].birthday, &S_Data[i].age); scanf("%s %s %s", S_Data[i].adress, S_Data[i].department, S_Data[i].major); scanf("%d", &S_Data[i].Classes); i++; scanf("%s", S_Data[i].name); } save(); } } else if (op == 2)//信息修改 { char t_num[25]; int k; LoadData(); printf("Inputting the student's number to change data\n"); scanf("%s", t_num); k = Search(t_num); if (k == -1) printf("Search failed!\n"); else { printf("Inputting new information in order:\n student name | number | sex | birthday | age | adress | dapartment | \nmajor | class\n"); scanf("%s", S_Data[k].name); scanf("%s", S_Data[k].S_num); scanf("%s", S_Data[k].sex); scanf("%ld %d", &S_Data[k].birthday, &S_Data[k].age); scanf("%s %s %s", S_Data[k].adress, S_Data[k].department, S_Data[k].major); scanf("%d", &S_Data[k].Classes); } save(); } else if (op == 3) return; else printf("Input error!\n"); }}void Delete_Data()//删除单项数据信息{ char num[25]; int k = 0, i; LoadData(); printf("Please entering the student's number to delet information:\n"); scanf("%s", num); k = Search(num); if (k == -1) printf("search failed!\n"); else { S_Data[k].age = -1;//将要删除的数据年龄标记为-1 FILE *temp; if ((temp = fopen("D:\\tem\\tempt.dat", "wb")) == NULL) { printf("can't open file\n"); exit(0); } i = 0; while (strcmp(S_Data[i].name, "#") != 0) { if (S_Data[i].age != -1)//将年龄不为-1的数据复制到临时文件中 { if (fwrite(&S_Data[i], sizeof(Student_information), 1, temp) != 1) { printf("file write error!\n"); exit(0); } } i++; } fwrite(&S_Data[i], sizeof(Student_information), 1, temp); fclose(temp); unlink("D:\\tem\\data.dat"); rename("D:\\tem\\tempt.dat", "D:\\tem\\data.dat");//将临时文件覆盖到原文件 }}void Inquire_Data() //查找学生信息{ char num[25]; int k; printf("Please entering student's number to inquire student's information:\n"); scanf("%s", num); k = Search(num); if (k == -1) printf("search failed!\n"); else printf("%-10s %10s %5s %10ld %4d %15s\n%-10s %10s %4d\n", S_Data[k].name, S_Data[k].S_num, S_Data[k].sex, S_Data[k].birthday, S_Data[k].age, S_Data[k].adress, S_Data[k].department, S_Data[k].major, S_Data[k].Classes);}void Output_Data() // 输出学生信息{ int i = 0; LoadData(); while (strcmp(S_Data[i].name, "#") != 0) { printf("%-10s %10s %5s %10ld %4d %15s\n%-10s %10s %4d班\n", S_Data[i].name, S_Data[i].S_num, S_Data[i].sex, S_Data[i].birthday, S_Data[i].age, S_Data[i].adress, S_Data[i].department, S_Data[i].major, S_Data[i].Classes); i++; }}int main(){ int opreation; printf("Welcome to Student Roll management system...\n"); if (access("D:\\tem", 0) != 0)//判断文件是否已经存在 CreateSystemData(); while (1) { printf("\nPlease entering number to choose operation:\n1.Change/entering data\t2.Delete data\t3.Inquire data\t4.Output data\n5.exit system\n");//操作提示 scanf("%d", &opreation); switch (opreation) { case 1: Change_Data(); break; case 2: Delete_Data(); break; case 3: Inquire_Data(); break; case 4: Output_Data(); break; case 5: system("cls"); return 0; default: printf("Input error!\n"); break; } } return 0;}
0 0
- 学生信息管理系统
- 学生学籍信息管理系统
- 学生信息管理系统
- 学生信息管理系统
- 学生成绩信息管理系统
- 学生信息管理系统
- 【学生信息管理系统 总结】
- 学生信息管理系统--毕业论文
- 学生信息管理系统
- 学生信息管理系统
- 学生信息管理系统~~~~~
- 学生信息管理系统
- 学生信息管理系统总结
- 学生信息管理系统
- 学生信息管理系统
- 学生信息管理系统
- netbeans 学生信息管理系统
- 学生信息管理系统
- 使用gulp-uglify压缩js文件
- 中国的“机器人革命”
- 编写具有可维护性的JavaScript代码
- C++常见gcc编译链接错误解决方法
- error C4716: “operator<<”: 必须返回一个值
- 学生信息管理系统
- UIView的clipsToBounds属性和CALayer的masksToBounds属性的比较
- Swift,语法入门学习
- Codeforces Round #197 (Div. 2) -- C. Xenia and Weights (DFS回溯)
- Spring 入门知识储备
- C#笔记_1-动态生成类,程序集
- blog myBlog = new blog()
- Street
- 20160708关于Linux中MYSQL的密码修改