欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)宿舍管理系統(tǒng)

 更新時間:2022年06月15日 11:13:58   作者:不知名小德  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)宿舍管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)宿舍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

本次大一課設的作品,從空項目開始寫的,全部在txt文件中增改刪。變量命名太土了,代碼格式還有待優(yōu)化,望大佬指點。程序有個缺點就是不能把字符串互相對齊,看著不美觀。mysubstr是參考了論壇某位大佬的代碼,再此感謝。

主界面是這樣的

以下為源代碼: 

#include<stdio.h>
#include<string.h>
#include<process.h>
#include<conio.h>
#define MAX_LINE 1024
#include<malloc.h>
#include <assert.h>
char* mysubstr(char* srcstr, int offset, int length) {
? ? assert(length > 0);
? ? assert(srcstr != NULL);
? ? int total_length = strlen(srcstr);
? ? int real_length = ((total_length - offset) >= length ? length : (total_length - offset)) + 1;
? ? char *tmp;
? ? if (NULL == (tmp=(char*) malloc(real_length * sizeof(char)))) {
? ? ? ? printf("Memory overflow . \n");
? ? ? ? exit(0);
? ? }
? ? strncpy(tmp, srcstr+offset, real_length - 1);
? ? tmp[real_length - 1] = '\0';
?
? ? return tmp;
}?? ?//首先獲取srcstr的長度
? ? //判斷srcstr的長度減去需要截取的substr開始位置之后,剩下的長度
? ? //是否大于指定的長度length,如果大于,就可以取長度為length的子串
? ? //否則就把從開始位置剩下的字符串全部返回。
int open=0,n,house=0;//open為判斷是否登錄的變量,登錄為1否則為0?
void menu(void);
void admin(void);
void student(void);
void house1();
void search(void);?? ?
void clean(void);
void delete1(void);
void sushe(void);
void weisheng(void);
void searweisheng(void);
void checkout(void);
struct student
{
int xuehao;
int sushe;
char name[100];
char zhuanye[100];
};
?
struct clean
{
?? ?int sushe;
?? ?char days[100];
?? ?char time[20];
?? ?char level;
?? ?char fial[20];?? ?
};
int main()
{
int flag=0;
?
menu();
do
{
?? ?flag=1;
?switch(getch())
?? ??? ?{?? ?
?? ??? ??? ?case '1' : system("cls");admin();break; ? ?/*管理員權限*/
?? ??? ??? ?case '2' : system("cls");student();break;?? ?/*學生錄入*/
?? ??? ??? ?case '3' : system("cls");house1();break;?? ?/*宿舍總覽*/
?? ??? ??? ?case '4' :system("cls");weisheng();break;?? ?/*衛(wèi)生總覽*/
?? ??? ??? ?case '5' : system("cls");search();break;?? ?/*查詢系統(tǒng)*/
?? ??? ??? ?case '6' : system("cls");clean();break;?? ??? ?/*衛(wèi)生錄入*/
??? ??? ??? ?case '7' : system("cls"); student();break;?? ??? ?/*添加學生*/
?? ??? ??? ?case '8' : system("cls");delete1();break;?? ?/*刪除學生*/
?? ??? ??? ?case '9' : system("cls");checkout();break;?? ?/*退宿記錄*/?? ?
?? ??? ??? ?case '0' :exit(0); ?? ??? ??? ?/*退出程序*/
?? ??? ??? ?default : printf("輸入有誤\n");
?? ??? ?}
?? ??? ?printf("\n");
?? ??? ?printf("按任意鍵繼續(xù)\n");
?? ??? ?getch();
?? ??? ?menu();
}while(flag==1);
}
void admin()
{
?? ?int account=0,password=0,password_1=0,a=0;
?? ?FILE ?*fread=fopen("amdin.txt","r");
?? ?FILE *fwrite=fopen("amdin.txt","a+");?? ?;
?? ?fscanf(fread,"%*[^\n]");
?? ?fscanf(fread,"%d\t%d",&account,&password);
if(account==0)//fwrite==null
{
printf("未查找到賬號,請創(chuàng)建賬號");?
fprintf(fwrite,"賬號\t密碼\n");
loop:a=scanf("%d%d",&account,&password_1);
if(a==2){
printf("創(chuàng)建成功");
fprintf(fwrite,"%d\t%d",account,password_1);
}else{
printf("創(chuàng)建失敗");
goto loop;
}
}else{
?fscanf(fwrite,"%*[^\n]");
?printf("賬號:");
?fscanf(fwrite,"%d\t",&account);?? ?
?printf("%d",account);
?printf("請輸入密碼");
?scanf("%d",&password);
?fscanf(fwrite,"%d",&password_1);
?if(password_1==password)
{
? open=1;
? printf("登錄成功"); ?
}
?else
?printf("登錄失敗,請檢查密碼是否錯誤"); ?
}
fclose(fread);
fclose(fwrite);
}?
void menu()
{
?? ?system("cls");
?? ?if(open==1)
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ?當前狀態(tài):已登錄 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\n");
?? ?else
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ?當前狀態(tài):未登錄 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\n");
?? ?printf("***************************歡迎進入宿舍管理系統(tǒng)****************************\n");
?? ?printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 菜單 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\n");
?? ?printf("|1--------------------------管理員權限-----------------------------------| \n");
?? ?printf("|2---------------------------學生錄入------------------------------------| \n");
?? ?printf("|3---------------------------宿舍總覽------------------------------------| \n");
?? ?printf("|4---------------------------衛(wèi)生總覽------------------------------------| \n");
?? ?printf("|5---------------------------查詢系統(tǒng)------------------------------------| \n");
?? ?printf("|6---------------------------衛(wèi)生錄入------------------------------------| \n");
?? ?printf("|7---------------------------添加學生------------------------------------| \n");
?? ?printf("|8---------------------------刪除學生------------------------------------| \n");
?? ?printf("|9---------------------------退宿記錄------------------------------------| \n");
?? ?printf("|0---------------------------退出系統(tǒng)------------------------------------| \n");
?? ?printf("***************************************************************************\n");
?? ?printf("--------------------------請輸入您的選擇-----------------------------------\n");
?
}
?
void student()
{
?? ?if(open==1)
{?? ?
?? ?int n,i,k=0;
?? ?char Q;
printf("請輸入需錄入的學生個數(shù)(學號為八位數(shù)?。?);?
scanf("%d",&n);
struct student stu1[n];
printf("學號\t\t學生姓名\t專業(yè)班級\t宿舍號\n");?
for(int i=0;i<n;i++)
{
scanf("%d",&stu1[i].xuehao);
scanf("%s",stu1[i].name);
scanf("%s",stu1[i].zhuanye);
scanf("%d",&stu1[i].sushe);?
}
printf("是否需要保存數(shù)據(jù)?(Y\\N)");
scanf("%s",&Q);
?
?? ?if(Q=='Y')
?? ?{
FILE*baocun=fopen("student.txt","ab+");//保存數(shù)據(jù)?? ?
?? ??? ?//fscanf(baocun,"%*[^\n]");
?? ??? ?fscanf(baocun,"%d",&k);
?? ??? ?fseek(baocun,0,SEEK_SET);
?? ??? ?if(k==0)
?? ??? ?{
?? ??? ?k=1;
?? ??? ?fprintf(baocun,"%d\n",k);?? ?
?? ??? ?fprintf(baocun,"學號\t學生姓名\t專業(yè)班級\t宿舍號\n");?? ?
?? ??? ?for(i=0;i<n;i++)
?? ??? ?fprintf(baocun,"%d\t%s\t%s\t%d\n",stu1[i].xuehao,stu1[i].name,stu1[i].zhuanye,stu1[i].sushe);
?? ??? ?}else{
?? ??? ?
?? ??? ?for(i=0;i<n;i++)
?? ??? ?fprintf(baocun,"%d\t%s\t%s\t%d\n",stu1[i].xuehao,stu1[i].name,stu1[i].zhuanye,stu1[i].sushe);?? ?
?? ??? ?}
?? ??? ?fclose(baocun);
?? ??? ?printf("錄入成功!");?
}
if(Q=='N')
printf?? ?("錄入失?。?);?
}else{
?? ?printf("請先登錄,你還沒有權限!");?
}?? ?
}
?
void house1()
{
?? ?int i,sushe;
?? ?char cx[100];?? ?
FILE*check=fopen("student.txt","r");
fscanf(check,"%*[^\n]");
while(fscanf(check,"%[^\n]",cx)!=EOF)
{?? ?
printf("%s\n",cx);
fgetc(check);
}
fclose(check);
}
?
void sushe()
{
?? ?int p=0;
?? ?char *linshi;
?? ?char sushe[20];//搜索的宿舍號碼?
?? ?char buf[1024];//每次搜索的整行
?? ?char *chuxu=(char*)malloc(10);//需對比的前三項?
?? ??? ?FILE* search=fopen("student.txt","r");
?? ?if(fgets(buf,1024,search)==NULL)
?? ?{
?? ??? ?printf("你還沒有錄入數(shù)據(jù),請先錄入!");?
?? ?}else{
?? ?
?? ?printf("請輸入要搜索的宿舍號");
?? ?scanf("%s",&sushe);
?
?? ?printf("學號\t學生姓名\t專業(yè)班級\t宿舍號\n");//str[]="deheve"
?? ?while(fgets(buf,1024,search)!=NULL)
?? ?{
?? ??? ?p=strlen(buf);
linshi=?? ?mysubstr(buf, p-4, 3);
?
?? ??? ?if(strcmp(linshi,sushe)==0)//開始對比?
?? ??? ?{
?? ??? ??? ?printf("%s",buf);
?? ??? ?
?? ??? ?}
?
?? ?}
?
fclose(search);
}
?
}
?
void clean()
{
int n1,k=0;
char Q;
if(open==1)
{
?? ?printf("請輸入需要錄入的宿舍個數(shù):\n");
?? ?scanf("%d",&n1);
struct clean cleanning[n1];
printf("宿舍號 ?日期 ?具體時間段 ?衛(wèi)生等級 ?是否消毒\n");//等級為ABCD?
for(int n=0;n<n1;n++)
{
?? ?scanf("%d",&cleanning[n].sushe);
?? ?scanf("%s",cleanning[n].days);
?? ?scanf("%s",cleanning[n].time);
?? ?scanf("%s",&cleanning[n].level);
?? ?scanf("%s",cleanning[n].fial);
}
printf("\n");
printf("是否需要保存數(shù)據(jù)(Y\\N)?");
scanf("%s",&Q);
?? ?
if(Q=='Y')
{
??
?? ?FILE * clean=fopen("clean.txt","ab+");
?? ?fscanf(clean,"%d",&k);
?? ?fseek(clean,0,SEEK_SET);
//?? ?printf("%d\n",k);
?? ?if(k==0)
?? ?{
?? ??? ?k=1;
?? ??? ?fprintf(clean,"%d\n",k);?? ?
?? ??? ?fprintf(clean,"宿舍號 ?日期 ?具體時間段 ?衛(wèi)生等級 ?是否消毒\n");?? ?
?? ??? ?for(int i=0;i<n1;i++)
?? ??? ?fprintf(clean,"%d ?%s ?%s ?%c ?%s\n",cleanning[i].sushe,cleanning[i].days,cleanning[i].time,cleanning[i].level,cleanning[i].fial);
?? ??? ?printf("錄入成功!");
?? ?}else{
?? ??? ??? ?fseek(clean,0,SEEK_SET);
?? ??? ?for(int i=0;i<n1;i++)
?? ??? ?fprintf(clean,"%d ?%s ?%s ?%c ?%s\n",cleanning[i].sushe,cleanning[i].days,cleanning[i].time,cleanning[i].level,cleanning[i].fial);
?? ?
?? ??? ?printf("錄入成功!");
?? ?}
?? ??? ?fclose(clean);
?
}
if(Q=='N')
{?? ?
printf?? ?("錄入失敗!"); ?? ?
}
?
}else{
?
printf("你還沒有權限,請先登錄!");
?
}
?
}
void delete1()
{
?? ?if(open==1)
{
FILE *fp,*fp2,*fp3;
char buf[1024];
char out[10];
char xuehao[8];
printf("請輸入要刪除的學生學號:");
scanf("%s",xuehao);
fp=fopen("student.txt","ab+");
fp2=fopen("student2.txt","ab+");
fp3=fopen("quit.txt","ab+");
while(fgets(buf,1024,fp)!=NULL)
{?? ?
?? ?memcpy(out,buf,9);//取buf字符串的前九位再把值賦給out?
?? ?if(strstr(out,xuehao))
?? ?{?? ??? ?
?? ??? ?fprintf(fp3,buf);
?? ??? ?continue;?? ?
?? ?}else{
?? ?fprintf(fp2,buf);
?? ?}?? ?
?? ?}
fclose(fp);
fclose(fp2);
fclose(fp3);
remove("student.txt");
rename("student2.txt","student.txt");
}else{
?? ?printf("你還沒有權限,請先登錄"); ?? ?
}
}
void search()
{
?? ?system("cls");
?? ?printf("*********歡迎進入宿舍管理系統(tǒng)**************\n");
?? ?printf(" ? ? ? ? ? ? ? ? 菜單 ? ? ? ? ? ? ? ? ? ? ? ? ?\n");
?? ?printf("搜索宿舍-------------------------------------1\n");
?? ?printf("搜索衛(wèi)生-------------------------------------2\n");
?? ?switch(getch())
?? ??? ?{?? ?
?? ??? ??? ?case '1' : system("cls");sushe();break;?
?? ??? ??? ?case '2' : system("cls");searweisheng();break;?? ?
?? ??? ??? ?default : printf("輸入有誤\n");
?? ??? ?}?? ?
}
void weisheng()
{
?? ?int i,sushe;
?? ?char cx[100];?? ?
FILE*check=fopen("clean.txt","r");
fscanf(check,"%*[^\n]");
while(fscanf(check,"%[^\n]",cx)!=EOF)
{
printf("%s\n",cx);
fgetc(check);
?
}
fclose(check);
}
?
void searweisheng()
{
?? ?int p=0;
?? ?char *linshi;
?? ?char sushe[20];
?? ?char buf[1024];
?? ?char *chuxu=(char*)malloc(10);
?? ?FILE* search=fopen("clean.txt","r");
?? ?if(fgets(buf,1024,search)==NULL)
?? ?{
?? ??? ?printf("你還沒有錄入數(shù)據(jù),請先錄入!");?
?? ?}else{?? ?
?? ?printf("請輸入要搜索的宿舍號");
?? ?scanf("%s",&sushe);
?? ?printf("宿舍號 ?日期 ?具體時間段 ?衛(wèi)生等級 ?是否消毒\n");
?? ?while(fgets(buf,1024,search)!=NULL)
?? ?{
?? ??? ?p=strlen(buf);
linshi=?? ?mysubstr(buf, 0, 3);
?
?? ??? ?if(strcmp(linshi,sushe)==0)//開始對比?
?? ??? ?{
?? ??? ??? ?printf("%s",buf);?? ?
?? ??? ?}
?
?? ?}
fclose(search);
?
}
?
}
void checkout()
{
char cx[200],buf[1024];?? ?
FILE*check=fopen("quit.txt","r");
fseek(check,0,SEEK_CUR);
printf("學號 ? ? ? 學生姓名 ? ? ?專業(yè)班級 ? ? ?宿舍號\n");?
while(fgets(buf,1024,check))
{
printf("%s",buf);
}
fclose(check);
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 詳解C/C++高精度算法的簡單實現(xiàn)

    詳解C/C++高精度算法的簡單實現(xiàn)

    這篇文章主要為大家詳細介紹了C/C++中高精度算法(加減乘除)的簡單實現(xiàn),方便以后需要時拷貝使用。感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C語言動態(tài)內(nèi)存規(guī)劃詳解

    C語言動態(tài)內(nèi)存規(guī)劃詳解

    這篇文章主要介紹了C語言動態(tài)內(nèi)存的規(guī)劃,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-10-10
  • C++中隱式類型轉換學習筆記

    C++中隱式類型轉換學習筆記

    在本篇文章里小編給大家整理的是一篇關于C++中隱式類型轉換學習筆記內(nèi)容,有興趣的跟著小編來學習下吧。
    2020-02-02
  • C語言實現(xiàn)學生個人消費管理系統(tǒng)

    C語言實現(xiàn)學生個人消費管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言學生個人消費管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++圖文并茂分析講解內(nèi)存管理

    C++圖文并茂分析講解內(nèi)存管理

    本章主要介紹C語言與C++的內(nèi)存管理,以C++的內(nèi)存分布作為引入,介紹C++不同于C語言的內(nèi)存管理方式(new delete對比 malloc free),感興趣的朋友來看看吧
    2022-09-09
  • 判斷指定的進程或程序是否存在方法小結(vc等)

    判斷指定的進程或程序是否存在方法小結(vc等)

    VC判斷進程是否存在?比如我想知道記事本是否運行,要用到哪些函數(shù)等實例,需要的朋友可以參考下
    2013-01-01
  • 關于C++多重繼承下虛表結構的問題

    關于C++多重繼承下虛表結構的問題

    這篇文章主要介紹了C++ 多重繼承下虛表結構的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • MongoDB?C?驅動程序安裝(libmongoc)?和?BSON?庫(libbson)方法

    MongoDB?C?驅動程序安裝(libmongoc)?和?BSON?庫(libbson)方法

    這篇文章主要介紹了安裝?MongoDB?C?驅動程序?(libmongoc)?和?BSON?庫?(libbson),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • C語言模擬實現(xiàn)學生學籍管理系統(tǒng)

    C語言模擬實現(xiàn)學生學籍管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言模擬實現(xiàn)學生學籍管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C++編程面向對象入門全面詳解

    C++編程面向對象入門全面詳解

    這篇文章主要為大家介紹了C++面向對象入門的全面詳解,文章較長非常全面建議收藏閱讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10

最新評論