Add
This commit is contained in:
parent
568ad9ed76
commit
da24001649
65
SIMager.h
Normal file
65
SIMager.h
Normal file
@ -0,0 +1,65 @@
|
||||
//
|
||||
// SIMager.h
|
||||
// SIManager
|
||||
//
|
||||
// Created by Eric on 15-8-16.
|
||||
// Copyright (c) 2015年 Eric. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef SIManager_SIMager_h
|
||||
#define SIManager_SIMager_h
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
#define MAX_NUM 64
|
||||
#define PASSED_MAX 12
|
||||
#define WEIGHT_LENGTH_SQUARE 50
|
||||
#define HEIGHT_LENGTH_SQUARE 4
|
||||
#define MENU_NUM 4
|
||||
#define MENU_WEIGHT 3
|
||||
#define MENU_COMTEST 3
|
||||
#define MENU_1 "1.Add Students Information"
|
||||
#define MENU_2 "2.Search Students Information"
|
||||
#define MENU_3 "3.Delete Students Information"
|
||||
#define MENU_4 "4.Change Password"
|
||||
|
||||
//SYSTEM DIFFERENT (WINNDOWS: Clear = Cls)
|
||||
#define CLEAR system("clear");
|
||||
|
||||
struct _students{
|
||||
char name[12];
|
||||
char class[6];
|
||||
char year[6];
|
||||
char number[28];
|
||||
};
|
||||
struct student{
|
||||
struct _students stu_info;
|
||||
struct student *next;
|
||||
struct student *front;
|
||||
} students;
|
||||
|
||||
typedef struct student stuc;
|
||||
|
||||
void start_printf (int menu_number, char *MENU[]);
|
||||
int add_info (int const max_count);
|
||||
|
||||
int search_info_menu(void);
|
||||
stuc *search_info_read(void);
|
||||
stuc *search_info_name(stuc *head);
|
||||
stuc *search_info_class(stuc *head);
|
||||
stuc *search_info_year(stuc *head);
|
||||
stuc *search_info_number(stuc *head);
|
||||
int delete_info_printf(stuc *head, stuc *r_head);
|
||||
int search_info_printf(stuc *head);
|
||||
|
||||
int delete_data_menu (void);
|
||||
void passwd_set (void);
|
||||
void passwd_pass (void);
|
||||
void menu_main (void);
|
||||
char choice (char *string);
|
||||
|
||||
#endif
|
848
main.c
Normal file
848
main.c
Normal file
@ -0,0 +1,848 @@
|
||||
//
|
||||
// main.c
|
||||
// SIManager
|
||||
//
|
||||
// Created by Eric on 15-7-6.
|
||||
// Copyright (c) 2015年 Eric. All rights reserved.
|
||||
//
|
||||
|
||||
#include "SIMager.h"
|
||||
|
||||
int main(int argc, const char * argv[]) {
|
||||
CLEAR passwd_pass();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//PAINT MENU
|
||||
void start_printf (int menu_number, char *MENU[]){
|
||||
|
||||
for (int i = 0; i < WEIGHT_LENGTH_SQUARE; i++) printf("■");
|
||||
printf("\n");
|
||||
for (int i = 0; i < menu_number; i++ ){
|
||||
printf("■");
|
||||
for (int j = 0; j<MENU_WEIGHT; j++) printf(" ");
|
||||
printf("%s ",*(MENU+i));
|
||||
unsigned long length = strlen(*(MENU+i));
|
||||
for (int j = 0; j < (WEIGHT_LENGTH_SQUARE - (MENU_WEIGHT + length + 3)); j++) printf(" ");
|
||||
printf("■\n");
|
||||
}
|
||||
for (int i = 0; i < WEIGHT_LENGTH_SQUARE; i++) printf("■");
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
//MAIN MENTU PAINT CONTROL
|
||||
void menu_main (void){
|
||||
|
||||
char *MENU[MENU_NUM] = {
|
||||
MENU_1,
|
||||
MENU_2,
|
||||
MENU_3,
|
||||
MENU_4,
|
||||
};
|
||||
while (1){
|
||||
int ifnot = 1;
|
||||
start_printf(4, MENU);
|
||||
while (ifnot == 1){
|
||||
char choices = choice("Please input the number (q to quit): ");
|
||||
int num_stu=0;
|
||||
switch (choices) {
|
||||
case '1':
|
||||
printf("How many students: ");
|
||||
scanf("%d",&num_stu);
|
||||
CLEAR add_info(num_stu);
|
||||
ifnot = 0;
|
||||
break;
|
||||
case '2':
|
||||
CLEAR search_info_menu();
|
||||
ifnot = 0;
|
||||
break;
|
||||
case '3':
|
||||
CLEAR delete_data_menu();
|
||||
ifnot = 0;
|
||||
break;
|
||||
case '4':
|
||||
CLEAR passwd_set();
|
||||
ifnot = 0;
|
||||
break;
|
||||
case 'q':
|
||||
exit(0);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Wrong,try again!\n");
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
CLEAR }
|
||||
|
||||
}
|
||||
|
||||
//RETURN THE CHOICS OF USER
|
||||
char choice (char *string){
|
||||
printf("%s: ",string);
|
||||
char first_choice[MAX_NUM] ,choice = '0';
|
||||
scanf("%s",first_choice);
|
||||
choice = first_choice[0];
|
||||
if (first_choice[1] != '\0') return 'E';
|
||||
return choice;
|
||||
}
|
||||
|
||||
//DEAL WITH PASSWORD
|
||||
void passwd_pass (void){
|
||||
char *LOGIN_MENU[] = {
|
||||
" LOGIN",
|
||||
};
|
||||
start_printf(1, LOGIN_MENU);
|
||||
int count = 0, c_count = 3;
|
||||
char passwd[12];
|
||||
for (int i = 0; i < 12; i++) passwd[i] = 0;
|
||||
while (c_count > 0){
|
||||
count = 0;
|
||||
printf("Input the password (Chance : %d) : ",c_count);
|
||||
char temp = '0';
|
||||
while ((count < PASSED_MAX)&& (temp != '\n')){
|
||||
passwd [count] = getchar();
|
||||
temp = passwd [count];
|
||||
count++;
|
||||
}
|
||||
passwd[--count] = '\0';
|
||||
int pass = 0;
|
||||
char r_passwd[12];
|
||||
FILE *fp = fopen("passwd.db", "r");
|
||||
fscanf(fp,"%s",r_passwd);
|
||||
fclose(fp);
|
||||
if (strcmp(passwd,r_passwd) == 0) pass =1;
|
||||
if (pass == 1){
|
||||
CLEAR menu_main();
|
||||
break;
|
||||
}
|
||||
else {
|
||||
printf("Wrong,try again!\n");
|
||||
c_count--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//ADD STUDENTS INFO
|
||||
int add_info (int const max_count){
|
||||
int *count = (int*) malloc(sizeof(int));
|
||||
int w_ifnot = 0;
|
||||
stuc *head = NULL;
|
||||
*count = 1;
|
||||
stuc *stu = NULL, *stu_last = NULL;
|
||||
struct _students *stu_s;
|
||||
while((*count) <= max_count){
|
||||
w_ifnot = 0;
|
||||
for (int i = 0; i < 20-(*count % 10); i++ ) printf("■");
|
||||
printf("[ %d ] of [ %d ]",*count,max_count);
|
||||
for (int i = 0; i < 20-(*count % 10); i++ ) printf("■");
|
||||
printf("\n");
|
||||
char u_name[12],u_class[6],u_year[6],u_number[28] = "";
|
||||
printf("NAME: ");
|
||||
scanf("%s",u_name);
|
||||
printf("CLASS: ");
|
||||
scanf("%s",u_class);
|
||||
printf("YEAR: ");
|
||||
scanf("%s",u_year);
|
||||
int int_uname = (int)u_name[0], int2_uname = (int)u_name[1];
|
||||
char u1_name[4] = {'0','0','0','\0'}, u2_name[4] = {'0','0','0','\0'};
|
||||
char c_rand[4]={'0','0','0','\0'};
|
||||
for (int i = 2; i >= 0;i--){
|
||||
u1_name[i] = (int_uname%10)+48;
|
||||
int_uname/=10;
|
||||
}
|
||||
for (int i = 2; i >= 0;i--){
|
||||
u2_name[i] = (int2_uname%10)+48;
|
||||
int2_uname/=10;
|
||||
}
|
||||
|
||||
srand((unsigned int)time(0));
|
||||
int int_rand = (rand()%1000);
|
||||
for (int i = 2; i >= 0;i--){
|
||||
c_rand[i] = (int_rand%10)+48;
|
||||
int_rand/=10;
|
||||
}
|
||||
strcat(u_number, u_year);
|
||||
strcat(u_number, u_class);
|
||||
strcat(u_number, u1_name);
|
||||
strcat(u_number, u2_name);
|
||||
strcat(u_number, c_rand);
|
||||
|
||||
printf("NUMBER: %s\n",u_number);
|
||||
for (int i = 0; i < WEIGHT_LENGTH_SQUARE+2; i++ ) printf("■");
|
||||
printf("\n");
|
||||
printf("YES?(y or n): ");
|
||||
char yon = 'y';
|
||||
getchar();
|
||||
scanf("%c",&yon);
|
||||
switch (yon) {
|
||||
case 'y':
|
||||
w_ifnot = 1;
|
||||
break;
|
||||
case '\n':
|
||||
w_ifnot = 1;
|
||||
break;
|
||||
default:
|
||||
w_ifnot = 0;
|
||||
break;
|
||||
}
|
||||
if (w_ifnot == 1){
|
||||
stu = (stuc*) malloc(sizeof(stuc));
|
||||
stu_s = &stu->stu_info;
|
||||
strcpy(stu_s->name,u_name);
|
||||
strcpy(stu_s->class,u_class);
|
||||
strcpy(stu_s->year,u_year);
|
||||
strcpy(stu_s->number,u_number);
|
||||
(*count)++;
|
||||
}
|
||||
if ((head == NULL) && (w_ifnot == 1)){
|
||||
head = stu;
|
||||
stu_last = head;
|
||||
}
|
||||
else if ((head != NULL) && (w_ifnot == 1)){
|
||||
stu_last->next = stu;
|
||||
stu_last = stu;
|
||||
if(*count == max_count) stu->next = NULL;
|
||||
}
|
||||
CLEAR }
|
||||
|
||||
stu = head;
|
||||
FILE *fp;
|
||||
fp = fopen("stuinfo.db", "a+");
|
||||
if (fp == NULL) {
|
||||
printf("ERROR IN OPEN FILE!");
|
||||
return -1;
|
||||
}
|
||||
for (int i = 0; i < max_count; i++){
|
||||
stu_s = &stu->stu_info;
|
||||
fprintf(fp, "%s\n",stu_s->name);
|
||||
fprintf(fp, "%s\n",stu_s->class);
|
||||
fprintf(fp, "%s\n",stu_s->year);
|
||||
fprintf(fp, "%s\n",stu_s->number);
|
||||
stu = stu->next;
|
||||
}
|
||||
|
||||
|
||||
fclose(fp);
|
||||
free(count);
|
||||
//内存泄漏问题();
|
||||
|
||||
//
|
||||
count = NULL;
|
||||
printf("Done,any key to continue...\n");
|
||||
getchar();getchar();
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
//MENU OF SEARCH
|
||||
int search_info_menu(){
|
||||
|
||||
char *SEARCH_MENU[5] = {
|
||||
" SEARCH",
|
||||
"1.NAME",
|
||||
"2.CLASS",
|
||||
"3.YEAR",
|
||||
"4.NUMBER",
|
||||
};
|
||||
start_printf(5, SEARCH_MENU);
|
||||
int ifnot = 1;
|
||||
stuc *head, *s_head;
|
||||
while (ifnot){
|
||||
char choices = choice("Choose the number (q to quit): ");
|
||||
switch(choices){
|
||||
case '1':
|
||||
head = search_info_read();
|
||||
s_head = search_info_name(head);
|
||||
search_info_printf(s_head);
|
||||
ifnot = 0;
|
||||
break;
|
||||
case '2':
|
||||
head = search_info_read();
|
||||
s_head = search_info_class(head);
|
||||
search_info_printf(s_head);
|
||||
ifnot = 0;
|
||||
break;
|
||||
case '3':
|
||||
head = search_info_read();
|
||||
s_head = search_info_year(head);
|
||||
search_info_printf(s_head);
|
||||
ifnot = 0;
|
||||
break;
|
||||
case '4':
|
||||
head = search_info_read();
|
||||
s_head = search_info_number(head);
|
||||
search_info_printf(s_head);
|
||||
ifnot = 0;
|
||||
break;
|
||||
case 'q':
|
||||
ifnot = 0;
|
||||
break;
|
||||
default:
|
||||
printf("Wrong,please try again!\n");
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//READ FILE TO MAKE TABLE
|
||||
stuc *search_info_read(){
|
||||
FILE *fp = fopen("stuinfo.db", "r");
|
||||
if (fp == NULL){
|
||||
printf("ERROR IN OPEN FILE!");
|
||||
return NULL;
|
||||
}
|
||||
stuc *stu = NULL, *head = NULL, *stu_last = NULL;
|
||||
struct _students *stu_s = NULL;
|
||||
stu = (stuc*) malloc(sizeof(stuc));
|
||||
stu_s = &stu->stu_info;
|
||||
while (fscanf(fp,"%s",stu_s->name) != EOF){
|
||||
fscanf(fp, "%s",stu_s->class);
|
||||
fscanf(fp, "%s",stu_s->year);
|
||||
fscanf(fp, "%s",stu_s->number);
|
||||
if (head == NULL){
|
||||
head = stu;
|
||||
stu_last = head;
|
||||
stu->front = NULL;
|
||||
}
|
||||
else {
|
||||
stu_last->next = stu;
|
||||
stu->front = stu_last;
|
||||
stu_last = stu;
|
||||
}
|
||||
stu = (stuc*) malloc(sizeof(stuc));
|
||||
stu_s = &stu->stu_info;
|
||||
}
|
||||
stu->next = NULL;
|
||||
fclose(fp);
|
||||
return head;
|
||||
}
|
||||
|
||||
//SERACH INFO FROM CLASS
|
||||
stuc *search_info_class(stuc *head){
|
||||
printf("CLASS: ");
|
||||
char s_class[6]= {'\0','\0','\0','\0','\0','\0'};
|
||||
scanf("%s",s_class);
|
||||
CLEAR stuc *p_head = head, *s_head = NULL,*s_stu = NULL, *s_stu_last = NULL;
|
||||
struct _students *p_head_s = &p_head->stu_info;
|
||||
struct _students *s_head_s = NULL;
|
||||
p_head_s = &p_head->stu_info;
|
||||
int ifnot = 0;
|
||||
while (p_head != NULL){
|
||||
if (strcmp(p_head_s->class, s_class) == 0){
|
||||
ifnot = 1;
|
||||
s_stu = (stuc*) malloc(sizeof(stuc));
|
||||
s_head_s = &s_stu->stu_info;
|
||||
strcpy(s_head_s->name,p_head_s->name);
|
||||
strcpy(s_head_s->class,p_head_s->class);
|
||||
strcpy(s_head_s->year,p_head_s->year);
|
||||
strcpy(s_head_s->number,p_head_s->number);
|
||||
if(s_head == NULL){
|
||||
s_head = s_stu;
|
||||
s_stu_last = s_head;
|
||||
s_head->front = NULL;
|
||||
}
|
||||
else {
|
||||
s_stu_last->next = s_stu;
|
||||
s_stu->front = s_stu_last;
|
||||
s_stu_last = s_stu;
|
||||
}
|
||||
}
|
||||
p_head = p_head->next;
|
||||
p_head_s = &p_head->stu_info;
|
||||
}
|
||||
if (ifnot){
|
||||
s_stu->next = NULL;
|
||||
}
|
||||
else{
|
||||
return NULL;
|
||||
}
|
||||
return s_head;
|
||||
}
|
||||
|
||||
//SERACH INFO FROM NAME
|
||||
stuc *search_info_name(stuc *head){
|
||||
printf("NAME: ");
|
||||
char s_name[12];
|
||||
scanf("%s",s_name);
|
||||
CLEAR stuc *p_head = head, *s_head = NULL,*s_stu = NULL, *s_stu_last = NULL;
|
||||
struct _students *p_head_s = &p_head->stu_info;
|
||||
struct _students *s_head_s = NULL;
|
||||
p_head_s = &p_head->stu_info;
|
||||
int ifnot = 0;
|
||||
while (p_head != NULL){
|
||||
if (strcmp(p_head_s->name, s_name) == 0){
|
||||
ifnot = 1;
|
||||
s_stu = (stuc*) malloc(sizeof(stuc));
|
||||
s_head_s = &s_stu->stu_info;
|
||||
strcpy(s_head_s->name,p_head_s->name);
|
||||
strcpy(s_head_s->class,p_head_s->class);
|
||||
strcpy(s_head_s->year,p_head_s->year);
|
||||
strcpy(s_head_s->number,p_head_s->number);
|
||||
if(s_head == NULL){
|
||||
s_head = s_stu;
|
||||
s_stu_last = s_head;
|
||||
s_head->front = NULL;
|
||||
}
|
||||
else {
|
||||
s_stu_last->next = s_stu;
|
||||
s_stu->front = s_stu_last;
|
||||
s_stu_last = s_stu;
|
||||
}
|
||||
}
|
||||
p_head = p_head->next;
|
||||
p_head_s = &p_head->stu_info;
|
||||
}
|
||||
if (ifnot){
|
||||
s_stu->next = NULL;
|
||||
}
|
||||
else{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return s_head;
|
||||
}
|
||||
|
||||
|
||||
//SERACH INFO FROM YEAR
|
||||
stuc *search_info_year(stuc *head){
|
||||
|
||||
printf("YEAR: ");
|
||||
char s_year[12];
|
||||
scanf("%s",s_year);
|
||||
CLEAR stuc *p_head = head, *s_head = NULL,*s_stu = NULL, *s_stu_last = NULL;
|
||||
struct _students *p_head_s = &p_head->stu_info;
|
||||
struct _students *s_head_s = NULL;
|
||||
p_head_s = &p_head->stu_info;
|
||||
int ifnot = 0;
|
||||
while (p_head != NULL){
|
||||
if (strcmp(p_head_s->year, s_year) == 0){
|
||||
ifnot = 1;
|
||||
s_stu = (stuc*) malloc(sizeof(stuc));
|
||||
s_head_s = &s_stu->stu_info;
|
||||
strcpy(s_head_s->name,p_head_s->name);
|
||||
strcpy(s_head_s->class,p_head_s->class);
|
||||
strcpy(s_head_s->year,p_head_s->year);
|
||||
strcpy(s_head_s->number,p_head_s->number);
|
||||
if(s_head == NULL){
|
||||
s_head = s_stu;
|
||||
s_stu_last = s_head;
|
||||
s_head->front = NULL;
|
||||
}
|
||||
else {
|
||||
s_stu_last->next = s_stu;
|
||||
s_stu->front = s_stu_last;
|
||||
s_stu_last = s_stu;
|
||||
}
|
||||
}
|
||||
p_head = p_head->next;
|
||||
p_head_s = &p_head->stu_info;
|
||||
}
|
||||
if (ifnot){
|
||||
s_stu->next = NULL;
|
||||
}
|
||||
else{
|
||||
return NULL;
|
||||
}
|
||||
CLEAR return s_head;
|
||||
}
|
||||
|
||||
//SERACH INFO FROM NUMBER
|
||||
stuc *search_info_number(stuc *head){
|
||||
|
||||
printf("NUMBER: ");
|
||||
char s_number[28];
|
||||
scanf("%s",s_number);
|
||||
CLEAR stuc *p_head = head, *s_head = NULL,*s_stu = NULL, *s_stu_last = NULL;
|
||||
struct _students *p_head_s = &p_head->stu_info;
|
||||
struct _students *s_head_s = NULL;
|
||||
p_head_s = &p_head->stu_info;
|
||||
int ifnot = 0;
|
||||
while (p_head != NULL){
|
||||
if (strcmp(p_head_s->number, s_number) == 0){
|
||||
ifnot = 1;
|
||||
s_stu = (stuc*) malloc(sizeof(stuc));
|
||||
s_head_s = &s_stu->stu_info;
|
||||
strcpy(s_head_s->name,p_head_s->name);
|
||||
strcpy(s_head_s->class,p_head_s->class);
|
||||
strcpy(s_head_s->year,p_head_s->year);
|
||||
strcpy(s_head_s->number,p_head_s->number);
|
||||
if(s_head == NULL){
|
||||
s_head = s_stu;
|
||||
s_stu_last = s_head;
|
||||
s_head->front = NULL;
|
||||
}
|
||||
else {
|
||||
s_stu_last->next = s_stu;
|
||||
s_stu->front = s_stu_last;
|
||||
s_stu_last = s_stu;
|
||||
}
|
||||
}
|
||||
p_head = p_head->next;
|
||||
p_head_s = &p_head->stu_info;
|
||||
}
|
||||
if (ifnot){
|
||||
s_stu->next = NULL;
|
||||
}
|
||||
else{
|
||||
return NULL;
|
||||
}
|
||||
CLEAR return s_head;
|
||||
}
|
||||
|
||||
|
||||
//PRINTF THE RESULT OF THE SEARCH
|
||||
int search_info_printf(stuc *head){
|
||||
stuc *p_head = head;
|
||||
int count = 0;
|
||||
if(head == NULL){
|
||||
char *PRINTF_MENU[5] = {
|
||||
" Not Found",
|
||||
};
|
||||
start_printf(1, PRINTF_MENU);
|
||||
printf("Done!(Any key to continue...)");
|
||||
getchar();getchar();
|
||||
CLEAR return 0;
|
||||
};
|
||||
struct _students *p_head_s = &p_head->stu_info;
|
||||
int ifnot = 1;
|
||||
char input = 'e';
|
||||
while (ifnot){
|
||||
if ((input == 'w') && (p_head != NULL)){
|
||||
CLEAR if (p_head->next != NULL){
|
||||
count++;
|
||||
p_head = p_head->next;
|
||||
p_head_s = &p_head->stu_info;
|
||||
}
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("[ %d ]", count);
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("\n");
|
||||
printf("NAME: %s\n",p_head_s->name);
|
||||
printf("CLASS: %s\n",p_head_s->class);
|
||||
printf("YEAR: %s\n",p_head_s->year);
|
||||
printf("NUMBER: %s\n",p_head_s->number);
|
||||
for (int i = 0; i < WEIGHT_LENGTH_SQUARE-7; i++ ) printf("■");
|
||||
printf("\n");
|
||||
}
|
||||
else if ((input == 's') && (p_head != NULL)){
|
||||
CLEAR if (p_head->front != NULL){
|
||||
p_head = p_head->front;
|
||||
p_head_s = &p_head->stu_info;
|
||||
count--;
|
||||
}
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("[ %d ]", count);
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("\n");
|
||||
printf("NAME: %s\n",p_head_s->name);
|
||||
printf("CLASS: %s\n",p_head_s->class);
|
||||
printf("YEAR: %s\n",p_head_s->year);
|
||||
printf("NUMBER: %s\n",p_head_s->number);
|
||||
for (int i = 0; i < WEIGHT_LENGTH_SQUARE-7; i++ ) printf("■");
|
||||
printf("\n");
|
||||
}
|
||||
else if ((input == 'e') && (p_head != NULL)){
|
||||
count++;
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("[ %d ]", count);
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("\n");
|
||||
printf("NAME: %s\n",p_head_s->name);
|
||||
printf("CLASS: %s\n",p_head_s->class);
|
||||
printf("YEAR: %s\n",p_head_s->year);
|
||||
printf("NUMBER: %s\n",p_head_s->number);
|
||||
for (int i = 0; i < WEIGHT_LENGTH_SQUARE-7; i++ ) printf("■");
|
||||
printf("\n");
|
||||
}
|
||||
else{
|
||||
|
||||
}
|
||||
|
||||
if ((p_head->front == NULL) && (input != 'q')){
|
||||
printf("■:This is the first element in the list.\n");
|
||||
}
|
||||
|
||||
if ((p_head->next == NULL) && (input != 'q')){
|
||||
printf("■:This is the last element of the list.\n");
|
||||
}
|
||||
|
||||
getchar();
|
||||
printf("INPUT: w:Page down s:Page up q:Quit\n");
|
||||
printf("INPUT: ");
|
||||
input = getchar();
|
||||
|
||||
if (input == 'q'){
|
||||
ifnot = 0;
|
||||
}
|
||||
}
|
||||
|
||||
printf("Done,any key to continue...\n");
|
||||
getchar();getchar();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void passwd_set (void){
|
||||
CLEAR printf("Please enter the administrator password: ");
|
||||
char o_passwd[12];
|
||||
scanf("%s",o_passwd);
|
||||
FILE *fp = fopen("passwd.db","r");
|
||||
char r_passwd[12];
|
||||
fscanf(fp,"%s",r_passwd);
|
||||
fclose(fp);
|
||||
if(strcmp(o_passwd, r_passwd) == 0 ){
|
||||
int ifnot = 1;
|
||||
while (ifnot) {
|
||||
printf("Input the new password: ");
|
||||
char n_passwd[12];
|
||||
scanf("%s",n_passwd);
|
||||
printf("Input the new password again: ");
|
||||
char n2_passwd[12];
|
||||
scanf("%s",n2_passwd);
|
||||
if(strcmp(n2_passwd, n_passwd) == 0){
|
||||
fp = fopen("passwd.db", "w");
|
||||
fprintf(fp,"%s",n_passwd);
|
||||
fclose(fp);
|
||||
ifnot = 0;
|
||||
printf("Done,any key to continue...");
|
||||
getchar();getchar();
|
||||
CLEAR }
|
||||
else{
|
||||
printf("Not the same!(Any key to continue...)");
|
||||
getchar();getchar();
|
||||
CLEAR }
|
||||
|
||||
}
|
||||
}
|
||||
else{
|
||||
printf("Wrong!(Any key to continue...)");
|
||||
getchar();getchar();
|
||||
CLEAR }
|
||||
|
||||
}
|
||||
|
||||
|
||||
int delete_data_menu (void){
|
||||
CLEAR char *DELETE_MENU[5]={
|
||||
" Delete From",
|
||||
"1.Name",
|
||||
"2.Class",
|
||||
"3.Year",
|
||||
"4.Number"
|
||||
};
|
||||
|
||||
start_printf(5, DELETE_MENU);
|
||||
int ifnot = 1;
|
||||
stuc *head, *s_head;
|
||||
while (ifnot){
|
||||
char choices = choice("Choose the number (q to quit): ");
|
||||
switch(choices){
|
||||
case '1':
|
||||
head = search_info_read();
|
||||
s_head = search_info_name(head);
|
||||
delete_info_printf(s_head, head);
|
||||
ifnot = 0;
|
||||
break;
|
||||
case '2':
|
||||
head = search_info_read();
|
||||
s_head = search_info_class(head);
|
||||
delete_info_printf(s_head, head);
|
||||
ifnot = 0;
|
||||
break;
|
||||
case '3':
|
||||
head = search_info_read();
|
||||
s_head = search_info_year(head);
|
||||
delete_info_printf(s_head, head);
|
||||
ifnot = 0;
|
||||
break;
|
||||
case '4':
|
||||
head = search_info_read();
|
||||
s_head = search_info_number(head);
|
||||
delete_info_printf(s_head, head);
|
||||
ifnot = 0;
|
||||
break;
|
||||
case 'q':
|
||||
ifnot = 0;
|
||||
break;
|
||||
default:
|
||||
printf("Wrong,please try again!\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//PRINTF THE RESULT OF THE SEARCH
|
||||
int delete_info_printf(stuc *head, stuc *r_head){
|
||||
if(head == NULL){
|
||||
char *PRINTF_MENU[5] = {
|
||||
" Not Found",
|
||||
};
|
||||
start_printf(1, PRINTF_MENU);
|
||||
printf("Done!(Any key to continue...)");
|
||||
getchar();getchar();
|
||||
CLEAR return 0;
|
||||
}
|
||||
stuc *p_head = head;
|
||||
int count = 1;
|
||||
struct _students *p_head_s = &p_head->stu_info;
|
||||
int ifnot = 1;
|
||||
char input = 'e';
|
||||
while (ifnot){
|
||||
int e_ifnot = 0;
|
||||
if ((input == 'w') && (p_head != NULL)){
|
||||
CLEAR if (p_head->next != NULL){
|
||||
count++;
|
||||
p_head = p_head->next;
|
||||
p_head_s = &p_head->stu_info;
|
||||
}
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("[ %d ]", count);
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("\n");
|
||||
printf("NAME: %s\n",p_head_s->name);
|
||||
printf("CLASS: %s\n",p_head_s->class);
|
||||
printf("YEAR: %s\n",p_head_s->year);
|
||||
printf("NUMBER: %s\n",p_head_s->number);
|
||||
for (int i = 0; i < WEIGHT_LENGTH_SQUARE-7; i++ ) printf("■");
|
||||
printf("\n");
|
||||
}
|
||||
else if ((input == 's') && (p_head != NULL)){
|
||||
CLEAR if (p_head->front != NULL){
|
||||
p_head = p_head->front;
|
||||
p_head_s = &p_head->stu_info;
|
||||
count--;
|
||||
}
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("[ %d ]", count);
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("\n");
|
||||
printf("NAME: %s\n",p_head_s->name);
|
||||
printf("CLASS: %s\n",p_head_s->class);
|
||||
printf("YEAR: %s\n",p_head_s->year);
|
||||
printf("NUMBER: %s\n",p_head_s->number);
|
||||
for (int i = 0; i < WEIGHT_LENGTH_SQUARE-7; i++ ) printf("■");
|
||||
printf("\n");
|
||||
}
|
||||
else if ((input == 'e') && (p_head != NULL)){
|
||||
p_head_s = &p_head->stu_info;
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("[ %d ]", count);
|
||||
for (int i = 0; i < 20-(count % 10); i++ ) printf("■");
|
||||
printf("\n");
|
||||
printf("NAME: %s\n",p_head_s->name);
|
||||
printf("CLASS: %s\n",p_head_s->class);
|
||||
printf("YEAR: %s\n",p_head_s->year);
|
||||
printf("NUMBER: %s\n",p_head_s->number);
|
||||
for (int i = 0; i < WEIGHT_LENGTH_SQUARE-7; i++ ) printf("■");
|
||||
printf("\n");
|
||||
}
|
||||
else if (input == 'd'){
|
||||
stuc *p_front, *p_next, *pr_head = r_head;
|
||||
struct _students *r_head_s;
|
||||
while(pr_head != NULL){
|
||||
r_head_s = &pr_head->stu_info;
|
||||
if (strcmp(r_head_s->number, p_head_s->number) == 0) {
|
||||
p_front = pr_head->front;
|
||||
p_next = pr_head->next;
|
||||
if (p_front != NULL){
|
||||
p_front->next = p_next;
|
||||
}
|
||||
if (p_next != NULL){
|
||||
p_next->front = p_front;
|
||||
}
|
||||
if (p_front == NULL){
|
||||
pr_head = p_next;
|
||||
r_head = pr_head;
|
||||
}
|
||||
pr_head = NULL;
|
||||
}
|
||||
else{
|
||||
pr_head = pr_head->next;
|
||||
}
|
||||
}
|
||||
if (p_head != NULL){
|
||||
p_front = p_head -> front;
|
||||
p_next = p_head -> next;
|
||||
if (p_front != NULL){
|
||||
p_front->next = p_next;
|
||||
}
|
||||
if (p_next != NULL){
|
||||
p_next->front = p_front;
|
||||
}
|
||||
if (p_next == NULL){
|
||||
p_head = p_front;
|
||||
count--;
|
||||
}
|
||||
else if(p_front == NULL){
|
||||
p_head = p_next;
|
||||
count++;
|
||||
}
|
||||
else if((p_front == NULL) && (p_next == NULL)){
|
||||
p_head = NULL;
|
||||
}
|
||||
else{
|
||||
p_head = p_head -> next;
|
||||
}
|
||||
e_ifnot = 1;
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
||||
}
|
||||
|
||||
if ((e_ifnot == 0) && (p_head != NULL)) {
|
||||
if ((p_head->front == NULL) && (input != 'q')){
|
||||
printf("■:This is the first element in the list.\n");
|
||||
}
|
||||
if ((p_head->next == NULL) && (input != 'q')){
|
||||
printf("■:This is the last element of the list.\n");
|
||||
}
|
||||
getchar();
|
||||
printf("INPUT: w:Page down s:Page up d:delete q:Quit\n");
|
||||
printf("INPUT: ");
|
||||
input = getchar();
|
||||
}
|
||||
if ((e_ifnot == 1) && (p_head != NULL)){
|
||||
input = 'e';
|
||||
CLEAR }
|
||||
|
||||
if (input == 'q' ){
|
||||
ifnot = 0;
|
||||
}
|
||||
|
||||
if(p_head == NULL){
|
||||
char *PRINTF_MENU[5] = {
|
||||
" Not Found",
|
||||
};
|
||||
start_printf(1, PRINTF_MENU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
FILE *fp = fopen("stuinfo.db", "w");
|
||||
if (fp == NULL) {
|
||||
printf("ERROR IN OPEN FILE!");
|
||||
return -1;
|
||||
}
|
||||
stuc *prf_head = r_head;
|
||||
struct _students *rf_head_s;
|
||||
while (prf_head != NULL){
|
||||
rf_head_s = &prf_head->stu_info;
|
||||
fprintf(fp, "%s\n", rf_head_s->name);
|
||||
fprintf(fp, "%s\n", rf_head_s->class);
|
||||
fprintf(fp, "%s\n", rf_head_s->year);
|
||||
fprintf(fp, "%s\n", rf_head_s->number);
|
||||
prf_head = prf_head->next;
|
||||
}
|
||||
|
||||
printf("Done,any key to continue...\n");
|
||||
fclose(fp);
|
||||
getchar();getchar();
|
||||
return 0;
|
||||
}
|
||||
//End of program
|
Loading…
Reference in New Issue
Block a user