程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 驗證碼-c語言,學生信息管理系統。看不懂錯誤提示??

驗證碼-c語言,學生信息管理系統。看不懂錯誤提示??

編輯:編程綜合問答
c語言,學生信息管理系統。看不懂錯誤提示??

#include
#include
#include
#include
#include

#define N 100
typedef struct student
{
int num; //學號,姓名,年齡,性別,出生年月,地址,電話,
char name[18];
char sex;
int age;
int y, m;
int tel;
char add[30];
char mail[20];
int res;
int stu;
} SDate;
int PassWord();
void Menu();
int Input_Choice(); //函數聲明
void Info_Paixu(SDate *student, int n);
void Info_print(SDate *stu, int n);
int Input_file(SDate *stu1);
int Info_Input(SDate *stu, int count);
void Info_Seach(SDate *stu, int n);
void Info_Change(SDate *stu, int n, int Num);
void Exit();
void Print_file(SDate *stu, int n);
int Info_Del(SDate *stu, int n, int del);
void Info_Change(SDate *stu, int res, int choice);
int Info_Add(SDate *stu, int count);
int main()
{
SDate stu[N];
int ret = 0, res = 0, choice = 0;
char ch;
loop:
ret = PassWord(); //登錄函數 默認密碼為admin
if (!ret)
{
system("cls");
printf("\n\t\t密碼錯誤或驗證碼錯誤!\n"); //默認密碼:admin
system("pause");
system("cls");
goto loop;
}
system("cls");
e:
Menu(); //菜單顯示函數
printf("你的選擇是?\n");
scanf_s("%d", &ret);
switch (ret)
{
case 1:
choice = Input_Choice(); //InputChoice()數據輸入方式選擇函數
if (choice == 1)
res = Info_Input(stu, res); //鍵盤輸入函數
else if (choice == 2)
res = Input_file(stu); //文件讀取函數
else
{
system("cls");
goto e;
}
break;
case 2:
if (res == 0)
{
system("cls");
printf("沒有數據輸入,請重新選擇!\n");
goto e;
}
else
Info_print(stu, res);
break;
case 3:
if (res == 0 || res == 1)
{
system("cls");
printf("沒有需要排序數據,請重新選擇!\n");
goto e;
}
else
Info_Paixu(stu, res);
break;
case 4:
Info_Seach(stu, res);
break;
case 5:
res = Info_Add(stu, res);
break;
case 6:
Info_print(stu, res);
printf("輸入學號進行刪除:");
scanf_s("%d", &choice);
res = Info_Del(stu, res, choice);
break;
case 7:
printf("請輸入需要修改的學號:");
scanf_s("%d", &choice);
Info_Change(stu, res, choice);
break;
case 8:
Print_file(stu, res);
break;
case 9:
Exit();
break;
default:
printf("您的選澤有誤!\n");
}
getchar();
printf("返回主菜單重新選擇y/n?");
scanf_s("%c", &ch);
if (ch == 'Y' || ch == 'y')
{
system("cls");
goto e;
}
return 0;
}

int yanzheng() //驗證碼模塊
{
int a, b, c, d;
srand((unsigned)time(NULL));
a = rand() % 100;
b = rand() % 100;
c = a + b;
printf("\n\t **************************\n");
printf("\t\t驗證碼: %d+%d=?\n", a, b);
printf("\t\t 答案為:");
scanf_s("%d", &d);
if (c == d)
return 1;
else
return 0;
}
int PassWord() //登錄模塊
{
int i = 0;
char passWord[18];
char p[] = "admin"; //默認密碼設置
char ch;
printf("\t 歡迎使用學生信息管理系統\n");
printf("\n");
printf("\t\t用戶名:Admin\n");
printf("\n");
printf("\t\t密碼:");
while ((ch = _getch()) != 13)
{
putchar('*');
passWord[i] = ch;
i++;
}
passWord[i] = '\0';
if (strcmp(p, passWord) == 0)
yanzheng();
else
return 0;
}

