(桂电)学生成绩管理系统(论文加源代码) 数据结构与算法课设(C语言) 联系客服

发布时间 : 星期四 文章(桂电)学生成绩管理系统(论文加源代码) 数据结构与算法课设(C语言)更新完毕开始阅读c3cf3d1743323968011c9265

fflush(stdin);

scanf(\用于接收用户选择的操作*/

/*根据用户的选择完成用户选择的操作*/ if (con_choice == 1) /*进行修改操作*/ {

amend_stu(stu, count, flag_find); }

else if (con_choice == 2) /*进行删除操作,一旦删除则无法再进行修改*/

{

delete_stu(stu, count, flag_find); count--;

printf(\删除成功!\\n\ break; }

else if (con_choice == 3) /*选择4则break循环退出*/ {

break; }

else /*用户输入错误信息返回用户选择有误*/ {

printf(\您的选择有误!\\n\ }

stat_choice = 0; //每次循环结束stat_choice归0 }

}//修改删除操作结束 printf(\ break; case (7):

printf(\将学生成绩信息存盘:\\n\\n\\n\ write_text(stu, count); /*循环写入数据*/ printf(\ break; case (8):

printf(\从文件载入学生信息:\\n\\n\\n\ count = add_text(stu, count); /*读入文件信息*/ break; case (6):

printf(\学生成绩排名信息:\\n\

chenji_stu(stu, count, stat_choice);/*读入文件信息*/ printf(\ break; case (0):

printf(\确定您真的要退出吗?(y/n)\提醒用户是否退出并接收选择*/

fflush(stdin);

sign_main = getchar();

if (sign_main == 'y' || sign_main == 'Y') /*若用户确定退出则返回退出信息*/

{

printf(\谢谢使用本软件!\\n\\n\\n\\n\\n\ exit(0); //退出主程序 }

20

printf(\ break;

default: //提示用户输入错误

printf(\您的输入有误,请重新输入!\\n\\n\\t\\t\\t\ }

system(\令屏幕暂停待输入任意键后恢复运行 system(\清屏

system(\设置输出屏幕颜色 } }

/*************************************************************************** 功能:从键盘输入正确学号依次存放入stu[n].num中

参数:参数struct Student stud[ ]代表结构体数组首地址, n代表已有成员个数,i代表本次录入的第i个学号。 返回值:空 */

void input_num(struct Student stud[], int n, int i) {

int j; /*j用于对输入字符串的遍历*/

int k; /*k用于对是否有重复学号的判断*/

int num_flag=0; //其值作为判断录入学号是否正确的标志

while (num_flag != 2) /*如果num_flag=2则输入学号无误,终止循环*/ {

j = 0; /*每次循环后令j和num_flag的值为0*/ num_flag = 0;

printf(\学号:\\t\\t\\t\首次录入学号*/ fflush(stdin);

scanf(\

while (stud[n+i].num[j] != '\\0') /*遍历stud[n+i].num*/ {

if (stud[n+i].num[j] < 48 || stud[n+i].num[j] > 57) /*判断输入是否错误并重新输入*/ {

j=0;

printf(\请您用数字输入!请重新输入!\\n\ printf(\学号:\\t\\t\\t\ fflush(stdin);

scanf(\ }//循环结束

else /*该位输入正确则令j++*/ {

j++; }

}//循环结束

num_flag++; //判断标志加1

if (n+i > 0) /*当有2个或以上的学号*/ {

for (k = 0; k < n+i; k++) /*令输入学号与以往录入学号比较*/ {

if (strcmp(stud[n+i].num, stud[k].num) == 0) /*如果存在重号则提示重新输入*/

21

{

num_flag--; //令num_flag--

printf(\已存在这个学号!请重新输入:\\n\ } }

num_flag++; } else {

num_flag++; /*只有一个学号存在num_flag++*/ } } }

/*************************************************************************** 功能:从键盘输入正确姓名依次存放入stu[n].num中

参数:参数struct Student stud[ ]代表结构体数组首地址, n代表已有成员个数,i代表本次录入的第i个学号。 返回值:空 */

void input_name(struct Student stud[], int n, int i) {

int j = 0; //用于遍历输入姓名

printf(\姓名:\\t\\t\\t\用户首次输入

fflush(stdin);

scanf(\

while(stud[n+i].name[j] != '\\0') //遍历姓名对应的字符串 {

if ( stud[n+i].name[j] < 65 || (stud[n+i].name[j] > 90

&& stud[n+i].name[j] < 97) || stud[n+i].name[j] > 122) /*如果输入格式不正确则重新输入*/ {

j=0;

printf(\请您用字母输入!请重新输入!\\n\ printf(\姓名:\\t\\t\\t\ fflush(stdin);

scanf(\ }

else /*正确则令i++*/ {

j++; } } }

/*************************************************************************** 功能:从键盘输入正确成绩依次存放入stu[n].score中,同时计算出平均成绩 和总成绩存放入stu[n].score中。

参数:参数struct Student stud[ ]代表结构体数组首地址,n代表已有成员 个数,i代表本次录入的第i个学号。 返回值:空 */

void input_score(struct Student stud[], int n, int i)

22

{

int j; //用于控制循环依次录入三门成绩 int h; //接收scanf()函数的返回值

int flag_score; //值作为输入有误就重复输入的循环条件 char x; //用于判断用户中是否包含不合法输入

printf(\请输入学生成绩(1:数据库;2:算法;3:C语言):\\n\ for (j = 0; j < 3; j++) /*循环输入三门成绩*/ {

do {

printf(\第%d门:\\t\\t\\t\ flag_score = 0; h=0;

fflush(stdin);

h = scanf(\输入成绩并返回正确接收的次数*/

if ((stud[n+i].score[j] < 0 || stud[n+i].score[j] > 100)

|| (h != 2) || (x != '\\n')) /*用户输入不合法则提示重新输入并产生循环条件*/

{

flag_score = -1;

printf(\输入有误,请重新输入成绩(0-100):\\n\ }

}while(flag_score < 0); /*表达式成立则输入有误循环重新输入*/ }

stud[n+i].score[4] = 0; /*计算总成绩并录入*/ for(j = 0; j < 3; j++) {

stud[n+i].score[4] = stud[n+i].score[4] + stud[n+i].score[j]; }

stud[n+i].score[3] = stud[n+i].score[4]/3; /*计算平均成绩并录入*/ }

/*************************************************************************** 功能:格式化输出一名学员信息

参数:参数struct Student stud[ ]代表结构体数组首地址, n代表已有成员个数,i代表本次输出其中的第i个成员。 返回值:空 */

void output_stu(struct Student stud[], int n, int i) {

int j; //用于控制循环依次输出三门成绩

printf(\┃ %-10s┃%-15s\ for(j = 0; j < 3; j++) /*依次输出三门成绩*/ {

printf(\┃%.1f \ }

printf(\┃%.1f\输出总成绩 printf(\┃%.1f\输出平均成绩 printf(\┃\\n\

printf(\┣━━━━━━╋━━━━━━━━╋━━━╋━━━╋━━━╋━━━╋━━

23