当Recordcount返回-1时怎样计算记录数目(转)

本文介绍在ASP中如何利用ADO(ActiveX Data Objects)技术直接从数据库中获取记录总数,无需遍历所有记录。通过创建ADO Recordset对象并打开静态只读游标,可以直接调用.RecordCount属性获取特定表的记录数量。
' BEGIN CONSTANT DEFINITION

' The following command includes the ADODB VBScript
constants file.
' If you can't find your copy you can download a copy from:
' http://www.asp101.com/samples/download/adovbs.inc
' It may not be the most recent copy so use it at your own
risk.

%>
<!-- #INCLUDE FILE="./download/adovbs.inc" --&gt

' DB Configuration variables
' After this, strictly used as if it were a Const.
Dim DB_CONNSTRING
DB_CONNSTRING = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & Server.Mappath("./db_scratch.mdb") & ";"

' Now we override the above setting so the sample uses our
SQL server.
' Comment out the following line to use the sample Access
DB.
DB_CONNSTRING = Application("SQLConnString") & _
"UID=" & Application("SQLUsername") & ";" & _
"PWD=" & Application("SQLPassword") & ";"

' END CONSTANT DEFINITION
%>

Dim rsCount ' The recordset object

' Create an instance of an ADO Recordset
Set rsCount = Server.CreateObject("ADODB.Recordset")

' Open RS
' I'm actually doing this directly (without a connection object) to
keep
' the code short and to the point. I'm opening the RS with a static
' cursor, read only, and telling it that "scratch" is a table name and
' not a SQL command. If I don't specify how to open the rs, I'd get
the
' default cursor type which doesn't support .RecordCount!
rsCount.Open "scratch", DB_CONNSTRING, adOpenStatic, adLockReadOnly,
adCmdTable

' Show RecordCount
' I dress it up and pop it into the middle of a sentence, but you can
' do whatever you want with it.
Response.Write "This table currently has "
Response.Write rsCount.RecordCount ' This is the line that does it!
Response.Write "
records in it!
" & vbCrLf


'=====================================================================
=
' BEGIN TABLE DISPLAY
' Now I'm going to display the table if they requested it just so you
' have something to look at! This really doesn't pertain to the topic
' of this sample so I'm going to keep the code short but feel free to
' look it over and if you do please notice the pretty HTML it outputs!
' Ugly HTML output is a pet peeve of mine! ;)
If LCase(Request.QueryString("showtable")) = "true" Then
Dim Field ' Field Looper for display
Dim bColor ' Use for showing alternating colors
bColor = False

' Spacers and intro
Response.Write "
" & vbCrLf & "They are:
" & vbCrLf
& "
" & vbCrLf

' Start the table
Response.Write "

' Write Titles
Response.Write vbTab & "

" & vbCrLf
For Each Field in rsCount.Fields
Response.Write vbTab & vbTab & "BGCOLOR=""#CCCCCC""> " & Field.Name & "" & vbCrLf
Next 'Field
Response.Write vbTab & "" & vbCrLf

' Loop through records outputting data
Do While Not rsCount.EOF
Response.Write vbTab & "

" & vbCrLf
For Each Field in rsCount.Fields
Response.Write vbTab & vbTab & "BGCOLOR="""

' Decide what color to output
If bColor Then
Response.Write "#CCCCFF" '
Light blueish
Else
Response.Write "#FFFFFF" ' White
End If

Response.Write """>" & Field.Value
& "" & vbCrLf
Next 'Field
Response.Write vbTab & "

" & vbCrLf

' Toggle our colors
bColor = Not bColor
rsCount.MoveNext
Loop

' End the table
Response.Write "

" & vbCrLf
Response.Write "
Hide the
table
" & vbCrLf
Else
Response.Write "
showtable=true"">Show the table" & vbCrLf
End If
' END TABLE DISPLAY - Now back to our regularly scheduled code!
'=====================================================================
=

' Close and dispose of recordset object
rsCount.Close
Set rsCount = Nothing
%>


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-124471/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-124471/

程序主要内容 考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。试设计一考勤管理系统,使之能提供以下功能: 1.录入学生的缺课记录; 2. 修改某个学生的缺课记录; 3. 查询某个学生的缺课情况; 4. 统计某段间内,旷课学生姓名及旷课次,按旷课次由多到少排序; 5.统计某段间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序; 6.系统以菜单方式工作。 具体要求如下: 1、采取模块化方式进行程序设计,要求程序的功能设计、据结构设计及整体结构设计合理。学生也可根据自己对题目的理解增加新的功能模块(视情况可另外加分)。 2、系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行。 3、程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试据无误,容错性强(能对错误输入进行判断控制)。 4、编程风格良好(包括缩进、空行、适当注释、变量名和函名见名知意,程序容易阅 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <time.h> #define NAME 20 #define SEX 10 #define KDAYS 20 #define ADDR 30 #define NUMBER 12 #define DAK 10 #define SCHOOL 30 #define STUDENTMAX 1000; //学生最大人 #define PASSWORD "198877" //系统登录密码 /************************学生信息结构体**********************/ struct studentinfo //学生个人信息结构 { char name [NAME]; //学生姓名 char sex [SEX]; //学生性别 char kdays [KDAYS]; //旷课日期 char addr [ADDR]; //旷课科目 char number [NUMBER]; //学生学号 char dak [DAK]; //旷课数目 char school[SCHOOL]; }; //所在学校班级 struct allstudentinfo //学生全部结构 { struct studentinfo student; }; FILE *infofile=NULL; //存学生个人信息据文件 char filename[]="c:\\学生个人信息登记.dat"; //记录个人信息登记 /************************函块声明****************************/ void password(); //密码验证 int showmeun(); //系统主菜单显示 int submeun(); //子菜单显示 void submain(struct allstudentinfo *); //子系统 void inputinfo(struct allstudentinfo *); //输入学生个人信息 void modinfo(struct allstudentinfo *); //修改个人信息 void aboutinfo(struct allstudentinfo *); //查询个人信息 void allabout(struct allstudentinfo *); //查询所有信息 void delinfo(struct allstudentinfo *); //删除个人信息 void mofname(struct allstudentinfo *); //修改姓名 void mofsex(struct allstudentinfo *); //修改性别 void mofbirth(struct allstudentinfo *); //修改旷课日期 void mofaddr(struct allstudentinfo *); //修改旷课科目 void moftel(struct allstudentinfo *); //修改学生学号 void mofdak(struct allstudentinfo *); //修改旷课数目 void mofschool(struct allstudentinfo *); //修改所在班级 int datfile(struct allstudentinfo *); //处理修改个人信息的文件 void systemhelp(); //系统帮助信息 void logout(); //退出系统 void main() { struct allstudentinfo studentmax[STUDENTMAX]; //最大学生人 struct allstudentinfo *p_student; //指向结构指针 int in; time_t start,end; p_student=studentmax; //指向结构体 password(); //获取学生密码验证 do { system("cls"); in=showmeun(); //系统主菜单显示 switch(in) { case 1 : submain(p_student); break; case 2 : systemhelp(); break; case 3 : logout(); break; default: printf("没有此选项,请按任意键返回重新选择!"); getch(); system("cls"); break; } }while(in!=4); } /************************子系统*******************************/ void submain(struct allstudentinfo *p_student) { int in; do { system("cls"); in=submeun(); //子菜单显示 switch(in) { case 1 : inputinfo(p_student); //输入个人信息 break; case 2 : modinfo(p_student); //修改个人信息 break; case 3 : aboutinfo(p_student); //查询个人信息 break; case 4 : allabout(p_student); //查询所有信息 break; case 5 : delinfo(p_student); //删除个人信息 break; case 6 : break; default: printf("没有此选项。请您重新输入(1-5)"); getch(); system("cls"); break; } } while(in!=6); system("cls"); } /************************密码验证*****************************/ void password() { char *pass=NULL; //初始化指针 int count; time_t start,end; //间函 pass=(char *)malloc(255*sizeof(char)); //分配内存 while(1) { count=0; printf("\n\n\n\n\n\t\t 学生信息管理系统 \n\n\n\n"); printf("\n\t\t 学生名:李小白 \n"); printf("\n\t\t 密 码:"); while((count>=0)&&(pass[count++]=getch())!=13) //密码输入 { if(pass[0]=='\b') { count=0; continue; } else if(pass[count-1]=='\b') { printf("%c%c%c",'\b','\0','\b'); count-=2; } else putchar('*'); } pass[--count]='\0'; if(!strcmp(pass,PASSWORD)) //开始验证 { system("cls"); printf("\n\n\n\n\n\n\n\n\n\t\t\t"); printf(" 欢 迎 登 陆 学 生 信 息 管 理 系 统 !"); start=time(NULL); end=time(NULL); while(end-start<1) //延1秒执行以下程序 { end=time(NULL); } system("cls"); free(pass); //释放储存密码的内存 return ; } free(pass); //释放密码错误的那块内存 pass=(char *)malloc(255*sizeof(char)); //重新分配储存密码内存 system("cls"); printf("\a\n\n\n\n\n\n\n\n\t\t\t\t密 码 错 误 !"); getch(); system("cls"); } } /***********************系统主菜单************************/ int showmeun() { int in; char ch; printf("\n\n\n\n"); printf("\t ╭————————————————————————————╮\n"); printf("\t ∣ 『学生个人旷课信息管理系统』 ∣\n"); printf("\t  |--------------------------------------------------------|\n"); printf("\t |      1. 学生个人信息管理         |\n"); printf("\t |                             |\n"); printf("\t |      2. 关于本系统帮助            |\n"); printf("\t |                            | \n"); printf("\t |      3. 退 出 系 统            |\n"); printf("\t |                             |\n"); printf("\t ╰————————————————————————————╯\n"); printf("\t 请您正确选择:"); while(scanf("%d",&in)!=1) {while((ch=getchar())!='\n') putchar(ch); return in;} fflush(stdin); return in; } /***********************个人信息子菜单*************************/ int submeun() { int in; char ch; system("cls"); printf("\n\n\n"); printf("\t\t╭————————————————————————————╮\n"); printf("\t\t|       『学生个人信息管理系统』       |\n"); printf("\t \t|--------------------------------------------------------|\n"); printf("\t\t|        1.录入旷课信息          |\n"); printf("\t\t|                      |\n"); printf("\t\t|        2.修改旷课信息     |\n"); printf("\t\t|                      |\n"); printf("\t\t|        3.查询旷课信息       |\n"); printf("\t\t|                        |\n"); printf("\t\t|        4.浏览所有信息     |\n"); printf("\t\t|                        |\n"); printf("\t\t|        5.删除旷课信息        |\n"); printf("\t\t|                        |\n"); printf("\t\t|        6.退出系统          |\n"); printf("\t\t╰————————————————————————————╯\n"); printf("\t\t 请您正确选择:"); while(scanf("%d",&in)!=1) { while((ch=getchar())!='\n') putchar(ch); return 0; } fflush(stdin); return in; } /***************************修改个人信息子菜单************************/ void modinfo(struct allstudentinfo *p_student) { int in; char ch; do { system("cls"); printf("\n\n\n"); printf("\t\t╭————————————————————————————╮\n"); printf("\t\t|         『个人信息修改管理』       |\n"); printf("\t \t|--------------------------------------------------------|\n"); printf("\t\t|        1.修改学生姓名           |\n"); printf("\t\t|                        |\n"); printf("\t\t|        2.修改学生性别           |\n"); printf("\t\t|                        |\n"); printf("\t\t|        3.修改旷课日期           |\n"); printf("\t\t|                        |\n"); printf("\t\t|        4.修改旷课科目           |\n"); printf("\t\t|                        |\n"); printf("\t\t|        5.修改学生学号           |\n"); printf("\t\t|                        |\n"); printf("\t\t|        6.修改旷课节           |\n"); printf("\t\t|                        |\n"); printf("\t\t|        7.修改所在班级           |\n"); printf("\t\t|                        |\n"); printf("\t\t|        8.退出系统             |\n"); printf("\t\t╰————————————————————————————╯\n"); printf("\t\t 请您正确选择:"); while(scanf("%d",&in)!=1) { while((ch=getchar())!='\n') putchar(ch); printf(" 没有此选项,请重新选择!"); getch(); system("cls"); return ; } fflush(stdin); switch(in) { case 1 : mofname(p_student); break; case 2 : mofsex(p_student); break; case 3 : mofbirth(p_student); break; case 4 : mofaddr(p_student); break; case 5 : moftel(p_student); break; case 6 : mofdak(p_student); break; case 7 : mofschool(p_student); break; case 8 : return ; default: printf("没有此选项,请重新选择!"); break; } }while(1); } /*************************个人信息录入*************************/ void inputinfo(struct allstudentinfo *p_student) { int count; char ch; system("cls"); if((infofile=fopen(filename,"a+b"))==NULL) { printf("不能打开文件,请确认磁盘已满或c:\\学生个人信息登记.dat文件没 有损坏"); getch(); exit(1); } rewind(infofile); //定位文件头开始读取 for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++) continue; printf("\n\n 个人信息登记表\n"); printf("\n请正确填写以下信息(系统可以支持英文、汉字或拼音\n"); printf("---------------------------------------------------------\n\n"); printf("姓 名:"); while(count<STUDENTMAX&&gets(p_student[count].student.name)!=NULL //输 入姓名 &&p_student[count].student.name[0]!='\0') { printf("\n性 别:"); //输入性别 gets(p_student[count].student.sex); printf("\n旷课日期:"); //输入旷课日期 gets(p_student[count].student.kdays); printf("\n旷课科目:"); //输入旷课科目 gets(p_student[count].student.addr); printf("\n学生学号:"); //输入学号 gets(p_student[count].student.number); printf("\n旷课数目:"); //输入旷课数目 gets(p_student[count].student.dak); printf("\n所属班级:"); //输入所在班级 gets(p_student[count].student.school); fwrite(&p_student[count++].student,sizeof(struct studentinfo),1,infofile); //将信息写入文件 printf("是否录入下一个学生旷课信息(y/n)"); ch=getch(); if(ch=='y'||ch=='Y') { system("cls"); printf("\n请输入下一个学生的个人信息\n"); printf("\n姓 名:"); continue; } //继续输入下一个学生信息 else { printf("\n\n个人信息录入结束,返回!"); fclose(infofile); //关闭文件 getch(); //返回子菜单 system("cls"); return ; } } printf("输入有误,终止个人信息录入,返回!"); getch(); system("cls"); return ; //返回 } /***********************查询个人信息****************************/ void aboutinfo(struct allstudentinfo *p_student) { int i; int count; //学生计器 char ch; char *temp=NULL; //临存储要查询的学生姓名 system("cls"); if((infofile=fopen(filename,"rb"))==NULL) { printf("不能打开文件,请确认磁盘已满或文件是否存在"); getch(); exit(1); } rewind(infofile); //指向文件头 for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++) { continue; } fclose(infofile); //关闭文件 if(!count) { printf("找不到个人据,请确认已经成功录入或文件是否存在!"); getch(); system("cls"); return ; } temp=(char *)malloc(20*sizeof(char)); //分配内存 printf("请输入要查询的学生姓名:"); while(gets(temp)!=NULL&&temp[0]!='\0') { for(i=0;i<count;i++) { if(!strcmp(temp,p_student[i].student.name)) { system("cls"); printf("以下是你要查询%s的个人信息\n",p_student[i].student.name); printf("\n 个人信息查询表\n"); printf("-----------------------------------------------------------------\n"); printf("\n姓 名: %s\n",p_student[i].student.name); printf("\n性 别: %s\n",p_student[i].student.sex); printf("\n旷课日期: %s\n",p_student[i].student.kdays); printf("\n旷课科目: %s\n",p_student[i].student.addr); printf("\n学生学号: %s\n",p_student[i].student.number); printf("\n旷课数目: %s\n",p_student[i].student.dak); printf("\n所在班级: %s\n",p_student[i].student.school); printf("-----------------------------------------------------------------\n"); break; } } free(temp); //释放空间 printf("\n查询下一个学生的个人信息(y/n)"); ch=getch(); if(ch=='y'||ch=='Y') { system("cls"); temp=(char *)malloc(20*sizeof(char)); //重新分配内存 printf("请输入要查询的学生姓名:"); continue; } else { printf("\n查询结束,返回!"); getch(); system("cls"); return ; } } free(temp); //释放已经分配的内存空间 printf("\n输入有误,请按任意键返回子菜单!"); getch(); system("cls"); } /****************************查询所有信息*******************************/ void allabout(struct allstudentinfo *p_student) { int i; int count; system("cls"); if((infofile=fopen(filename,"rb"))==NULL) { printf("不能打开文件,请确认文件是否存在或是否损坏!"); getch(); exit(1); } rewind(infofile); //定位到文件头 for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++) { continue; } fclose(infofile); //读完后关闭文件 if(!count) { printf("不能读取据,请确定文件是否存在或已经成功录入据!"); getch(); system("cls"); return ; } //反回重新操作 printf("\n\t\t\t 学生个人信息查询表\n\n"); printf("\t 以下是本系统所查询到的所有学生个人信息,如果表中找不到据\n"); printf(" 请确认是否已经成功录入本系统!\n"); printf("----------------------------------------"); printf("----------------------------------------\n"); for(i=0;i<count;i++) { printf("您正在查看第[%d]个学生的个人信息\n",i+1); printf("\n姓 名: %s\n",p_student[i].student.name); printf("\n性 别: %s\n",p_student[i].student.sex); printf("\n旷课日期: %s\n",p_student[i].student.kdays); printf("\n旷课科目: %s\n",p_student[i].student.addr); printf("\n学生学号: %s\n",p_student[i].student.number); printf("\n旷课数目: %s\n",p_student[i].student.dak); printf("\n所在班级: %s\n",p_student[i].student.school); printf("------------------------------------"); printf("------------------------------------\n"); printf("请按任意键继续查看信息........!"); getch(); system("cls"); } printf("\n查询结束..."); printf("请按任意键返回!"); getch(); system("cls"); return ; } /****************************删除个人信息*******************************/ void delinfo(struct allstudentinfo *p_student) { int i; int count; char ch; char *temp=NULL; //初始化临组 system("cls"); //清屏 if((infofile=fopen(filename,"rb"))==NULL) { printf("不能打开文件,请确认磁盘已满或文件是否存在"); getch(); exit(1); } rewind(infofile); //指向文件头 for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++) { continue; } fclose(infofile); //关闭文件 if(!count) { printf("不能读取据,请确认已经正确录入或据是否存在"); getch(); return ; } temp=(char *)malloc(20*sizeof(char)); //分配内存 printf("请输入你要删除的学生姓名:"); while(gets(temp)!=NULL&&temp[0]!='\0') { for(i=0;i<count;i++) { if(!strcmp(temp,p_student[i].student.name)) { system("cls"); printf("\a\n\n\n\n\n\n\t\t 确定要删除%s的个人旷课信息吗? (y/n)",p_student[i].student.name); ch=getch(); if(ch=='n'||ch=='N') { free(temp); system("cls"); printf("\n\n\n\n\n\n\t\t 该操作已取消.请按任意键返回!"); getch(); system("cls"); return ; } for(;i<count;i++) { p_student[i].student=p_student[i+1].student; } count--; //删除一个学生信息 if((infofile=fopen(filename,"w+b"))==NULL) //重新打开文件更新 { free(temp); printf("不能打开文件,请确认磁盘已满或文件是否存在"); getch(); exit(1); } for(i=0;i<count;i++) { //更新文件 if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)!=1) break; } free(temp); //释放内存 system("cls"); printf("\n\n\n\n\n\n\t\t 已成功删除该学生的个人旷课信息.....\n"); printf("\n\t\t确定要删除下一个学生个人信息(y/n)"); ch=getch(); if(ch=='n'||ch=='N') { fclose(infofile); system("cls"); return ; } else { system("cls"); temp=(char *)malloc(20*sizeof(char)); //重新分配内存以删除下一个信息 printf("请输入你想要删除的学生姓名:"); break; } } } printf("找不到%s的个人信息.",temp); printf("请重新输入(y/n)"); ch=getch(); if(ch=='y'||ch=='Y') { free(temp); temp=(char *)malloc(sizeof(char)); //重新分配 system("cls"); printf("请输入你要删除的学生姓名:"); continue; } else { free(temp); system("cls"); return ; } } free(temp); //释放内存 printf("输入有误,请按任意键返回子菜单,重新选择"); getch(); system("cls"); } /**********************修改学生姓名***************************/ void mofname(struct allstudentinfo *p_student) { char ch; char *temp; char *newtemp; int count; int i; system("cls"); count=datfile(p_student); //处理文件 if(!count) { printf("读取据失败,请确认已成功录入或文件据是否损害!"); getch(); return ; } newtemp=(char *)malloc(20*sizeof(char)); //分配内存 temp= (char *)malloc(20*sizeof(char)); //分配内存 printf("请输入您要修改的学生姓名:"); while(gets(temp)!=NULL&&temp[0]!='\0') { for(i=0;i<count;i++) { if(strcmp(temp,p_student[i].student.name)) { continue; } else { printf("请您输入该学生的新姓名:"); gets(newtemp); system("cls"); printf("\a\n\n\n\n\t\t\t确定要把姓名为%s的学生修改为%s码? (y/n)",temp,newtemp); ch=getch(); if(ch=='y'||ch=='Y') { strcpy(p_student[i].student.name,newtemp); //修改姓名 infofile=fopen(filename,"w+b"); //重新写入文件 for(i=0;i<count;i++) { if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1) continue; else { fclose(infofile); printf("修改失败,返回重新操作....."); getch(); free(temp); free(newtemp); system("cls"); return ; } } fclose(infofile); system("cls"); printf("\n\n\n\n\t\t\t已成功把%s修改为%s返回!",temp,newtemp); getch(); free(temp); free(newtemp); system("cls"); return ; } } } printf("找不到%s的个人信息,返回重新操作!",temp); free(temp); free(newtemp); getch(); system("cls"); return ; } printf("\n\n\n\n\t\t\t输入有误,请返回重新操作!"); getch(); free(temp); free(newtemp); system("cls"); return ; } /************************修改个人性别*********************/ void mofsex(struct allstudentinfo *p_student) { char *tempname; //要修改的学生的名字 char *tempsex; //要修改的学生的性别 char ch; int count; int i; system("cls"); count=datfile(p_student); //处理文件 if(!count) { printf("读取据失败,请确认已成功录入据或文件是否损坏!"); getch(); return ; } tempname=(char *)malloc(10*sizeof(char)); //分配内存 tempsex=(char *)malloc(10*sizeof(char)); //分配内存 printf("请输入要修改的学生姓名:"); while(gets(tempname)!=NULL&&tempname[0]!='\0') { for(i=0;i<count;i++) { if(strcmp(tempname,p_student[i].student.name)) continue; else { printf("请输入该学生的新性别:"); gets(tempsex); system("cls"); printf("\a\n\n\n\n\t\t\t确定要修改该学生的性别吗?(y/n)"); ch=getch(); if(ch=='y'||ch=='Y') { strcpy(p_student[i].student.sex,tempsex); infofile=fopen(filename,"w+b"); for(i=0;i<count;i++) { if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1) continue; else { fclose(infofile); system("cls"); printf("\n\n\n\n\t\t\t修改失败,请返回....."); getch(); free(tempname); free(tempsex); system("cls"); return ; } } fclose(infofile); system("cls"); printf("\n\n\n\n\t\t\t已成功修改%s的性别,返回!",tempname); getch(); free(tempname); free(tempsex); system("cls"); return ; } printf("该操作已衩取消,返回....."); free(tempname); free(tempsex); getch(); system("cls"); return ; } } printf("找不到%s的个人信息,返回......",tempname); free(tempname); free(tempsex); getch(); system("cls"); return ; } printf("输入有误,请返回重新输入!"); free(tempname); free(tempsex); getch(); system("cls"); return ;} /**************************修改旷课日期***************************/ void mofbirth(struct allstudentinfo *p_student) { char *tempname; char *tempbirth; char ch; int i,count; system("cls"); count=datfile(p_student); //处理文件 if(!count) { printf("读取据失败,请确认已成功录入或据是否损坏!"); getch(); return ; } tempname=(char *)malloc(20*sizeof(char)); tempbirth=(char *)malloc(20*sizeof(char)); //分配内存 printf("请输入要修改的学生姓名:"); while(gets(tempname)!=NULL&&tempname[0]!='\0') { for(i=0;i<count;i++) { if(strcmp(tempname,p_student[i].student.name)) continue; else { printf("请重新输入该学生的旷课日期:"); gets(tempbirth); system("cls"); printf("\a\n\n\n\n\t\t\t确定要修改%s的旷课日期吗?(y/n)",tempname); ch=getch(); if(ch=='y'||ch=='Y') { strcpy(p_student[i].student.kdays,tempbirth); infofile=fopen(filename,"w+b"); for(i=0;i<count;i++) { if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1) continue; else { fclose(infofile); free(tempname); free(tempbirth); system("cls"); printf("\n\n\n\n\t\t\t修改失败,返回......"); getch(); system("cls"); return ; } } fclose(infofile); system("cls"); printf("\n\n\n\n\t\t\t成功修改%s的旷课日期,返回!,",tempname); free(tempname); free(tempbirth); getch(); system("cls"); return ; } printf("\n\n\n\n\t\t\t该操作已被取消,返回!"); free(tempname); free(tempbirth); getch(); system("cls"); return ; } } printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回!",tempname); free(tempname); free(tempbirth); getch(); system("cls"); return ; } printf("输入有误,请返回重新选择!"); free(tempname); free(tempbirth); getch(); system("cls"); return ; } /***********************修改旷课科目*********************/ void mofaddr(struct allstudentinfo *p_student) { char *tempname; char *tempaddr; char ch; int i,count; system("cls"); count=datfile(p_student); //处理文件 if(!count) { printf("读取据失败,请确认已成功录入或据是否损坏!"); getch(); return ; } tempname=(char *)malloc(20*sizeof(char)); tempaddr=(char *)malloc(20*sizeof(char)); //分配内存 printf("请输入要修改的学生姓名:"); while(gets(tempname)!=NULL&&tempname[0]!='\0') { for(i=0;i<count;i++) { if(strcmp(tempname,p_student[i].student.name)) continue; else { printf("请重新输入该学生的旷课科目:"); gets(tempaddr); system("cls"); printf("\a\n\n\n\n\t\t\t确定要修改%s的旷课科目吗?(y/n)",tempname); ch=getch(); if(ch=='y'||ch=='Y') { strcpy(p_student[i].student.addr,tempaddr); infofile=fopen(filename,"w+b"); //重新写入据库 for(i=0;i<count;i++) { if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1) continue; else { fclose(infofile); free(tempname); free(tempaddr); system("cls"); printf("\n\n\n\n\t\t\t修改失败,返回......!"); getch(); system("cls"); return ; } } fclose(infofile); system("cls"); printf("\n\n\n\n\t\t\t成功修改%s的旷课科目,返回......!,",tempname); free(tempname); free(tempaddr); getch(); system("cls"); return ; } printf("\n\n\n\n\t\t\t该操作已被取消,返回.......!"); free(tempname); free(tempaddr); getch(); system("cls"); return ; } } printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname); free(tempname); free(tempaddr); getch(); system("cls"); return ; } printf("输入有误,请返回重新选择.......!"); free(tempname); free(tempaddr); getch(); system("cls"); return ; } /*****************************修改学生学号********************************/ void moftel(struct allstudentinfo *p_student) { char *tempname; char *temptel; char ch; int i,count; system("cls"); count=datfile(p_student); //处理文件 if(!count) { printf("读取据失败,请确认已成功录入或据是否损坏!"); getch(); system("cls"); return ; } tempname=(char *)malloc(20*sizeof(char)); temptel=(char *)malloc(20*sizeof(char)); //分配内存 printf("请输入要修改的学生姓名:"); while(gets(tempname)!=NULL&&tempname[0]!='\0') { for(i=0;i<count;i++) { if(strcmp(tempname,p_student[i].student.name)) continue; else { printf("请重新输入该学生的学生学号:"); gets(temptel); system("cls"); printf("\a\n\n\n\n\t\t\t确定要修改%s的学生学号吗?(y/n)",tempname); ch=getch(); if(ch=='y'||ch=='Y') { strcpy(p_student[i].student.number,temptel); infofile=fopen(filename,"w+b"); for(i=0;i<count;i++) { if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1) continue; else { fclose(infofile); free(tempname); free(temptel); system("cls"); printf("\n\n\n\n\t\t\t修改失败,返回.......!"); getch(); system("cls"); return ; } } fclose(infofile); system("cls"); printf("\n\n\n\n\t\t\t成功修改%s的学生学号,返回.......!,",tempname); free(tempname); free(temptel); getch(); system("cls"); return ; } printf("\n\n\n\n\t\t\t该操作已被取消,返回.......!"); free(tempname); free(temptel); getch(); system("cls"); return ; } } printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname); free(tempname); free(temptel); getch(); system("cls"); return ; } printf("输入有误,请返回重新选择.......!"); free(tempname); free(temptel); getch(); system("cls"); return ; } /**************************修改旷课数目*************************/ void mofdak(struct allstudentinfo *p_student) { char *tempname; char *tempdak; char ch; int i,count; system("cls"); count=datfile(p_student); //处理文件 if(!count) { printf("读取据失败,请确认已成功录入或据是否损坏!"); getch(); system("cls"); return ; } tempname=(char *)malloc(20*sizeof(char)); tempdak =(char *)malloc(20*sizeof(char)); //分配内存 printf("请输入要修改的学生姓名:"); while(gets(tempname)!=NULL&&tempname[0]!='\0') { for(i=0;i<count;i++) { if(strcmp(tempname,p_student[i].student.name)) continue; else { printf("请重新输入该学生的旷课数目:"); gets(tempdak); system("cls"); printf("\a\n\n\n\n\t\t\t确定要修改%s的旷课数目吗?(y/n)",tempname); ch=getch(); if(ch=='y'||ch=='Y') { strcpy(p_student[i].student.dak,tempdak); infofile=fopen(filename,"w+b"); for(i=0;i<count;i++) { if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1) continue; else { fclose(infofile); free(tempname); free(tempdak); system("cls"); printf("\n\n\n\n\t\t\t修改失败,返回.......!"); getch(); system("cls"); return ; } } fclose(infofile); system("cls"); printf("\n\n\n\n\t\t\t成功修改%s的旷课数目,返回.......!",tempname); free(tempname); free(tempdak); getch(); system("cls"); return ; } printf("\n\n\n\n\t\t\t该操作已取消,返回.......!"); free(tempname); free(tempdak); getch(); system("cls"); return ; } } printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname); free(tempname); free(tempdak); getch(); system("cls"); return ; } printf("输入有误,请返回重新选择.......!"); free(tempname); free(tempdak); getch(); system("cls"); return ; } /*************************修改所在班级******************************/ void mofschool(struct allstudentinfo *p_student) { char *tempname; char *tempschool; char ch; int i,count; system("cls"); count=datfile(p_student); //文件处理 if(!count) { printf("读取据失败,请确认已成功录入或据是否损坏!"); getch(); system("cls"); return ; } tempname=(char *)malloc(20*sizeof(char)); tempschool=(char *)malloc(20*sizeof(char)); //分配内存 printf("请输入要修改的学生姓名:"); while(gets(tempname)!=NULL&&tempname[0]!='\0') { for(i=0;i<count;i++) { if(strcmp(tempname,p_student[i].student.name)) continue; else { printf("请重新输入该学生的所在班级:"); gets(tempschool); system("cls"); printf("\a\n\n\n\n\t\t\t确定要修改%s的所在班级吗?(y/n)",tempname); ch=getch(); if(ch=='y'||ch=='Y') { strcpy(p_student[i].student.school,tempschool); infofile=fopen(filename,"w+b"); for(i=0;i<count;i++) { if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1) continue; else { fclose(infofile); free(tempname); free(tempschool); system("cls"); printf("\n\n\n\n\t\t\t修改失败,返回.......!"); getch(); system("cls"); return ; } } fclose(infofile); system("cls"); printf("\n\n\n\n\t\t\t成功修改%s的所在班级,返回.......!",tempname); free(tempname); free(tempschool); getch(); system("cls"); return ; } printf("\n\n\n\n\t\t\t该操作已取消,返回.......!"); free(tempname); free(tempschool); getch(); system("cls"); return ; } } printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname); free(tempname); free(tempschool); getch(); system("cls"); return ; } printf("输入有误,请返回重新选择.......!"); free(tempname); free(tempschool); getch(); system("cls"); return ; } /**************************修改个人信息的主要操作文件**************************/ int datfile(struct allstudentinfo *p_student) { int count; system("cls"); if((infofile=fopen(filename,"rb"))==NULL) { printf("不能找开文件,请确认磁盘已满或文件是否存在!"); getch(); exit(1); } rewind(infofile); //指向文件头读取据 for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++) { continue; } fclose(infofile); return count; //返回读到的结构块 } /*****************************系统帮助信息*******************************/ void systemhelp() { system("cls"); printf("\n\n\n\t\t\t\t系统帮助\n"); printf("\t****************------------------------------******************\n"); printf("\t 本系统支持汉字、英语、拼音或其它助记方式录入,为了能正常使用 \n"); printf("\t本系统,如要使用修改和删除功能请谨慎使用,或先将资料做好备份 以免\n"); printf("\t因系统出错造成据丢失! 请按任意键退出!\n"); printf("\t****************------------------------------******************\n"); getch(); system("cls"); return ; } /***********退出*********************************/ void logout() { time_t start,end; //间函 system("cls"); printf("\n\n\n\n\n\n\n\n\t\t\t"); printf("谢 谢 使 用 本 系 统 !"); start=time(NULL); end=time(NULL); while(end-start<2) //延2秒执行以下程序 end=time(NULL); exit(0); }
最新发布
09-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值