void Menu() //菜單模塊
{
printf("\t 歡迎使用學生信息管理系統\n");
printf("\n*******************************************\n");
printf("** \t\t1、學生信息錄入\t\t \n");
printf("
\t\t2、學生信息浏覽\t\t \n");
printf("
\t\t3、學生信息排序\t\t \n");
printf("
\t\t4、學生信息查找\t\t \n");
printf("
\t\t5、學生信息添加\t\t \n");
printf("
\t\t6、學生信息刪除\t\t \n");
printf("
\t\t7、學生信息修改\t\t \n");
printf("
\t\t8、學生信息保存\t\t \n");
printf("
\t\t9、退出\t\t\t \n");
printf("
*****************************************\n");
}

int Input_Choice() //數據輸入方式選擇
{
int i;
system("cls");
printf("\t 歡迎使用學生信息管理系統\n");
printf("\t\t1、鍵盤錄入\n");
printf("\t\t2、文件讀取\n");
printf("\t\t0、返回\n");
printf("\t你的選擇是?");
scanf_s("%d", &i);
return i;
}

int Info_Input(SDate *stu, int count) //信息從鍵盤輸入模塊
{
SDate *p;
p = stu;
system("cls");
printf("請輸入第%d個學生學號(輸入0結束):\n", count + 1);
scanf_s("%d", &p->num);
while (p->num != 0)
{
printf("請輸入該學生姓名:\n");
scanf_s("%s", p->name);
printf("請輸入該學生年齡:\n");
scanf_s("%d", &p->age);
getchar();
printf("請輸入該學生性別:\n");
scanf_s("%c", &p->sex);
printf("請輸入該學生出生年月:\n");
scanf_s("%d%d", &p->y, &p->m);
printf("請輸入該學生住址:\n");
scanf_s("%s", p->add);
printf("請輸入該學生聯系電話:\n");
scanf_s("%d", &p->tel);
printf("請輸入該學生E-Mail:\n");
scanf_s("%s", p->mail);
count++;
p++;
system("cls");
printf("請輸入第%d個學生學號(輸入0結束):\n", count);
scanf_s("%d", &p->num);
}
return count;
}

int Input_file(SDate *stu1) //信息從文件輸入模塊
{
int rin = 0;
SDate *p;
FILE *fp;
p = stu1;

if ((fp = fopen_s("StuInfo.txt","r")) == NULL)
    printf("該文件不存在!\n");
while (!feof(fp))
{
    fscanf(fp, "%d %s %c %d %d %d %d %s %s\n", &p->num, p->name, &p->sex, &p->age, &p->y, &p->m, &p->tel, p->add, p->mail);
    p++;
    rin++;
}
fclose(fp);
printf("文件讀取成功!\n");
return rin;

}

void Info_print(SDate *stu, int n) //信息輸出至屏幕模塊
{
SDate *p;
if (n == 0) //學號,姓名,年齡,性別,出生年月,地址,電話,
printf("沒有錄入信息!\n");
else
{
printf("\n以下是%d個同學的信息\n", n);
printf("學號 姓名 性別 年齡 出生年月 電話 地址 E-Mail\n");
for (p = stu; p printf("%d %s %c %d %d-%d %d %s %s\n", p->num, p->name, p->sex, p->age, p->y, p->m, p->tel, p->add, p->mail);
}
}

void Print_file(SDate *stu, int n) //信息保存至文件模塊
{
FILE *fp;
SDate *p;
p = stu;
if ((fp = fopen("StuInfo.txt", "a")) == NULL)
printf("文件讀取失敗!\n");
else
{
for (; p fprintf(fp, "%d %s %c %d %d %d %d %s %s\n", p->num, p->name, p->sex, p->age, p->y, p->m, p->tel, p->add, p->mail);
fclose(fp);
printf("\n保存成功!\n");
}
}

void Info_Paixu(SDate *stu, int n) //學號排序模塊
{
int i, j;
SDate p;
for (i = 0; i {
for (j = 0; j {
if ((stu[j].num)>(stu[j + 1].num))
{
p = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = p;
}
}
}
printf("排序完成!\n");
}

void Exit() //退出模塊
{
printf("謝謝使用!\n");
exit(1);
}

void Info_Seach(SDate *stu, int n) //查詢模塊,目前僅支持學號或姓名的精准查詢
{
int num, choice;
char name[10];
int flag = -1, i;
system("cls");
printf("請輸入查詢方式:\t1、學號查詢\n\t \t2、名字查詢\n");
printf("您的選擇是?");
scanf_s("%d", &choice);
if (choice == 1)
{
lab1:
printf("請輸入需要查找的學號:\n");
scanf_s("%d", &num);
for (i = 0; i<n; i++)
{
if (num == stu[i].num)
{
flag = i;
printf("%d %s %c %d %d-%d %d %s %s\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].y, stu[i].m, stu[i].tel, stu[i].add, stu[i].mail);
}
}
if (flag == -1)
{
printf("未找到!請重新選擇\n");
printf("1、返回繼續查詢\n2、退出查詢,返回主菜單\n3、退出程序你的選擇是?");
scanf_s("%d", &choice);
if (choice == 1)
{
system("cls");
goto lab1;
}
if (choice == 2)
goto end;
else
Exit();
}
}
else if (choice == 2)
{
lab2:
printf("請輸入需要查找的姓名:\n");
scanf_s("%s", name);
for (i = 0; i<n; i++)
if (strcmp(name, stu[i].name) == 0)
{
flag = i;
printf("%d %s %c %d %d-%d %d %s %s\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].y, stu[i].m, stu[i].tel, stu[i].add, stu[i].mail);
}
if (flag == -1)
{
printf("您的輸入有誤!請重新選擇\n");
printf("\t\t1、返回繼續查詢\n\t\t2、退出查詢,返回主菜單\n\t\t3、退出程序\t\t\n你的選擇是?");
scanf_s("%d", &choice);
if (choice == 1)
{
system("cls");
goto lab2;
}
if (choice == 2)
goto end;
else
Exit();
}
}
end:
;
}

void Info_Change(SDate *stu, int n, int Num) //信息修改模塊
{
int i;
for (i = 0; i<n; i++)
if (stu[i].num == Num)
{
printf("請輸入該學生姓名:\n");
scanf_s("%s", stu[i].name);
printf("請輸入該學生年齡:\n");
scanf_s("%d", &stu[i].age);
getchar();
printf("請輸入該學生性別:\n");
scanf_s("%c", &stu[i].sex);
printf("請輸入該學生出生年月:\n");
scanf_s("%d%d", &stu[i].y, &stu[i].m);
printf("請輸入該學生住址:\n");
scanf_s("%s", stu[i].add);
printf("請輸入該學生聯系電話:\n");
scanf_s("%d", &stu[i].tel);
printf("請輸入該學生E-Mail:\n");
scanf_s("%s", stu[i].mail);
printf("學號為%d的同學信息修改完成!\n", Num);
}
}

int Info_Del(SDate *stu, int n, int del) //信息刪除模塊
{
int i, j;
for (i = 0; i<n; i++)
if (stu[i].num == del)
for (j = i; j<n - 1; j++)
stu[j] = stu[j + 1];
n--;
printf("刪除成功!\n");
return n;
}

int Info_Add(SDate *stu, int count) //信息添加模塊
{
SDate *p;
system("cls");
printf("當前共有%d個數據\n", count + 1);
p = stu + (count);
printf("請輸入第%d個學生學號(輸入0結束):\n", count + 1);
scanf_s("%d", &p->num);
while (p->num != 0)
{
printf("請輸入該學生姓名:\n");
scanf_s("%s", p->name);
printf("請輸入該學生年齡:\n");
scanf_s("%d", &p->age);
getchar();
printf("請輸入該學生性別:\n");
scanf_s("%c", &p->sex);
printf("請輸入該學生出生年月:\n");
scanf_s("%d%d", &p->y, &p->m);
printf("請輸入該學生住址:\n");
scanf_s("%s", p->add);
printf("請輸入該學生聯系電話:\n");
scanf_s("%d", &p->tel);
printf("請輸入該學生E-Mail:\n");
scanf_s("%s", p->mail);
count++;
p++;
system("cls");
printf("請輸入第%d個學生學號(輸入0結束):\n", count + 1);
scanf_s("%d", &p->num);
}
return count;
}

最佳回答:


scanf_s("%d", &p->tel);
你這個優先級不對,是先對p取地址了。

別的錯誤懶得看了,你應該貼出錯誤提示來。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved