logo资料库

班级信息管理系统.doc

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
C 语言编写的班级信息管理系统 有 班级信息录入,班级信息查询,班级信息修改,班级信 息全部显示。 录入的信息有:班级 级别 专业 班主任 总人数 男生人数 女生人数。 代码: #include #include #include #include #define NULL 0 #define LEN sizeof(struct student) #define FILE_DATA_PATH "c:\student.txt" struct student { long int num; char name[20]; int age; char sex[4]; char birthday[10]; char address[30]; long int tele_num; char E_mail[20]; struct student *next; }; int TOTAL_NUM = 0; struct student *head = NULL; void welcome(); void mainmenu(); void record(); void insert(struct student *stu); void display(struct student *stu); void displayAll(); void query();
void query_by_num(); void query_by_name(); void readData(); void writeData(); void freeAll(); void del(); void change(); void devise(struct student *p); int main() { char userName[9]; char userPWD[7]; int i; welcome(); for(i = 0; i < 3; i++) { printf("\n 管理员初始用户名和密码均为 admin\n"); printf("请输入您的用户名:"); scanf("%s", userName); printf("\n 请输入您的密码:"); scanf("%s", userPWD); if ((strcmp(userName,"admin")==0) && (strcmp(userPWD,"admin")==0)) { //用户名和密码正确,显示主菜单 mainmenu(); break; } else { if (i < 2) { //用户名或密码错误,提示用户重新输入 printf("用户名或密码错误,请重新输入!"); } else { //连续 3 次输错用户名或密码,退出系统。 printf("您已连续 3 次将用户名或密码输错,系统将退出!"); }
} } return 0; } //显示欢迎信息 void welcome() { printf("+---------------------------+\n"); printf("| |\n"); printf("| 欢迎使用学生信息管理系统 |\n"); printf("| |\n"); printf("+---------------------------+\n"); } //系统主菜单 void mainmenu() { int choice; choice = -1; readData(); printf("\n 温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n"); do { printf("\n\n\n"); printf("\t\t\t--------------------------------\n"); printf("\t\t\t+ 学生信息管理系统 |\n"); printf("\t\t\t--------------------------------\n"); printf("\t\t\t+ [1]----录入学生信息 |\n"); printf("\t\t\t+ [2]----浏览学生信息 |\n"); printf("\t\t\t+ [3]----查询学生信息 |\n"); printf("\t\t\t+ [4]----删除学生信息 |\n"); printf("\t\t\t+ [5]----修改学生信息 |\n"); printf("\t\t\t+ [0]----退出系统 |\n"); printf("\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n"); printf("\t\t\t--------------------------------\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch(choice) { case 0: writeData(); freeAll();
exit(0); case 1: record(); break; case 2: displayAll(); break; case 3: query(); break; case 4: del(); break; case 5: change(); break; default: printf("\n 无效选项!"); break; } } while(choice != 0); } //录入学生信息 void record() { struct student *p0; p0 = (struct student *)malloc(LEN); printf("请输入学生的学号:"); scanf("%ld",&p0->num); printf("请输入学生的姓名:"); scanf("%s",p0->name); printf("请输入学生的年龄:"); scanf("%d",&p0->age); printf("请输入学生的性别:"); scanf("%s",p0->sex); printf("请输入学生的出生年月:"); scanf("%s",p0->birthday); printf("请输入学生的地址:"); scanf("%s",p0->address); printf("请输入学生的电话:");
scanf("%ld",&p0->tele_num); printf("请输入学生的 E-mail:"); scanf("%s",p0->E_mail); insert(p0); printf("该学生的信息为:\n"); printf("-------------------------------------------------------------------------------"); printf("学号\t 姓名\t 年龄\t 性别\t 出生年月\t\t 地址\t 电话\tE-mail\n"); display(p0); } void insert(struct student *stu) { struct student *p0, *p1, *p2; p1 = head; p0 = stu; if(head == NULL) { head = p0; p0->next = NULL; } else { while((p0->num > p1->num)&&(p1->next != NULL)) { p2 = p1; p1 = p1->next; } if(p0->num <= p1->num) { if(head == p1) head = p0; else p2->next = p0; p0->next = p1; } else { p1->next = p0; p0->next = NULL;
} } TOTAL_NUM++; } void display(struct student *p) { printf("%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n", p->num, p->name, p->age, p->sex, p->birthday, p->address, p->tele_num, p->E_mail); } //浏览学生信息 void displayAll() { struct student *p; printf("学生总数:%d\n", TOTAL_NUM); p = head; if(head != NULL) { printf("\n 学号\t 姓名\t 年龄\t 性别\t 出生年月\t 地址\t 电话\tE-mail\n"); printf("-------------------------------------------------------------------------------"); do { display(p); p = p->next; } while(p != NULL); } printf("\n"); } //查询学生信息 void query() { int choice; choice = -1; do { printf("\n"); printf("+--------------------+\n"); printf("| 按学号查询 请按 1 |\n"); printf("| 按姓名查询 请按 2 |\n"); printf("| 取消 请按 0 |\n");
printf("+--------------------+\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch(choice) { case 0: return; case 1: query_by_num(); break; case 2: query_by_name(); break; default: printf("\n 无效选项!"); break; } } while(choice != 0); } //按学号查询学生信息 void query_by_num() { int num; struct student *p1; printf("请输入学生的学号:"); scanf("%ld", &num); if(head==NULL) { printf("无学生记录!\n"); return; } p1=head; while(num!=p1->num && p1->next!=NULL) p1=p1->next; if(num == p1->num) { printf("\n 学号\t 姓名\t 年龄\t 性别\t 出生年月\t 地址\t 电话\tE-mail\n"); printf("-------------------------------------------------------------------------------");
display(p1); } else printf("没有该学生记录,请核对!"); } //按姓名查询学生信息 void query_by_name() { char name[20]; struct student *p1; printf("请输入学生的姓名:"); scanf("%s", name); if(head==NULL) { printf("无学生记录!\n"); return; } p1=head; while(strcmp(name, p1->name) && p1->next!=NULL) p1=p1->next; if(!strcmp(name, p1->name)) { printf("\n 学号\t 姓名\t 年龄\t 性别\t 出生年月\t 地址\t 电话\tE-mail\n"); printf("-------------------------------------------------------------------------------"); display(p1); } else printf("没有该学生记录,请核对!"); } //写入文件 void writeData() { FILE* fp;//文件指针 struct student *p; fp = fopen(FILE_DATA_PATH, "w"); if (!fp) { printf("文件打开错误!"); return;
分享到:
收藏