发布时间 : 星期四 文章(桂电)学生成绩管理系统(论文加源代码) 数据结构与算法课设(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